دليل قاعدة بيانات FiveM: إتقان oxmysql و MySQL
اتقن برمجة قاعدة بيانات FiveM باستخدام oxmysql. الاستعلامات، البيانات المحضرة، الأنماط غير المتزامنة ونصائح أداء MySQL التي يجب أن يعرفها كل مطور FiveM.
Agency Scripts
المؤسس والمطور الرئيسي في Agency Scripts
لماذا تهم قواعد البيانات في FiveM
كل خادم FiveM جاد يحتاج إلى تخزين بيانات مستمر. مخزونات اللاعبين، حسابات البنوك، ملكية المركبات، جهات اتصال الهاتف، وسجلات الوظائف كلها تحتاج للبقاء بعد إعادة تشغيل الخادم. MySQL هو نظام قاعدة البيانات القياسي المستخدم عبر نظام FiveM، مع MariaDB كفرع شائع يقدم أداءً محسناً. فهم كيفية إعداد، استعلام، وتحسين قاعدة البيانات ضروري لبناء خوادم لعب أدوار موثوقة يمكنها التعامل مع مئات اللاعبين المتزامنين دون فقدان بيانات.
إعداد oxmysql
مورد oxmysql هو المعيار الحديث للاتصال بـ MySQL في FiveM، يحل محل مكتبات mysql-async وghmattimysql القديمة. لإعداده، قم بتنزيل الإصدار الأخير، وضعه في مجلد الموارد الخاص بك، وقم بتكوين سلسلة الاتصال في server.cfg مع set mysql_connection_string. سلسلة الاتصال تتبع الصيغة mysql://user:password@host/database ويدعم معلمات إضافية لتجميع الاتصالات، وانتهاء المهلات، وSSL. تأكد من بدء oxmysql قبل أي مورد يعتمد عليه بوضعه مبكرًا في ترتيب ensure الخاص بك.
كتابة الاستعلامات
يوفر oxmysql عدة طرق استعلام: MySQL.query لعبارات SELECT التي تعيد الصفوف، MySQL.update لعبارات UPDATE و DELETE التي تعيد عدد الصفوف المتأثرة، MySQL.insert لعبارات INSERT التي تعيد آخر معرف إدخال، و MySQL.scalar للاستعلامات التي تُرجع قيمة واحدة. استخدم دائمًا استعلامات معلماتية مع ? عنصر نائب لمنع هجمات حقن SQL. مرر المعلمات كجدول في الوسيطة الثانية بدلاً من دمج القيم مباشرة في سلاسل الاستعلام.
أنماط البرمجة غير المتزامنة والوعود
جميع عمليات oxmysql غير متزامنة لمنع حظر خيط الخادم أثناء الاتصال بقاعدة البيانات. يمكنك استخدام بناء جملة نمط رد النداء حيث تمرر دالة كآخر وسيط، أو استخدام بناء جملة قائم على الوعد مع MySQL.query.await داخل Citizen.CreateThread. صياغة await تقرأ بشكل أنظف وتتجنب التعشيش في ردود النداء، لكن تذكر أنه يمكن استخدامها فقط داخل coroutines. لتحميل بيانات بدء تشغيل الخادم، استخدم MySQL.ready function لضمان تأسيس اتصال قاعدة البيانات قبل تشغيل الاستعلامات الأولية.
أفضل ممارسات تصميم المخطط
تصميم جداول قاعدة البيانات الخاصة بك بفهارس مناسبة على الأعمدة التي تستعلم عنها كثيراً، مثل معرفات اللاعبين. استخدم أنواع البيانات المناسبة لكل عمود لتقليل التخزين وتحسين سرعة الاستعلام. خزّن بيانات JSON في أعمدة TEXT عند الحاجة إلى مخططات مرنة، لكن تجنب الاستعلام داخل هياكل JSON بشكل متكرر لأنه يتجاوز تحسين الفهارس. أنشئ علاقات مفاتيح أجنبية بين الجداول ذات الصلة للحفاظ على سلامة البيانات، وفكر في استخدام المعاملات عند الحاجة إلى نجاح أو فشل متعدد الإدخالات أو التحديثات المرتبطة معاً.
التحسين والصيانة
راقب أداء قاعدة بياناتك بفحص سجلات الاستعلامات البطيئة وتحليل خطط التنفيذ باستخدام EXPLAIN. خزّن البيانات التي يتم الوصول إليها بشكل متكرر في ذاكرة الخادم باستخدام جداول Lua لتقليل رحلات قاعدة البيانات. نفذ تجميع الاتصالات من خلال تكوين oxmysql للتعامل مع الاستعلامات المتزامنة بكفاءة. جدولة مهام صيانة قاعدة البيانات المنتظمة مثل تحسين الجداول وتنظيف السجلات اليتيمة من اللاعبين المحذوفين. قم بعمل نسخ احتياطية يومية لقاعدة البيانات باستخدام mysqldump أو حلول النسخ الاحتياطي الآلية لمنع فقدان البيانات الكارثي بسبب أعطال الأجهزة أو تلف الجداول.