DBMS mana yang cukup cepat untuk game online (beberapa ribu pemain)? [Tutup]

8

Saat ini saya sedang membuat game MMORPG, yang bisa memiliki beberapa ribu pemain online pada saat yang sama (mungkin tidak; hanya angan-angan). Pertama kami ingin menggunakan MySQL, tetapi saya telah mendengarnya tidak cukup cepat untuk skala ini.

DBMS mana yang cukup cepat? Seberapa mirip SQL Server itu (seperti yang saya pelajari di SQL Server di sekolah)?

Simon Verbeke
sumber
Sama seperti titik referensi, World Of Warcraft berbasis Oracle.
Philᵀᴹ
Apa pun DBMS yang Anda pilih, jangan lupa untuk mempertimbangkan lisensi. Mungkin versi gratis Anda baik-baik saja untuk muatan kecil, tetapi jika dan ketika Anda harus meningkatkan atau memperkecil, Anda mungkin mengalami kasus guncangan stiker yang parah.
datagod

Jawaban:

24

Ini adalah pertanyaan yang sangat sulit untuk dijawab. Anda dapat mengambil platform basis data tercepat di dunia, merancang skema yang mengerikan, menulis aplikasi jelek di sekitarnya, dan kemudian tergoda untuk menyalahkan platform basis data. Pada saat yang sama, Anda bisa mengambil SQL Server Express gratis dan, dengan desain yang tepat, logika aplikasi, dan pendekatan pada skalabilitas yang masuk akal (mis. Menskalakan pembacaan dengan caching data, dll), Anda dapat menulis aplikasi yang menangani 1000-an dari pengguna tidak ada masalah.

Apakah saya percaya SQL Server dapat menangani ribuan pengguna? Benar. Apakah saya percaya Oracle dan DB2 dapat melakukannya juga? Pasti. MySQL? Tidak yakin, tidak cukup pengalaman di sana. Mengakses? Mungkin bukan pilihan yang bijaksana sama sekali. Jika Anda terbiasa dengan SQL Server, maka saya sarankan itu adalah rute yang Anda pertimbangkan, perlu diingat bahwa pilihan RDBMS Anda tidak akan dengan sendirinya menentukan keberhasilan atau kegagalan.

Aaron Bertrand
sumber
Yah, aku hanya butuh panduan. Bukannya game indie kecil akan mencapai 1000-an pengguna secara bersamaan segera. Terima kasih!
Simon Verbeke
3
Meskipun Anda mungkin tidak berencana untuk memukul 1000 pengguna sekaligus, jika Anda tidak merencanakan dengan benar dari awal, Anda akan berakhir dalam situasi di mana Anda harus mengambil pemadaman besar atau setidaknya memiliki beberapa penurunan besar untuk sementara, sementara Anda bekerja memperbaiki masalah.
mrdenny
Benar, dan berikut ini adalah artikel tepat waktu yang menjelaskan bagaimana facebook sekarang merasakan semangat untuk keputusan desain awal mereka berdasarkan argumen "kami tidak akan pernah menjadi besar": gigaom.com/cloud/… ... perhatikan saja bahwa artikel ini juga direferensikan dalam jawaban Rolando
Aaron Bertrand
@ Harun: Barang bagus. Beri +1 untuk Anda jawab karena infrastruktur perangkat lunak di sekitar MMORPG harus berupa basis data agnostgik dan tetap berperilaku !!!
RolandoMySQLDBA
12

Biarkan saya begini, ingat GameSpy Arcade dari awal / pertengahan 2000-an? Itu menjalankan ribuan game, dan semuanya berjalan pada SQL Server dan mendukung puluhan ribu pengguna sekaligus (ya kami punya beberapa SQL Server di sana melakukan berbagai hal). Ini semua tentang desain database dan bagaimana Anda menggunakan sistem. Lakukan dengan benar dan proyek Anda akan berhasil, lakukan salah dan proyek Anda akan gagal.

mrdenny
sumber
Senang mengetahui info tentang GameSpy, terutama sejak saya menggunakannya. Tidak pernah tahu tentang bagian SQL selama ini.
StanleyJohns
1
Jangan lupa, saat itu versi terbaru adalah SQL 2000 dan kami memiliki 1+ Billion baris tabel. Kami memiliki perwakilan yang cukup baik untuk menjaga sistem online di bawah beban tinggi.
mrdenny
11

Jawaban yang tepat sangat tergantung pada platform Anda pemrograman untuk.

Kebetulan seseorang menanyakan pertanyaan ini untuk platform khusus di StackOverflow sekitar 1,5 tahun yang lalu.

Baik itu MySQL, SQL Server, Oracle, PostgreSQL atau RDBMS lainnya, Anda harus sangat kreatif dengan infrastruktur basis data. Jika Anda memiliki buku cek terbuka untuk perangkat keras dan DBMS kekuatan industri, Oracle cocok untuk Anda (jika faktanya, Oracle RAC akan lebih diinginkan). Jika Anda mengembangkan menggunakan IIS dan lingkungan Microsoft, maka itu adalah SQL Server sepanjang jalan. Jika Anda memiliki masalah anggaran dan menginginkan tampilan dan nuansa Oracle, PostgreSQL akan diselamatkan. Jika Anda memiliki masalah anggaran, imajinasi yang jelas, dan ingin mengelola mikro Mesin Penyimpanan sesuai keinginan Anda untuk mengakomodasi kepatuhan ACID, bacaan berkecepatan tinggi, dan berbagai arsitektur replikasi, saya akan secara prejudis mengatakan MySQL.

DBMS seharusnya menjadi kekhawatiran Anda yang paling sedikit dengan MMORPG. Masalah pemrograman selalu menghadirkan ikan yang lebih besar untuk digoreng. Jadi, buat keputusan dengan bijaksana dan bijak, karena apa pun DBMS yang Anda pilih, Anda harus hidup dengannya (seperti halnya FaceBook harus hidup dengan MySQL ).

RolandoMySQLDBA
sumber
2
Itu referensi ketiga yang saya lihat di artikel Facebook hari ini. Artikel yang cukup bagus.
mrdenny
2
+1. MySQL biasanya diabaikan, tetapi ini adalah RDBMS yang sangat kuat.
StanleyJohns
7

Ini bukan pertanyaan yang tepat. Kinerja gim Anda akan bergantung pada arsitektur lengkap dan tumpukan teknologi yang Anda pilih dan cara penerapannya. DBMS hanyalah salah satu komponen stack. Saya akan menebak bahwa DBMS tidak mungkin menjadi faktor pembatas pada kinerja kecuali jika Anda merancang semuanya dengan sangat buruk. Lapisan domain Anda, cacheing dan bagaimana Anda mendistribusikan dan memperbesar situs tampaknya menjadi masalah yang jauh lebih penting.

nvogel
sumber
5

Setiap RDBMS akan jatuh dengan skala tergantung bagaimana itu dikonfigurasi, diskalakan dan bagaimana aplikasi menggunakannya.

Saya pikir, Anda punya dua pertanyaan dalam satu. Yang pertama, "DBMS apa yang mampu bertahan dari data game dengan cara yang efisien." (subyektif, imho) Yang kedua, "bagaimana saya skala DBMS untuk melakukan dengan 1000s pengguna?"

Banyak layanan online telah menemukan kombinasi MySQL dan Memcached untuk memberikan kinerja dan skala yang sangat baik. Namun, ada titik di mana solusi itu jatuh juga. Namun, mungkin itulah yang Anda butuhkan.

Semakin banyak layanan online yang memasukkan solusi NoSQL ke dalam arsitektur mereka. Saya memiliki pengalaman dengan CouchBase dan merasa bermanfaat.

randomx
sumber
4

Kode, desain dan disk Anda (untuk menulis) menentukan kinerja secara umum. Bukan platform.

gbn
sumber
2

Anda bisa melihat CUBRID . Ini adalah RDBMS open source yang sangat "panas" di Korea Selatan saat ini. Ini seharusnya berfungsi dengan sangat baik / sangat cepat untuk aplikasi web dengan jumlah pengguna yang tinggi (mereka mengatakan 50rb atau sekitar itu).

Bart Meinfield
sumber
CUBRID, pada kenyataannya, bukan hanya DBMS Relasional tetapi juga menyediakan fungsionalitas Objek . Bagian objek adalah persis apa yang dibutuhkan Pengembang Game. Di CUBRID Anda dapat dengan mudah membuat Jenis yang Ditentukan Pengguna. Misalnya. sebuah tabel dapat memiliki kolom, yang memiliki tipe data sebagai tabel lain seperti: CREATE TABLE a (id INTEGER AUTO_INCREMENT KUNCI UTAMA, nama VARCHAR (255)); CREATE TABLE b (id INTEGER AUTO_INCREMENT KUNCI UTAMA, custom_column a); Jenis fungsi ini sangat berharga bagi pengembang game. Game online populer di Korea Selatan didasarkan pada CUBRID.
Mata
2

Saya pikir salah satu database utama dapat menangani beban jika dirancang dengan baik. Sayangnya saya memperkirakan bahwa kurang dari 1% dari semua database dirancang dengan baik. (Saya secara pribadi telah berurusan dengan data dari ribuan database yang berbeda melakukan berbagai fungsi, jadi saya pikir saya punya ide bagus tentang kurangnya kualitas yang ada di luar sana di dunia nyata.)

Saya akan sangat menyarankan agar Anda mendapatkan beberapa buku tentang penyetelan kinerja untuk database yang Anda pilih dan membacanya secara menyeluruh sebelum mulai mendesain. Ada banyak hal yang akan membantu database Anda tampil lebih baik yang harus dirancang sejak awal. Hanya mengetahui cara menulis permintaan performant dan indeks desain sangat penting untuk mendapatkan desain yang baik. Jenis studi dan kinerja yang dirancang ini bukan optimasi prematur. Tidak ada alasan sama sekali untuk menggunakan teknik membunuh kinerja yang dikenal dalam desain. Database perlu dirancang untuk kinerja sejak awal.

HLGEM
sumber
0

Kami memiliki game seluler dengan 1000-an pemain dan kami melihat penurunan yang sangat besar dengan pergi ke kolam koneksi mysql IIS / .NET yang persisten. mysql 5.1

Pikirkan tentang menyimpan "tulis saja" data di tempat lain untuk mengurangi beban pada db apa pun yang Anda pilih, bahkan Cassandra atau syslog. Pikirkan tentang menyimpan data yang berubah dengan cepat, sangat transien tetapi dapat direkonstruksi dalam nosql db seperti memcache, riak, dll.

Anne Mouse
sumber