Mongodb:使用する前に知っておくべきことは?[閉まっている]


93

Ruby on Railsを使用して趣味の(収益のない)プロジェクトを始めています。Postgresqlを使用してRailsでかなりの量の開発を行ったので、正規化されたスキーマをかなりよく模倣できます。ただし、Mongrodbは光沢があり、新しく見えます。趣味のプロジェクトよりも新しい何かを試してみるのに良いことは何ですか?

Mongodbを使い始めたときを思い出してください。「始めたときにそれを知っていれば!」知っていれば、最初から使用していたプラグインは何ですか。ブックマークを付けたいリファレンスは何ですか?

回答:


63

RailsでMongoDBを使用する場合は、間違いなくMongoMapperの2番目の推奨事項を紹介します。ただし、(これまでのところ)いくつかのブログ投稿以外のドキュメントはありません。ソースコードを詳しく調べてどのように機能するかを確認するのに慣れていない場合は、おそらくまだお勧めできません。

Rails外で作業している場合は、MongoMapperから離れた場所にいることをお勧めします。これはMongoDBをSQLで裏付けられたORMに期待するものと同じように機能させているため、MongoDBの背後にあるさまざまな考え方の力や優れたアイデアを実際に提供していません。少し時間をかけて、低レベルのrubyドライバーで、さらにはJavaScriptコンソールで遊んでみてください。

特にスキーマを正規化する方法を知っていると言って以来、私がお勧めするもう1つのことは、MongoDBを今のところデータベースとして考えることではありません。MongoDBでデータを整理する方法は、リレーショナルデータベースを使用する場合とは大きく異なります。Rubyハッシュを格納および取得する場所として、それをもっと考えてみてください。MongoDBでいくつかのリレーショナルなことを実行できますが、NoSQLに頭を回そうとしている間は、自己完結型のドキュメントのみを使用することをお勧めします。

どのリンクを見る必要があるかについては、MongoDBサイトでできる限りすべてを読むことを強くお勧めします。彼らのドキュメントはとても良いです。特に、高度なクエリマルチキーインデックスMapReduceを見て、NoSQLデータベースの独自の利点と長所のいくつかを理解してください。


26

私はあなたと同じ段階にいます。MongoDBで新しいプロジェクトを開始する。私は約7週間の経験があります。これは私が非常に便利だと思ったものです:

Mongomapperの代わりにMongoidを使用する

http://mongoid.org/

ドキュメントは素晴らしいです。真剣に、素晴らしい。すべてのドキュメントを読むのに約15分かかり、Mongoidでできることとできないことについて非常に正確に理解できます。

明日、mongoidの新しいメジャーバージョンのリリース候補がリリースされます。それは多くの便利なものをもたらすでしょう。

Rails 3を使用しています。開発バージョンをインストールするには、これをgemファイルに追加します。

gem 'mongoid'、 "〜> 2.0.0.beta"

現在のベータは20ですが、私が言ったように、明日はリリース候補があります。

また、Googleグループにも参加することをお勧めします。トラフィックが少なく、人々はどんな質問にも喜んで答えてくれます。たとえば、私は彼らに私の最初のDBモデルの設計を示しました。Mongoidの作成者もあなたの質問に答えます。

2つの言葉で:素晴らしいコミュニティ。

MongoでMachinistを使用できるようにするこのプラグインがあります。

https://github.com/nmerouze/machinist_mongo

かなりうまくいきます。

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

あなたはMachinistでForgeryを使うことができます。素晴らしいミックス。

https://github.com/sevenwire/forgery

もう一つ言いたいことがある。私はリレーションデータベースの世界の出身なので、最初は本当に奇妙に聞こえました。mongoデータベースにファイルを保存できます。

実際、以前のようにそれらを管理するよりも速くなる可能性があります。これは、mongoがシャーディングをサポートしているためです。シャーディングとは、コンピューターのクラスターを使用してMongoデータベースにサービスを提供できることを意味します。シームレスです。マスタースレーブ。そのため、多くのコンピューターからファイルを提供し、それぞれが部分を送信することができます。それは非常によくスケーリングします:)

これは、GridFSを使用して行われます。http://www.mongodb.org/display/DOCS/GridFS

Mongoidはそのマスタースレーブ構成をサポートしています。

さらに情報が必要かどうか私に尋ねてください。

編集:

また:http : //railscasts.com/episodes/238-mongoid


8

1.大文字と小文字を区別しないクエリ

eq

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

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

2.最後の挿入ID:

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

3. _idはMongoIdオブジェクトです

IDで検索:

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

_idを表示:

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

また、_idはコレクションごとに一意であり、他のサーバーでは異なる場合があります

4. MongoDBはLIMIT、OFFSET、ORDERをサポートしています

事前の並べ替えには、Aggregation Frameworkを使用できます。

5. SQLでは、MongoDBでのSQLインジェクションは配列インジェクションです。

したがって、いくつかのデータ使用を書き込むとき(文字列)またはチェックis_array

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

6. HDD DOS

PHPのデフォルトの_POSTサイズは8MBで、モンゴでは、ドキュメントごとに16MBの制限があります。ですから、分析スクリプトでユーザーのなりすましeq USER_AGENT STRINGを想像して、単一の挿入ごとに16MBを送信します。

7.以前にMongoDbでいくつかの問題がありましたが、現在3.0はかなり素晴らしく、安定しています。


3

.NET RocksのMongoDbポッドキャストの優れた初心者/紹介-

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

Mike Dirolfがインタビューを受けました...彼はMongoDbプロジェクトに取り組んでいます。ああ、音質は素晴らしいです。

Mike Dirolfは10genのソフトウェアエンジニアで、MongoDBプロジェクトに取り組んでいます。彼は主にPythonとRubyのクライアントドライバーに取り組んでいますが、MongoDBについて話すために時間もかかります-彼はEuroPython、Strange Loop Conf、RubyEnRails、RuPy、RubyConf、およびニューヨーク市、ロンドン、ワシントンのミートアップグループで発表しました。 DCとサンフランシスコ。


2

junemakersのmongo-mapperを必ず確認してくださいhttp ://github.com/jnunemaker/mongomapperしかし、私はまた、モンゴ・マッパーは、ボンネットの下にどのように動作するかを確認するために、純粋なルビーMongoのドライバで少しプレイすることをお勧めします。Rubyを使用してMongoデータベースにデータを入れるのはそれほど難しくありません。

Ruby Mongoチュートリアルはもうご存知だと思います。あなたがそうしなかった場合に備えて、ここにリンクがあります:http : //www.mongodb.org/display/DOCS/Ruby+Tutorial


信じられないかもしれませんが、それは私が読むためにキューに入れたリンクにはありませんでした。それは良いもののように見えます。ありがとう。
ウェインコンラッド
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.