web-dev-qa-db-ja.com

SQL(MySQL)vs NoSQL(CouchDB)

私は、大量のデータを保存する必要がある非常にスケーラブルなアプリケーションを設計しています。たとえば、ユーザーに関する多くの情報や、多くのメッセージ、コメントなどを保存します。以前はMySQLを使用していましたが、今ではcouchdbなど、SQL以外の新しいものを試してみたいと思っています。

これについての考えやガイダンスはありますか?

120
christophmccann

最近の Dare Obasanjoからのブログ投稿 からの引用です。

SQLデータベースは自動送信のようなもので、NoSQLデータベースは手動送信のようなものです。 NoSQLに切り替えると、リレーショナルデータベースシステムでシステムが自動的に処理する多くの作業の責任を負うことになります。オートマチックトランスミッションよりマニュアルを選択した場合に起こることと同様です。第二に、NoSQLを使用すると、データベース層のリレーショナルデータベースによって行われる多くの整合性チェックを排除することにより、システムのパフォーマンスを向上させることができます。繰り返しますが、これは、オートマチックトランスミッション車に対してマニュアルトランスミッションを運転することで、車からより多くのパフォーマンスを得る方法に似ています。

しかし、最も注目すべき類似点は、ほとんどの人が手動変速機の利点を実際に活用できないのと同じことです。なぜなら、私たちの運転の大部分は職場への往復の交通に座っているからです。ほとんどのサイトはGoogleやFacebookの規模ではないため、BigtableやCassandraは必要ありません。

少なくともある程度の経験があるMySQLから、経験のないCouchDBへの切り替えのみを追加できるのは、まったく新しい問題に対処し、さまざまな概念とベストプラクティスを学ぶ必要があることを意味します。それ自体は素晴らしいですが(私は自宅でMongoDBで遊んでおり、とても気に入っています)、そのプロジェクトの作業を見積もるときに計算する必要があるコストになり、未知のメリットを約束しながら未知のリスクをもたらします。あなたが知らない技術に基づいているなら、あなたがプロジェクトを時間通りにそしてあなたが成功したい/必要とする品質で行うことができるかどうかを判断するのは非常に難しいでしょう。

さて、もしあなたがチームにNoSQL分野の専門家がいるなら、ぜひそれをよく見てください。しかし、チームに関する専門知識がなければ、新しい商用プロジェクトのためにNoSQLに飛び乗らないでください。

Update:開始した暖炉にガソリンを投げ入れるために、SQLキャンプの人々からの2つの興味深い記事があります。 :-)

NoSQLが死ぬのを待つことができません (元の記事はなくなりました。ここに コピー があります)
これは反NoSQLピースではありませんが、NoSQLマインドセットと戦う
Update:これはNoSQLに関する興味深い記事です
NoSQLの意味を理解する

180
Franci Penov

今日の実際のソリューションは、スケールアウトまたはシャーディングを中心に展開しているようです。すべての最新のデータベース(NoSQLおよびNewSQL)は、アプリケーションにシャーディングコードなどを必要とせずに、データベース層ですぐに水平スケーリングをサポートします。

残念ながら、信頼できる古き良きMySQLの場合、シャーディングは「すぐに」提供されません。 ScaleBase (免責事項:私はそこで働いています)は、必要に応じて「自動シャーディングマシン」である完全なスケールアウトソリューションのメーカーです。 ScaleBaeはデータとSQLストリームを分析し、DBノード間でデータを分割し、実行時に集約するため、必要はありません!そして、それは無料でダウンロードできます。

誤解しないでください。NoSQLは素晴らしいです。新しいものであり、新しいものはより多くの選択肢であり、選択肢は常に良いです!!しかし、NoSQLを選択することには代償が伴いますので、必ず支払ってください...

ここで、MySQL、NoSQLに関するいくつかのデータを見ることができます: http://www.scalebase.com/extreme-scalability-with-mongodb-and-mysql-part-1-auto-sharding =

お役に立てば幸いです。

3
Doron Levari

最適なオプションの1つは、スケーラビリティをサポートするMongoDB(NOSql dB)を選択することです。SQLの行やテーブルとは異なり、大量のデータをドキュメントの形式で大量に保存します。プライマリdbサーバーをベースとする複数のサーバーを維持するデータ保証を確保するため。言語に依存しません。使いやすい

0
Kiranmai Harshi