4

MongoDBをテスト実行し、Mongoidを使用してRails3アプリをセットアップしました。大規模なデータセットをMongoDBに挿入するためのベストプラクティスは何ですか?シナリオを具体化するために:たとえば、本のモデルがあり、CSVファイルから数百万のレコードをインポートしたいとします。

これはコンソールで行う必要があると思うので、これはおそらくRuby固有の質問ではないかもしれません。

追加のために編集:インポートされたデータに関連付けが含まれているか、1つのモデルのみに含まれることになっている場合でも、大きな違いが生じると思います。どちらのシナリオについてもコメントを歓迎します。

4

2 に答える 2

2

MongoDBには、JSON形式のデータを解析するインポート/エクスポートツールが付属しています。

SQLに既存のデータベースがあるとすると、そのデータを移行する最も簡単な方法は、SQLデータをJSON文字列として出力し、コレクションごとにインポートツールを使用することです。

これには、非正規化とネスト/埋め込みが含まれます。したがって、リレーショナルモデルをMongoDBに移行しないでください。また、MongoDB機能を活用するためにデータモデルをリファクタリングすることも検討する必要があります。

たとえば、一般的なタスクは、タグが配列として埋め込まれている記事コレクションに記事とタグをマージすることです。エクスポートスクリプトでこれを行うと、MongoDBが認識するのは、インポートから入ってくるきれいなJSONだけです:-)

すべてのテーブルをコレクションとしてインポートすることはできますが、それを行うことで、MongoDBの真の長所のいくつかを逃してしまいます。

于 2010-05-25T18:33:43.253 に答える
1

このデータセットを1回だけ追加する場合。ファイルを使用できdb/seed.rbます。CSVを読み取って、すべてのドキュメントを生成できます。

それを何度も作りたいのなら、ランナーやタスクを作ることができます。

タスクでは、ファイルを使用してタスクを定義しlib/task/file.rakeて生成し、再度解析してすべてのドキュメントを生成する必要があります。

あなたも作ることができrunnerます。

ActiveRecordのものと同じものです。

于 2010-05-25T18:32:15.723 に答える