2011-02-08 3 views
2

私は実際にどのようなタイプのデータベースを使用するべきかに関するアドバイスを探しています。私がAPPの例を与えることができれば、あなたが正しいアプローチであると考えるものについて私に助言してくれることを願っています。MongoDB or MySQL or Rails Appの両方

私はベッド&の朝食(B & B's)の予約システムを作りたかったと言います。だから、従来のRBDMSでは、私は多くの場所を持つオーナークラスを持っていました。各場所には機能があり、可用性カレンダーもあります。また、それぞれの場所には独自の予約などがあります。

私は、彼らが唯一本当にその場所に属しているとして、予約などは、独自のレコードをwithing、あなたは独自の機能を備えた場所を持っている可能性のMongoDBとの考えを愛します。しかし、私はこれが故障すると思うところでは、例えば、各予約は請求書を持ち、それらの記録も予約した人々に属します。そして、そのようなアプリケーションのための管理領域を構築することは悪夢になります。

どのようなアプリケーションの種類やデータベースの種類、あなたが使用する上で、あなたのテイクをだろう。

あなたのアドバイスを楽しみにしてください。

答えて

0

はMongoDBのための素晴らしいアプリケーションのような音。決定は、主にあなたとあなたが最も快適なデータベースに依存しているようです。

あなたは、アプリケーション内でのMongoDBとMySQLを混ぜると一致することを恐れてはなりません。モデルを構築するときに、MongoDBにオブジェクトを格納するときに、オブジェクトをMySQLとMongoMapperまたはMongoIDに格納する場合は、ActiveRecord :: Baseを使用できます。 2つのモデルの関係をどのように管理するかに注意してください。

完全免責事項:私は10genで働いています。しかし、私はMongoDBだけで作業を開始しますが、MySQLをすばやく忘れることで作業することはとても喜ばしいことです。

+0

ありがとうございました。でも、あなたがもっと簡単なアプローチを取ったとしても、コメント付きのブログを言うことができます。おそらくサイト内では、ブログに関係なく最新のコメントをリストしたいかもしれません。 MongoDBでこのような作業をすることはできますか? – Lee

+0

はい、ありがとうございます。スキーマの設計方法によって異なります。このトピックについての素晴らしい記事がここにあります:http://www.mongodb.org/display/DOCS/MongoDB+Data+Modeling+and+Rails#MongoDBDataModelingandRails-ModelingComments – jared

1

私は同じアプリでMySQLとMongoDBのを使用してお勧めしません - それは価値があるよりもはるかに多くの問題を。 MongoDBはあなたが言うような簡単なRailsアプリケーションを扱うことができます。この種のアプリケーションではMySQLよりもはるかに柔軟性があると思います。

MongoIDとMongoMapperはActiveRecordの正確なポートではないことに注意してください。類似点はありますが、根本的に異なるデータベースです。あなたはMySQLのような関係を持つアプリを作ることができるので、コメント付きのブログやあなたの予約アプリケーションは問題ありません。たとえば、MongoIDを使用すると、 'embeds_many、embedded_in'(http://mongoid.org/docs/associations/)ではなく、 'references_many、referenced_in'メソッドを使用することになります。

2

私は、リレーショナルおよび非リレーショナルデータベース(MySQLの、モンゴ、POSTGRES、とRiakに)をミックスし、一致するいくつかのアプリを書きました。実際にはこれを行うのは特に難しいことではありません。また、さまざまなタイプのデータベース間でリレーションを作成するライブラリを作成しました(リップルモデルでは、ユーザーテーブルがMySQLにある "belongs_to:user"にできるようになりました)。

お客様のニーズに常に意思決定を促す必要があります。リレーショナルDBに保管しておくのがより快適で、正規化されていない可能性のあるレポート情報をMySQLテーブルにプッシュしようとすると、ユーザをMongoに詰め込む時間を無駄にしないでください。格納しているエンティティとそれらの間の関係を分析することで、実装が促進されます。

+0

私は同意します。非伝統的な(または複数の)データストアの複雑さを加えることは、非常に明確な利点がない限り、行われてはなりません。単純にする。 –