Saya mengevaluasi apa yang mungkin menjadi opsi migrasi terbaik.
Saat ini, saya menggunakan MySQL (partisi horizontal) sharded, dengan sebagian besar data saya disimpan dalam gumpalan JSON. Saya tidak punya pertanyaan SQL yang rumit (sudah dimigrasikan setelah saya mempartisi db).
Saat ini, sepertinya MongoDB dan Cassandra akan menjadi pilihan. Situasi saya:
- Banyak bacaan di setiap kueri, penulisan kurang teratur
- Tidak khawatir tentang skalabilitas "besar"
- Lebih peduli tentang pengaturan sederhana, pemeliharaan dan kode
- Minimalkan biaya perangkat keras / server
mongodb
database-design
cassandra
database
ming kamu
sumber
sumber
Jawaban:
Banyak bacaan di setiap kueri, lebih sedikit tulisan biasa
Kedua basis data bekerja dengan baik pada pembacaan di mana set data panas cocok di memori. Keduanya juga menekankan model data join-less (dan sebagai gantinya mendorong denormalisasi), dan keduanya memberikan indeks pada dokumen atau baris , meskipun indeks MongoDB saat ini lebih fleksibel.
Mesin penyimpanan Cassandra menyediakan penulisan dengan waktu konstan tidak peduli seberapa besar set data Anda tumbuh. Menulis lebih bermasalah di MongoDB, sebagian karena mesin penyimpanan berbasis b-tree, tetapi lebih karena penguncian multi-granularitas yang dilakukannya.
Untuk analitik, MongoDB menyediakan peta khusus / mengurangi implementasi; Cassandra menyediakan dukungan Hadoop asli, termasuk untuk Hive (gudang data SQL yang dibangun di atas peta Hadoop / reduksi) dan Pig (bahasa analisis khusus Hadoop yang menurut banyak orang lebih cocok untuk memetakan / mengurangi beban kerja daripada SQL). Cassandra juga mendukung penggunaan Spark .
Tidak khawatir tentang skalabilitas "besar"
Jika Anda melihat satu server, MongoDB mungkin lebih cocok. Bagi mereka yang lebih mementingkan penskalaan, arsitektur tanpa-kegagalan-tunggal Cassandra akan lebih mudah diatur dan lebih dapat diandalkan. (Kunci tulis global MongoDB cenderung menjadi lebih menyakitkan juga.) Cassandra juga memberikan lebih banyak kontrol atas bagaimana replikasi Anda bekerja, termasuk dukungan untuk beberapa pusat data.
Lebih peduli tentang pengaturan sederhana, pemeliharaan dan kode
Keduanya sepele untuk diatur, dengan standar out-of-the-box yang wajar untuk satu server. Cassandra lebih mudah diatur dalam konfigurasi multi-server karena tidak ada node peran khusus yang perlu dikhawatirkan.
Jika saat ini Anda menggunakan gumpalan JSON, MongoDB adalah pasangan yang sangat baik untuk kasus penggunaan Anda, mengingat bahwa ia menggunakan BSON untuk menyimpan data. Anda akan dapat memiliki data yang lebih kaya dan lebih dapat ditanyakan daripada yang Anda miliki dalam database Anda saat ini. Ini akan menjadi kemenangan paling penting bagi Mongo.
sumber
Saya telah menggunakan MongoDB secara luas (selama 6 bulan terakhir), membangun sistem manajemen data hirarkis, dan saya dapat menjamin kemudahan pengaturan (instal, jalankan, gunakan!) Dan kecepatannya. Selama Anda berpikir tentang indeks dengan hati-hati, itu bisa benar-benar menjerit, dengan cepat.
Saya mengetahui bahwa Cassandra, karena penggunaannya dengan proyek-proyek skala besar seperti Twitter, memiliki fungsi penskalaan yang lebih baik, meskipun tim MongoDB bekerja pada paritas di sana. Saya harus menunjukkan bahwa saya tidak menggunakan Cassandra di luar tahap uji coba, jadi saya tidak dapat berbicara secara detail.
Tingkah laku nyata bagi saya, ketika kami menilai basis data NoSQL, adalah kueri - Cassandra pada dasarnya hanya toko kunci / nilai raksasa, dan kueri sedikit rumit (setidaknya dibandingkan dengan MongoDB), jadi untuk kinerja Anda harus duplikat data yang cukup banyak sebagai semacam indeks manual. MongoDB, di sisi lain, menggunakan model "permintaan dengan contoh".
Misalnya, Anda memiliki Koleksi (bahasa MongoDB yang setara dengan tabel RDMS) yang berisi Pengguna. MongoDB menyimpan catatan sebagai Dokumen, yang pada dasarnya adalah objek JSON biner. misalnya:
Jika Anda ingin menemukan semua pengguna yang disebut Smith yang memiliki hak Admin, Anda cukup membuat dokumen baru (di konsol admin menggunakan Javascript, atau dalam produksi menggunakan bahasa pilihan Anda):
... lalu jalankan kueri. Itu dia. Ada tambahan operator untuk perbandingan, pemfilteran RegEx dll, tetapi semuanya sangat sederhana, dan dokumentasi berbasis Wiki cukup bagus.
sumber
As long as you think about indexes carefully, it can absolutely scream along, speed-wise.
Tunggu sampai memori fisik Anda penuh dan OS memulai kesalahan halaman lolMengapa memilih antara database tradisional dan penyimpanan data NoSQL? Gunakan keduanya! Masalah dengan solusi NoSQL (di luar kurva belajar awal) adalah kurangnya transaksi - Anda melakukan semua pembaruan untuk MySQL dan memiliki MySQL mengisi toko data NoSQL untuk dibaca - Anda kemudian mendapat manfaat dari kekuatan masing-masing teknologi. Ini memang menambah kerumitan, tetapi Anda sudah memiliki sisi MySQL - cukup tambahkan MongoDB, Cassandra, dll ke dalam campuran.
Datastore NoSQL umumnya berskala jauh lebih baik daripada DB tradisional untuk spesifikasi yang sama - ada alasan mengapa Facebook, Twitter, Google, dan sebagian besar pemula menggunakan solusi NoSQL. Bukan hanya Geeks yang mendapatkan teknologi tinggi.
sumber
Saya mungkin akan menjadi orang aneh, tapi saya pikir Anda harus tetap menggunakan MySQL. Anda belum menggambarkan masalah nyata yang perlu Anda selesaikan, dan MySQL / InnoDB adalah back-end penyimpanan yang sangat baik bahkan untuk data gumpalan / json.
Ada trik umum di antara para insinyur Web untuk mencoba menggunakan lebih banyak NoSQL segera setelah realisasi datang bahwa tidak semua fitur dari RDBMS digunakan. Ini saja bukan alasan yang baik, karena paling sering database NoSQL memiliki mesin data yang agak buruk (apa yang MySQL sebut sebagai mesin penyimpanan).
Sekarang, jika Anda bukan dari jenis itu, maka silakan tentukan apa yang hilang di MySQL dan Anda cari di database yang berbeda (seperti, sharding otomatis, failover otomatis, replikasi multi-master, jaminan konsistensi data yang lebih lemah di cluster membayar dalam throughput tulis yang lebih tinggi, dll).
sumber
Saya belum pernah menggunakan Cassandra, tetapi saya telah menggunakan MongoDB dan berpikir itu luar biasa.
Jika Anda setelah penyetelan sederhana, ini dia: Anda cukup untar MongoDB dan jalankan daemon mongod dan hanya itu ... sedang berjalan.
Jelas itu hanya permulaan, tetapi untuk memulai Anda mudah.
sumber
Saya melihat presentasi di mongodb kemarin. Saya pasti bisa mengatakan bahwa pengaturan itu "sederhana", sesederhana membongkar dan menyalakannya. Selesai
Saya percaya bahwa baik mongodb dan cassandra akan berjalan di hampir semua perangkat keras linux biasa sehingga Anda tidak akan menemukan banyak penghalang di daerah itu.
Saya pikir dalam kasus ini, pada akhirnya, itu akan turun ke mana Anda secara pribadi merasa lebih nyaman dengan dan yang memiliki perangkat yang Anda sukai. Sejauh presentasi di mongodb, presenter menunjukkan bahwa toolset untuk mongodb cukup ringan dan tidak ada banyak (mereka mengatakan benar-benar) alat yang mirip dengan apa yang tersedia untuk MySQL. Ini tentu saja pengalaman mereka jadi YMMV. Satu hal yang saya sukai dari mongodb adalah bahwa tampaknya ada banyak dukungan bahasa untuk itu (Python, dan .NET menjadi dua yang saya terutama gunakan).
Daftar situs yang menggunakan mongodb cukup mengesankan , dan saya tahu bahwa twitter baru saja beralih menggunakan cassandra.
sumber