Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Menggunakan database NoSQL melalui MySQL

Interpretasi sopan dari "NoSQL" telah menjadi Not Only SQL . Jika Anda memiliki data yang memang benar-benar relasional, atau jika fungsionalitas Anda bergantung pada hal-hal seperti join dan ACIDity, maka Anda harus menyimpan data tersebut secara relasional. Dalam posting ini, saya akan menjelaskan bagaimana saya menggunakan MySQL bersama dua penyimpanan data NoSQL. Penyimpanan data skala web modern adalah tentang memahami cara memilih alat terbaik untuk pekerjaan itu.

Yang mengatakan, NoSQL benar-benar merupakan reaksi terhadap fakta bahwa metode relasional dan cara berpikir telah diterapkan pada masalah yang sebenarnya tidak cocok (biasanya tabel besar dengan puluhan juta baris atau lebih). Setelah tabel menjadi sebesar itu, "praktik terbaik" khas SQL adalah shard . secara manual data -- yaitu, menempatkan catatan 1 hingga 10.000.000 dalam tabel A, 10.000.001 hingga 20.000.001 dalam tabel B, dan seterusnya. Kemudian, biasanya di lapisan model aplikasi, pencarian dilakukan sesuai dengan skema ini. Inilah yang disebut application-aware penskalaan. Ini intensif waktu dan rawan kesalahan, tetapi untuk meningkatkan sesuatu sambil mempertahankan MySQL untuk penyimpanan tabel panjang, ini menjadi MO yang kurang lebih standar. NoSQL mewakili, bagi saya, application-unaware alternatif.

Nilai-Kunci

Ketika saya memiliki prototipe MySQL mulai menjadi terlalu besar untuk kebaikannya sendiri, saya pribadi memindahkan data sebanyak mungkin ke Membase secepat kilat , yang mengungguli Memcached dan menambahkan ketekunan. Membase adalah penyimpanan nilai kunci terdistribusi yang menskalakan lebih atau kurang secara linier (Zynga menggunakannya untuk menangani setengah juta operasi per detik, misalnya) dengan menambahkan lebih banyak server komoditas ke dalam sebuah cluster -- oleh karena itu, ini adalah hebat cocok untuk era cloud Amazon EC2 , Joyent , dll.

Sudah diketahui bahwa penyimpanan nilai kunci terdistribusi adalah cara terbaik untuk mendapatkan skala linier yang sangat besar. Kelemahan dari key-value adalah queryability dan indexing. Tetapi bahkan di dunia relasional, praktik terbaik untuk skalabilitas adalah dengan melepaskan sebanyak mungkin upaya ke server aplikasi, melakukan penggabungan dalam memori pada server aplikasi komoditas alih-alih meminta klaster RDB pusat untuk menangani semua logika itu. Sejak simple select plus application logic benar-benar cara terbaik untuk mencapai skala besar bahkan di MySQL, transisi ke sesuatu seperti Membase (atau pesaingnya seperti Riak ) tidak terlalu buruk.

Toko Dokumen

Terkadang -- meskipun saya akan berdebat lebih jarang daripada yang dipikirkan banyak orang -- desain aplikasi secara inheren membutuhkan indeks sekunder, kemampuan kueri rentang, dll. Pendekatan NoSQL untuk ini adalah melalui document store seperti MongoDB . Seperti Membase, Mongo sangat baik di beberapa area di mana database relasional sangat lemah, seperti application-unaware penskalaan, auto-sharding , dan maintaining flat response times even as dataset size balloons . Ini secara signifikan lebih lambat daripada Membase dan sedikit lebih sulit untuk melakukan skala horizontal murni, tetapi manfaatnya adalah sangat dapat ditanyakan. Anda dapat melakukan query pada parameter dan rentang secara real time, atau Anda dapat menggunakan Map/Reduce untuk melakukan operasi batch yang kompleks pada kumpulan data yang sangat besar.

Pada proyek yang sama yang saya sebutkan di atas, yang menggunakan Membase untuk menyajikan banyak data pemain langsung, kami menggunakan MongoDB untuk menyimpan data analitik/metrik, yang merupakan keunggulan MongoDB.

Mengapa menyimpan sesuatu dalam SQL

Saya menyinggung secara singkat fakta bahwa informasi 'benar-benar relasional' harus tetap berada di basis data relasional. Seperti yang ditunjukkan oleh komentator Dan K., saya melewatkan bagian di mana saya membahas kerugian meninggalkan RDBMS, atau setidaknya meninggalkannya sepenuhnya.

Pertama, ada SQL itu sendiri. SQL terkenal dan telah menjadi standar industri sejak lama. Beberapa database "NoSQL" seperti App Engine Google Datastore (dibangun di Tabel Besar) mengimplementasikan bahasa mereka sendiri yang mirip SQL (Google disebut, lucunya, GQL untuk Google Query Language ). MongoDB mengambil pendekatan baru untuk masalah kueri dengan objek kueri JSON yang menyenangkan . Namun, SQL itu sendiri adalah alat yang ampuh untuk mendapatkan informasi dari data, yang sering kali merupakan inti dari database untuk memulai.

Alasan terpenting untuk tetap menggunakan RDBMS adalah ACID , atau Atomicity, Consistency, Isolation, Durability . Saya tidak akan meng-hash ulang status Acid-NoSQL, karena ditangani dengan baik di postingan ini pada SO. Cukuplah untuk mengatakan, ada alasan rasional RDBMS Oracle memiliki pasar yang sangat besar yang tidak akan kemana-mana:beberapa data membutuhkan kepatuhan terhadap ACID murni . Jika data Anda melakukannya (dan jika ya, Anda mungkin sangat menyadari fakta itu), maka database Anda juga demikian. Pertahankan pH itu rendah!

Sunting: Lihat postingan Aaronaught di sini. Dia mewakili perspektif bisnis-ke-bisnis jauh lebih baik daripada yang saya bisa, sebagian karena saya telah menghabiskan seluruh karir saya di ruang konsumen.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Panduan Merancang Database Untuk Manajemen Blog Di MySQL

  2. INSERT IGNORE vs INSERT ... PADA PEMBARUAN KUNCI DUPLICATE

  3. Bagaimana cara memasukkan data file csv ke database mysql

  4. Menggunakan stripslash setelah mysql_real_escape_string

  5. Menggunakan GROUP_CONCAT pada subquery di MySQL