Mongodb: Kullanmadan önce bilmeniz gerekenler? [kapalı]


93

Ruby on Rails kullanarak bir hobi (gelir getirmeyen) projesi başlatıyorum. Postgresql kullanarak Rails'de oldukça fazla geliştirme yaptım ve normalleştirilmiş şemanın oldukça iyi bir taklidini yapabilirim. Ancak Mongrodb parlak ve yeni görünüyor. Yeni bir şey denemek için bir hobi projesinden daha iyi ne olabilir?

Mongodb'u kullanmaya başladığınız zamanı düşünün. Daha sonra hangi teknikleri öğrendiniz ki, "Keşke bunu başladığımda bilseydim!" Keşke bilseydin, en başından itibaren kullanacağın hangi eklentileri keşfettin? Hangi referanslara yer işareti koymak isterdiniz?

Yanıtlar:


63

MongoDB'yi Rails ile kullanacaksanız, MongoMapper'ın tavsiyesini kesinlikle ikinci planda tutacağım. Bununla birlikte, sizi (şimdiye kadar) birkaç blog yazısı dışında hiçbir belge olmadığı konusunda uyaracağım. İşlerin nasıl yürüdüğünü görmek için kaynak koduna girmekte rahat değilseniz, muhtemelen henüz sizin için değildir.

Rails dışında çalışıyorsanız, MongoMapper'dan uzak durmanızı tavsiye ederim. MongoDB'yi SQL destekli bir ORM'den beklediğimize benzer bir şeye dönüştürdüğü için, size MongoDB'nin gücü ve arkasındaki farklı düşünce hakkında gerçekten iyi bir fikir vermiyor. Daha düşük seviyeli ruby ​​sürücüsüyle ve hatta javascript konsolunda biraz zaman geçirin.

Eğer bir şema normalleştirmek için bilerek söz özellikle tavsiye ederim başka şey, olduğu değil şimdilik bir veritabanı olarak MongoDB düşünmek. Verilerinizi MongoDB'de düzenleme şekliniz, ilişkisel bir veritabanından çok farklıdır. Bunu daha çok Ruby karmalarını depolamak ve almak için bir yer olarak düşünmeye çalışın. MongoDB ile bazı ilişkisel şeyler yapabilirsiniz, ancak kafanızı NoSQL'in etrafına sarmaya çalışırken yalnızca kendi kendine yeten belgelere bağlı kalmanızı tavsiye ederim.

Bakmanız gereken bağlantılara gelince, MongoDB sitesinde bulabileceğiniz her şeyi okumanızı şiddetle tavsiye ederim. Belgeleri çok iyi. Özellikle, bir NoSQL veritabanının bazı benzersiz avantajları ve güçlü yönleri hakkında bir fikir edinmek için gelişmiş sorgulara , çoklu dizinlere ve MapReduce'a bir göz atın .


26

Seninle neredeyse aynı aşamadayım. MongoDB ile yeni bir projeye başlamak. Yaklaşık 7 haftalık deneyimim var. Bu benim çok yararlı bulduğum şey:

Mongomapper yerine Mongoid kullanın

http://mongoid.org/

Belgeler mükemmel. Cidden, mükemmel. Tüm belgeleri okumanız yaklaşık 15 dakikanızı alacaktır ve Mongoid ile ne yapıp ne yapamayacağınız konusunda çok kesin bir fikre sahip olacaksınız.

Yarın, mongoid'in yeni bir ana sürümü için sürüm adayı yayınlanacak. Pek çok yararlı şey getirecek.

Rails 3 kullanıyorum. Geliştirme sürümünü kurmak için bunu gem dosyanıza ekleyin:

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

Şu anki beta 20, ama dediğim gibi yarın yayın adayı var.

Ayrıca google grubuna da katılmanızı öneririm. Trafiği düşük ve insanlar herhangi bir soruyu cevaplamaya çok istekliler. Örneğin onlara ilk DB Modeli tasarımımı gösterdim ve onlar bana bunu geliştirmek için birçok yol sundu. Mongoid'in yaratıcısı da sorularınıza cevap veriyor.

İki kelimeyle: Harika topluluk.

Machinist'i mongo ile kullanmanızı sağlayan bir eklenti var:

https://github.com/nmerouze/machinist_mongo

Oldukça iyi çalışıyor.

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

Sahtekarlığı Makinist ile kullanabilirsiniz. Harika karışım.

https://github.com/sevenwire/forgery

Söylemek istediğim başka bir şey. Bir ilişki veritabanı dünyasından geliyorum, bu yüzden başlangıçta bu gerçekten garip geldi: Dosyaları bir mongo veritabanına kaydedebilirsiniz.

Aslında, eskiden yaptığımız gibi onları yönetmekten daha hızlı olabilir. Bunun nedeni, Mongo'nun parçalama desteğidir. Sharding, Mongo Veritabanına hizmet vermek için bir bilgisayar kümesi kullanabileceğiniz anlamına gelir. Sorunsuz. Köle başı. Böylece, her biri bir porsiyon gönderen birçok bilgisayardan bir dosya sunabilirsiniz. Çok iyi ölçekleniyor :)

Bu, GridFS kullanılarak yapılır. http://www.mongodb.org/display/DOCS/GridFS

Mongoid bu master-slave yapılandırmasını destekler.

Daha fazla bilgiye ihtiyacınız olup olmadığını bana sorun.

Düzenle:

Ayrıca: http://railscasts.com/episodes/238-mongoid


8

1. Sorgu, büyük / küçük harfe duyarlı değil

eq

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

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

2. Son giriş kimliği:

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

3. _id bir MongoId nesnesidir

Kimliğe göre bul:

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

_İd göster:

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

Ayrıca _id yalnızca koleksiyon başına benzersizdir, diğer sunucuda farklı olabilir

4. MongoDB, LİMİT, OFSET, SİPARİŞ için desteğe sahiptir

bazı gelişmiş sıralama için Aggregation Framework kullanabilirsiniz.

5. SQL'de, MongoDB'de Sql enjeksiyonu, Dizi enjeksiyonudur

Bu yüzden bazı verileri yazarken (string) kullanın veya is_array'i kontrol edin

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

6. HDD DOS

varsayılan _POST boyutu PHP'de 8 MB, Mongo'da belge başına 16 MB sınır vardır. Öyleyse, analitik komut dosyanızda USER_AGENT STRING gibi bazı kullanıcı sahtekarlıklarını ve ardından her ekleme için 16MB gönderdiğini hayal edin.

7. Geçmişte MongoDb ile bazı sorunlar vardı ama şu anda 3.0 oldukça harika ve kararlı.


3

İşte .NET Rocks'tan MongoDb podcast'ine harika bir başlangıç ​​/ giriş -

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

Mike Dirolf görüşülür ... MongoDb projesinde çalışıyor. Oh, ve ses kalitesi mükemmel.

Mike Dirolf, MongoDB projesinde çalıştığı 10gen'de Yazılım Mühendisidir. Ağırlıklı olarak Python ve Ruby için müşteri sürücüleri üzerinde çalışıyor, ancak MongoDB hakkında konuşmak için de zaman ayırıyor - EuroPython, Strange Loop Conf, RubyEnRails, RuPy ve RubyConf'ta ve New York City, Londra, Washington'daki buluşma gruplarında sunum yaptı. DC ve San Francisco.


2

Junemakers mongo-mapper'a kesinlikle bir göz atmalısınız: http://github.com/jnunemaker/mongomapper Ama ayrıca mongo-mapper'ın kaputun altında nasıl çalıştığını görmek için saf Ruby Mongo sürücüsüyle biraz oynamanızı tavsiye ederim. Ruby kullanarak Mongo veri tabanına bazı verileri koymak çok zor değil.

Sanırım Ruby Mongo Eğitimini zaten buldunuz. Sadece yapmadıysanız, işte bağlantı: http://www.mongodb.org/display/DOCS/Ruby+Tutorial


İster inanın ister inanmayın, bu okumak için sıraya koyduğum bağlantılarda yoktu ve iyi bir bağlantıya benziyor. Teşekkürler.
Wayne Conrad
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.