CAP定理(整合性、可用性、パーティション:2つを選択)を持たない限り、いわゆる "NoSQL"データベースについて話すことはできません。MongoDB(Partition、Consistency)とCouchDB(Availability、Partition)の間で言う必要がある場合、最初に考える必要があるのは「正しいデータが必要ですか、それとも常時アクセスする必要がありますか?」です。
これらの新しいデータベースは、パーティション分割されるように作成されました。しかし、私がそうしないとどうなりますか?リレーショナルデータベースではなく、キー/値、列、ドキュメントなどのデータベースを持ち、サーバーインスタンスを1つだけ作成し、決してシャードしないのが非常にクールだと思ったらどうでしょうか。その場合、可用性と一貫性の両方はありませんか?MongoDBは何も複製する必要がないため、利用可能になります。また、CouchDBにはデータのソースが1つしかないため、かなり一貫性があります。
それで、その場合、MongoDBとCouchDBはユースケースの用語にほとんど違いがないことを意味しますか?もちろん、パフォーマンス、API、およびその他は除きますが、基本的に異なる2つの要件セットを持つよりも、PostgreSQLとMySQLを選択することに似ています。
私はここにいますか?複数のインスタンスを作成しないことで、APまたはCPデータベースをACデータベースに変更できますか?それとも私が行方不明になっているものがありますか?
逆に質問してみましょう。リレーショナルデータベースを使用し、MySQLを使用して、それをマスター/スレーブ構成にするとどうなりますか。ACIDトランザクションを使用しません書き込みをすぐにスレーブに同期する必要がある場合、それをCPデータベースにしませんか?そして、事前に定義された間隔で同期するとどうなりますか。クライアントがスレーブから古いデータを読み取っても問題はありません。それがAPデータベースになりませんか?これは、ACIDコンプライアンスを放棄しても、パーティション分割されたデータベースにリレーショナルモデルを使用できるという意味ではないでしょうか。
本質的には、基になるデータモデルよりも、CAP定理で放棄する準備ができているものについてのスケーラビリティですか?列、ドキュメント、キーバリューなど、リレーショナルモデルよりもスケーラビリティを高めるものはありますか?パーティショントレランスのためにゼロから設計されたリレーショナルデータベースを設計できますか?(たぶんそれはすでに存在します)。NoSQLデータベースをACIDに準拠させることはできますか?
申し訳ありませんが、多くの質問がありますが、最近NoSQLデータベースについて多くのことを読みました。それらを使用することの最大の利点は、パーティションCAPだけでなく、データの「形状」により良くフィットすることですACIDコンプライアンスを放棄します。結局のところ、誰もがデータを分割するのに必要なほど多くのデータを持っているわけではありません。データのパーティション分割について考える前に、リレーショナルモデルを使用しないことでパフォーマンス/スケーラビリティの利点がありますか?