2012-02-09 7 views
0

私は多くのレコードを扱う経験はありません。以前は、MySqlを使用して記事、コメントなどの簡単なデータを保存していました。今、私はRuby On Railsにアプリケーションを書く必要があります。Ruby On Railsは、1分ごとに数十のレコードをデータベースに送ります。DBに多くのデータを効果的に保存する方法は?

このアプリケーションは、いくつかのウェブサイトを見て、それらのパラメータのいくつかを測定する予定です。ウェブサイトは24時間365日視聴可能です。私が100のウェブサイトを見たいと思えば、毎日〜144000(100 * 60 * 24)の新しく追加されたレコードについて私のデータベーステーブルに入れます。私はデータベースに格納するだけでなく、結果、グラフなどを組み合わせて、彼らと一緒に作業するだけしたくない

私はブログのコメントのように、それらのレコードを保存することは非常に賢明ではないことを推測しますシステム。 「すばらしい」ソリューションなしでデータを保存する必要がありますか?

答えて

2

MongoDBを使用することをお勧めします。私は現在、数百万のドキュメントを格納しているインスタンスをいくつか持っています。通常のリレーショナルスキーマとは異なり、MongoDBのサブ文書のサポートを使用することができます。

MongoDBはNoSQLデータベースですが、データベースや日常のオブジェクト指向に精通していれば、使いやすく、使い始めることができます。

のMongoDBはルビーを含む最も人気のある言語用のドライバを持っているので、あなたは、Ruby用のドライバをインストールすることができます(それはあなたが使用したいものだと仮定して)宝石を使用して、次のコマンドを実行して:

gem install mongo 

そしてDebianを使用している場合/ Ubuntuは単に次のものを持っています:

apt-get install mongodb 

これはあなたが始めなければなりません。

各レコードのサイズにもよりますが、さまざまなデザインを採用することができます.MongoDBは現在、1文書につき16MBという制限がありますので、意識する必要があります。

私はその後、店に使用される別のコレクションを持っている基本的なあなたが監視しているサイトについての情報(名前、URL、クライアントへの参照、...)

を格納するために、ウェブサイトの名前のコレクションを持っているでしょうあなたの統計は、 "統計"と呼ばれることがありますが、私はあなたのサブ文書(毎分の統計)を1日分のデータを保持する別の文書の中に保存します。

だから、統計の各文書はのようになります。あなたが開始される

{ 
    _id : X, 
    website_id : STORE_THE_ID_HERE, 
    timestamp_start : PUT_THE_TIMESTAMP_WHEN_YOU_START_MONITORING_HERE, 
    timestamp_end : SAME_AS_ABOVE_REALLY, 
    stats_count : A_DENORMALIZED_COUNT_OF_STATS 
    stats : [ { views : X, clicks : X2, ... }, 
     ... 
    ] 
} 

希望、私はあなたがそれを試してみることを喜んでいる場合にMongoDBは完全にあなたの要件に合うと思います。

+0

その答えは私にとって素晴らしいと思います。私はそれを試してみましょう! – Arti

関連する問題