2011-09-26 10 views
5

私はWebアプリケーションを開発するためにPHPを使用しています。私は私のRDMSとしてMySQLを使用しました。多くのことに対して、RDMSは機能し、他のものの中でも、正規化によって多くの問題を解決することができます。しかし、いくつかの状況はRDMSでうまく動作しないので、NoSQLのような他のソリューションが考案されています。MySQLではなくNoSQLを使用する必要がありますか?

NoSQLがどのような状況に適しているかはわかりません。異なるNoSQLオプションのいくつかはどのように異なるのですか、どの状況が他のものより優れているか、PHP 5.3以上(API賢明)と互換性がありますか?

私は使用できるNoSQLサーバーソフトウェアのリスト(RDMSとしてMySQLなど)を探していて、なぜ他のもの(Hybrid?)を使用するのか探しています。また、RDMSの代わりにNoSQLを使用して解決される問題の具体的な例。

最後に、私は、NoSQLのサーバは、このような状況でより良い仕事かどうかを知りたい:

各行は異なる列/フィールドを持つことができ、データのテーブルを。 1つの行には5つの列があり、別の行には5つの完全に異なる列があり、別の行には10があります。これらの行のうち、1つの1次自動増分数値IDがあります。何百万もの行。

(NoSQLはオブジェクトの集合でありテーブルの行ではないので完全であると仮定しています。A.I主キーについてはわかりません)

RDMSでは、最も使用されている列を作成してから、他の列を格納するためにPHPのserialize/unserializeを使用することがあります。しかし、これは非常に非効率的であり、この " 「birthday_pledge」と呼ばれる列のすべての行にSUMなどの「シリアライズされた配列」があります(各行が使用されています)。

私の状況ではすべて「列」は、主キー以外のカスタムとユーザー定義です。しかし、私はこれらの "列"でレポート(合計、フィルター、検索)を実行できる必要があります。だから、NoSQLが解決策ではない場合、私が考えることができるのは、ユーザーのためにカスタムテーブルを作成することです(ただし、複雑になる可能性があります)。

スケーラビリティ(複数のデータベースサーバー、冗長性、およびフェイルオーバー)が非常に重要であることも指摘したいと思います。

+0

ここをクリックしてください:http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis – zerkms

+0

あなたが記述したデータのリレーショナルデータモデルには、 IDによって異なるタイプ。 非常に一般的な意味では(私は直接使用することはお勧めしません)、主キーでアイテムに関連付けられた 'integer_values'、' text_values'などのテーブルを持つことができます。 –

+0

実際には 'id'、' text'という一般化されたテーブルを使用していますが、テーブルには何百万もの行があり、報告することは不可能です。 NoSQLが私たちの状況のた​​めのRDMSのより良い解決策でない限り、私はカスタムテーブルを作成することを考えています。 – Luke

答えて

1

http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis

この記事では、ほとんどに人気のNoSQLデータベースシステムとtheireプロ/コンを比較します。

希望すると助かります。

PS:あなたが探しているものはcouchdbかmongodbですが、私は間違っている可能性があります。

+1

リストにもっと含まれていれば素晴らしいだろう。私はこの助けとなる[視覚ガイド](http://blog.nahurst.com/visual-guide-to-nosql-systems)も見つけました。また、この[site](http:// nosql-database。org /)には、NoSQLデータベースの完全なリストがあります。 – Luke

関連する問題