私は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が解決策ではない場合、私が考えることができるのは、ユーザーのためにカスタムテーブルを作成することです(ただし、複雑になる可能性があります)。
スケーラビリティ(複数のデータベースサーバー、冗長性、およびフェイルオーバー)が非常に重要であることも指摘したいと思います。
ここをクリックしてください:http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis – zerkms
あなたが記述したデータのリレーショナルデータモデルには、 IDによって異なるタイプ。 非常に一般的な意味では(私は直接使用することはお勧めしません)、主キーでアイテムに関連付けられた 'integer_values'、' text_values'などのテーブルを持つことができます。 –
実際には 'id'、' text'という一般化されたテーブルを使用していますが、テーブルには何百万もの行があり、報告することは不可能です。 NoSQLが私たちの状況のためのRDMSのより良い解決策でない限り、私はカスタムテーブルを作成することを考えています。 – Luke