Mongodb: Apa yang harus diketahui sebelum digunakan? [Tutup]

93

Saya memulai proyek hobi (non-pendapatan) menggunakan Ruby on Rails. Saya telah melakukan cukup banyak pengembangan di Rails menggunakan Postgresql, dan saya dapat membuat tiruan skema yang dinormalisasi dengan cukup baik. Namun, Mongrodb terlihat mengkilap dan baru. Apa yang lebih baik untuk mencoba sesuatu yang baru selain proyek hobi?

Pikirkan kembali saat Anda mulai menggunakan Mongodb. Teknik apa yang Anda pelajari kemudian yang membuat Anda berkata, "Seandainya saja saya tahu itu ketika saya mulai!" Plug-in apa yang Anda temukan yang akan Anda gunakan sejak awal, jika saja Anda mengetahuinya? Referensi apa yang ingin Anda tandai?

Wayne Conrad
sumber

Jawaban:

63

Saya pasti akan mendukung rekomendasi MongoMapper jika Anda akan menggunakan MongoDB dengan Rails. Saya akan memperingatkan Anda, bagaimanapun, bahwa (sejauh ini) tidak ada dokumentasi selain beberapa posting blog. Jika Anda tidak nyaman menggali kode sumber untuk melihat cara kerjanya, mungkin itu belum untuk Anda.

Jika Anda bekerja di luar Rails, saya sarankan untuk menjauh dari MongoMapper. Karena ini mengerjakan MongoDB menjadi sesuatu yang mirip dengan apa yang kami harapkan dari ORM yang didukung SQL, itu tidak benar-benar memberi Anda gambaran yang baik tentang kekuatan dan pemikiran yang berbeda di balik MongoDB. Luangkan waktu untuk bermain-main dengan driver ruby ​​level rendah, dan bahkan di konsol javascript.

Hal lain yang saya rekomendasikan, terutama karena Anda menyebutkan mengetahui cara menormalkan skema, untuk saat ini jangan menganggap MongoDB sebagai database. Cara Anda mengatur data di MongoDB sangat berbeda dengan database relasional. Cobalah untuk lebih memikirkannya sebagai tempat untuk menyimpan dan mengambil hash Ruby. Anda dapat melakukan beberapa hal relasional dengan MongoDB, tetapi saya sarankan untuk tetap menggunakan dokumen mandiri saat Anda mencoba membungkus kepala Anda di sekitar NoSQL.

Adapun tautan apa yang harus Anda lihat, saya sangat merekomendasikan membaca semua yang Anda bisa di situs MongoDB. Dokumentasi mereka sangat bagus. Secara khusus, lihat kueri lanjutan , indeks multikey , dan MapReduce untuk mendapatkan gambaran tentang beberapa keunggulan dan kekuatan unik dari database NoSQL.

Emily
sumber
26

Saya hampir pada tahap yang sama dengan Anda. Memulai proyek baru dengan MongoDB. Saya memiliki pengalaman sekitar 7 minggu. Inilah yang menurut saya sangat berguna:

Gunakan Mongoid sebagai ganti Mongomapper

http://mongoid.org/

Dokumentasinya luar biasa. Serius, bagus sekali. Anda membutuhkan waktu sekitar 15 menit untuk membaca semua dokumentasi dan Anda akan memiliki gagasan yang sangat tepat tentang apa yang dapat dan tidak dapat Anda lakukan dengan Mongoid.

Besok, kandidat rilis untuk versi mayor baru mongoid akan dirilis. Ini akan membawa banyak hal yang berguna.

Saya menggunakan Rails 3. Untuk menginstal versi pengembangan, tambahkan ini ke file permata Anda:

permata 'mongoid', "~> 2.0.0.beta"

Beta saat ini 20, tapi seperti yang saya katakan, besok ada kandidat rilisnya.

Saya juga menyarankan Anda untuk bergabung dengan grup google juga. Ini memiliki lalu lintas rendah dan orang-orang sangat bersedia menjawab pertanyaan apa pun. Misalnya saya menunjukkan kepada mereka desain Model DB pertama saya dan mereka memberi saya banyak cara untuk memperbaikinya. Pencipta Mongoid juga menjawab pertanyaan Anda.

Dalam dua kata: Komunitas yang hebat.

Ada plugin ini yang memungkinkan Anda menggunakan Machinist dengan mongo:

https://github.com/nmerouze/machinist_mongo

Bekerja dengan baik.

gem 'machinist_mongo', :require => 'machinist/mongoid', 
:git => 'http://github.com/nmerouze/machinist_mongo.git',
:branch => 'machinist2'

Anda bisa menggunakan Forgery dengan Machinist. Campuran yang luar biasa.

https://github.com/sevenwire/forgery

Hal lain yang ingin saya katakan. Saya berasal dari dunia database relasi, jadi ini terdengar sangat aneh pada awalnya: Anda dapat menyimpan file dalam database mongo.

Faktanya, ini bisa lebih cepat daripada mengelolanya seperti dulu. Ini karena dukungan mongo untuk sharding. Sharding berarti Anda dapat menggunakan sekumpulan komputer untuk melayani Database Mongo. Itu mulus. Tuan-budak. Jadi Anda bisa melayani file dari banyak komputer, masing-masing mengirimkan satu porsi. Ini berskala sangat baik :)

Ini dilakukan dengan menggunakan GridFS. http://www.mongodb.org/display/DOCS/GridFS

Mongoid mendukung konfigurasi master-slave tersebut.

Tanya saya jika Anda membutuhkan informasi lebih lanjut.

Edit:

Juga: http://railscasts.com/episodes/238-mongoid

Nerian
sumber
8

1. Kueri tidak peka huruf besar / kecil

persamaan

"_id": "1da259c70fe3392c3b000002",
"name": "Dany"

array('name' => 'dany') :: results 0
array('name' => 'Dany') :: results 1

2. ID penyisipan terakhir:

$coll->insert($user, true);
echo (string) $user['_id'];

3. _id adalah objek MongoId

Temukan berdasarkan id:

$p->findOne(array('_id' => new MongoId( $UID  )), array('proj'));

Tampilkan _id:

$coll['_id'] = ( string ) $coll['_id'];

Juga _id hanya unik per koleksi, bisa berbeda di server lain

4. MongoDB memiliki dukungan untuk LIMIT, OFFSET, ORDER

untuk beberapa penyortiran lanjutan, Anda dapat menggunakan Kerangka Agregasi.

5. Dalam SQL adalah injeksi Sql di MongoDB adalah injeksi Array

Jadi ketika menulis beberapa data gunakan (string) atau centang is_array

$req = (string) $range['name'];

6. HDD DOS

Ukuran _POST default adalah 8MB di PHP, DI Mongo ada batasan per dokumen 16MB. Jadi bayangkan Beberapa pengguna spoof eq USER_AGENT STRING di skrip analitik Anda dan kemudian mengirim 16MB per sisipan tunggal.

7. Ada beberapa masalah di masa lalu dengan MongoDb tetapi sekarang 3.0 cukup mengagumkan dan stabil.

pengguna956584
sumber
3

Ini adalah pemula / pengantar podcast MongoDb yang bagus dari .NET Rocks -

http://www.dotnetrocks.com/default.aspx?ShowNum=507

Mike Dirolf diwawancarai ... dia bekerja di proyek MongoDb. Oh, dan kualitas suaranya luar biasa.

Mike Dirolf adalah Insinyur Perangkat Lunak di 10gen, di mana dia bekerja pada proyek MongoDB. Dia terutama bekerja pada driver klien untuk Python dan Ruby, tetapi juga meluangkan waktu untuk berbicara tentang MongoDB - dia telah mempresentasikan di EuroPython, Strange Loop Conf, RubyEnRails, RuPy dan RubyConf serta di grup pertemuan di New York City, London, Washington DC dan San Francisco.

Kris Krause
sumber
2

Anda harus benar-benar melihat junemakers mongo-mapper: http://github.com/jnunemaker/mongomapper Tapi saya juga merekomendasikan Anda untuk bermain sedikit dengan driver Ruby Mongo murni untuk melihat bagaimana mongo-mapper bekerja di bawah tenda. Tidaklah sulit untuk memasukkan beberapa data ke dalam database Mongo menggunakan Ruby.

Saya rasa Anda sudah menemukan Tutorial Ruby Mongo. Kalau-kalau Anda tidak melakukannya, ini tautannya: http://www.mongodb.org/display/DOCS/Ruby+Tutorial

t6d
sumber
Percaya atau tidak, itu tidak ada dalam tautan yang saya antri untuk dibaca, dan sepertinya bagus. Terima kasih.
Wayne Conrad