Optimasi Database Sharding pada Sistem Mahjong Ways 2 dan Baccarat Live
Optimasi database sharding pada sistem Mahjong Ways 2 dan Baccarat Live menjadi salah satu fondasi penting ketika sebuah platform harus melayani lonjakan trafik, transaksi cepat, serta kebutuhan analitik real-time. Dua jenis permainan ini punya pola akses data yang berbeda: Mahjong Ways 2 cenderung padat event per sesi, sedangkan Baccarat Live menuntut konsistensi, sinkronisasi meja, dan latensi rendah. Karena itu, strategi sharding tidak cukup ābagi tabel lalu selesaiā, melainkan perlu skema yang menyatu dengan karakter beban kerja.
Memetakan beban kerja: sesi, event, dan meja live
Langkah awal optimasi adalah memisahkan domain data. Untuk Mahjong Ways 2, data yang paling sering disentuh biasanya adalah session state, log putaran, serta pembaruan saldo. Untuk Baccarat Live, fokusnya adalah data meja (table), ronde (round), dan rekam transaksi taruhan per pemain yang harus akurat hingga level audit. Dengan pemetaan ini, sharding bisa dirancang mengikuti āalur permainanā alih-alih mengikuti struktur database lama yang monolitik.
Skema ātiga sumbuā yang tidak biasa untuk sharding
Alih-alih hanya memakai sharding berdasarkan user_id, gunakan skema tiga sumbu: Identity (pemain), Context (jenis permainan atau meja), dan Time-slice (irisan waktu). Contohnya, Mahjong Ways 2 dapat di-shard dengan kombinasi hash(user_id) + game_code + week_bucket untuk log event besar. Sementara Baccarat Live lebih cocok memakai table_id sebagai poros utama agar pembacaan status meja dan ronde stabil, lalu transaksi taruhan dipartisi berdasarkan round_id dengan time-slice agar arsip audit tetap ringan.
Memilih shard key: menghindari hotspot dan join mahal
Shard key yang keliru menimbulkan hotspot pada jam ramai. Pada Mahjong Ways 2, shard key murni time-based bisa membuat satu shard ākepanasanā saat event masuk bertubi-tubi. Gunakan hash di depan time-slice untuk menyebar tulis, namun tetap menyimpan kemampuan pencarian historis. Pada Baccarat Live, jangan menaruh seluruh transaksi berdasarkan user_id saja, karena query yang sering terjadi adalah āstatus ronde dan semua bet di meja iniā. Memusatkan data per meja membuat join lebih murah dan latensi pembaruan lebih konsisten.
Arsitektur baca-tulis: routing cerdas dan cache selektif
Optimasi sharding tidak lengkap tanpa routing layer. Terapkan shard map di service gateway untuk menentukan shard tujuan berdasarkan key yang telah distandardisasi. Untuk Mahjong Ways 2, cache (misalnya Redis) efektif untuk session state dan metadata fitur, sedangkan event log sebaiknya langsung masuk ke shard log. Untuk Baccarat Live, cache perlu lebih selektif: status meja boleh dicache singkat (short TTL) tetapi transaksi taruhan tetap harus menulis ke storage persisten terlebih dulu untuk menjaga integritas.
Transaksi dan konsistensi: ledger terpisah untuk saldo
Saldo pemain adalah titik sensitif untuk kedua sistem. Praktik yang kuat adalah memisahkan ledger service dengan database sendiri, memakai pola append-only agar jejak transaksi tidak hilang. Mahjong Ways 2 akan sering memicu perubahan saldo per putaran, sedangkan Baccarat Live memicu perubahan saat bet, settle, dan refund. Dengan ledger terpisah, shard game tidak memikul beban konsistensi yang terlalu berat, dan audit menjadi lebih sederhana.
Rebalancing tanpa drama: migrasi bertahap dan dual-write
Seiring pertumbuhan, shard perlu dipecah ulang. Gunakan pendekatan bertahap: buat shard baru, lakukan dual-write untuk data baru, lalu migrasikan data lama memakai job terjadwal. Untuk Mahjong Ways 2, migrasi log bisa dilakukan per time-slice agar aman. Untuk Baccarat Live, migrasi harus memperhatikan ronde aktif; data ronde yang sedang berjalan sebaiknya tetap di shard lama sampai selesai, baru dipindahkan setelah status final tersimpan.
Monitoring yang relevan: metrik per shard dan per fitur
Supaya optimasi terukur, pantau metrik per shard: QPS, p95/p99 latency, ukuran index, dan tingkat lock/wait. Tambahkan metrik berbasis fitur: jumlah event per sesi untuk Mahjong Ways 2, serta waktu settle ronde dan tingkat retry transaksi untuk Baccarat Live. Dengan pola ini, tim bisa melihat apakah masalah ada di desain shard key, di routing, atau di query yang perlu index tambahan.
Home
Bookmark
Bagikan
About
Chat