FiveM Veritabanı Rehberi: oxmysql ve MySQL Uzmanlığı
oxmysql ile FiveM veritabanı script'lerinde uzmanlaşın: Her FiveM geliştiricisinin bilmesi gereken sorgular, prepared statement'lar, asenkron yapılar ve MySQL performans ipuçları.
Agency Scripts
Agency Scripts Kurucusu ve Baş Geliştiricisi
FiveM'de Veritabanları Neden Önemlidir?
Her ciddi FiveM sunucusunun kalıcı veri depolamaya ihtiyacı vardır. Oyuncu envanterleri, banka hesapları, araç sahipliği, telefon rehberi ve meslek kayıtlarının tümü sunucu yeniden başlatmalarından sonra da korunmalıdır. MySQL, FiveM ekosisteminde kullanılan standart veritabanı sistemidir; MariaDB ise daha gelişmiş performans sunan popüler bir çatallanmadır. Veritabanınızı nasıl kuracağınızı, sorgulayacağınızı ve optimize edeceğinizi anlamak, veri kaybı yaşamadan yüzlerce eşzamanlı oyuncuyu kaldırabilen güvenilir roleplay sunucuları oluşturmak için vazgeçilmezdir.
oxmysql Kurulumu
oxmysql resource'u, eski mysql-async ve ghmattimysql kütüphanelerinin yerini alan, FiveM'de MySQL bağlantısı için modern standarttır. Kurulumunu yapmak için en son sürümü indirin, resources klasörünüze yerleştirin ve bağlantı dizesini şurada yapılandırın: server.cfg ile set mysql_connection_string. Bağlantı dizesi şu biçimi izler: mysql://user:password@host/database ve bağlantı havuzu oluşturma, zaman aşımları ve SSL için ek parametreleri destekler. oxmysql'i ensure sıranızda başa yerleştirerek ona bağımlı olan tüm resource'lardan önce başladığından emin olun.
Sorgu Yazma
oxmysql çeşitli sorgu yöntemleri sunar: MySQL.query satır döndüren SELECT ifadeleri için, MySQL.update etkilenen satır sayılarını döndüren UPDATE ve DELETE ifadeleri için, MySQL.insert son eklenen ID'yi döndüren INSERT ifadeleri için ve MySQL.scalar tek bir değer döndüren sorgular için. Her zaman şununla parametreli sorgular kullanın: ? SQL injection saldırılarını önlemek için yer tutucu. Değerleri doğrudan sorgu dizelerine eklemek yerine parametreleri ikinci bağımsız değişkende bir tablo olarak iletin.
Async Desenleri ve Promise'ler
Veritabanı iletişimi sırasında sunucu iş parçacığının engellenmesini önlemek için tüm oxmysql işlemleri asenkrondur. Son argüman olarak bir fonksiyon ilettiğiniz callback tarzı sözdizimini kullanabilir veya şununla promise tabanlı sözdizimini tercih edebilirsiniz: MySQL.query.await içinde bir Citizen.CreateThread. await sözdizimi daha temiz okunur ve geri çağırma (callback) iç içe geçmesini önler, ancak yalnızca coroutine'ler içinde kullanılabileceğini unutmayın. Sunucu başlatma veri yüklemesi için şunu kullanın: MySQL.ready İlk sorguları çalıştırmadan önce veritabanı bağlantısının kurulduğundan emin olmak için function.
Şema Tasarımında En İyi Uygulamalar
Veritabanı tablolarınızı, oyuncu tanımlayıcıları gibi sık sorguladığınız sütunlarda uygun indekslerle tasarlayın. Depolamayı en aza indirmek ve sorgu hızını artırmak için her sütunda uygun veri türlerini kullanın. Esnek şemalara ihtiyaç duyduğunuzda JSON verilerini TEXT sütunlarında saklayın, ancak indeks optimizasyonunu atladığı için JSON yapıları içinde sıkça sorgulama yapmaktan kaçının. Veri bütünlüğünü korumak için ilgili tablolar arasında foreign key ilişkileri oluşturun ve birden fazla ilişkili ekleme veya güncellemenin birlikte başarılı veya başarısız olması gerektiğinde transaction kullanmayı değerlendirin.
Optimizasyon ve Bakım
Yavaş sorgu loglarını kontrol ederek ve yürütme planlarını EXPLAIN ile analiz ederek veritabanı performansınızı izleyin. Veritabanı sorgu trafiğini azaltmak için sık erişilen verileri Lua tabloları kullanarak sunucu belleğinde önbelleğe alın. Eşzamanlı sorguları verimli şekilde yönetmek için oxmysql yapılandırması üzerinden connection pooling uygulayın. Tabloları optimize etme ve silinen oyunculardan kalan sahipsiz kayıtları temizleme gibi düzenli veritabanı bakım görevleri planlayın. Donanım arızalarından veya bozuk tablolardan kaynaklanabilecek yıkıcı veri kayıplarını önlemek için mysqldump veya otomatik yedekleme çözümleri kullanarak veritabanınızı günlük olarak yedekleyin.