web-dev-qa-db-ja.com

MongoDBとMySQL

以前は、Ruby on Rails MySQLでアプリをビルドしていました。

MongoDBは現在、ますます有名になっており、今では試してみようとしています。

問題は、MongoDBがどのように機能するかという根本的な理論がわからないことです(重要な場合はmongoid gemを使用しています)

だから、MySQL + ActiveRecordとmongoid gemによって生成されたモデルを使用した場合のパフォーマンスを比較したいと思います。

64
PeterWong

次のタイトルの記事: 実際にNoSQLを使用しているのは何ですか? は、NoSQLを使用することの長所と短所を提示するのに非常に優れています。

編集: http://blog.fatalmind.com/2011/05/13/choosing-nosql-for-the-right-reason/ ブログ投稿も読む

再編集:このトピックに関する最近の資料(2014年に公開)を見つけました。関連があると思われます: NoSQLの残りは何ですか?

56
cristian

基礎となる理論の多くは知りません。しかし、これは私が得たアドバイスです。複数のサーバーで実行する場合にのみMongoDBを使用してください。それが輝くときです。私の知る限り、NoSQLの動きは、複数のサーバー間でリレーショナルデータベースの負荷を分散することの苦痛のため、少なからず現れました。そのため、アプリケーションを複数のサーバーでホストしていない場合は、MySQLをお勧めします。

Doctrineプロジェクト の善良な人々は最近、このテーマについて非常に有用な ブログ投稿 を書きました。

8
Henrik

私がこれまで読んだものから...ここに私の見解があります。

標準SQLでは、機能が豊富であるためパフォーマンスが低下します。つまり、特にデータセット(必要に応じてテーブル/コレクション)で結合とトランザクションを実行できます。

これにより、アプリケーション開発者はアプリケーションの複雑さの一部をデータベースレイヤーにプッシュできます。これには、実証済みのテクノロジーに依存することにより、アプリケーションがデータの整合性やその他のACIDプロパティを心配する必要がないという利点があります。極端なスケーラビリティの欠如は、予想される時間制限内でアプリケーションの動作を維持できる限り、ほとんどすべてのプロジェクトで機能します。これにより、高性能/高価なリレーショナルデータベースシステムを購入しなければならない場合があります。

一方、Mongo DBは、リレーショナルデータベースに関連する固有の複雑さの多くを意図的に除外し、より優れたスケーラブルなパフォーマンスを可能にします。

このアプローチにより、アプリケーション開発者はリレーショナル機能の欠如を回避するためにアプリケーションを再設計するように強制されます。 MongoDBでは、ACIDプロパティのデータ要件に応じて、必要に応じてアプリケーションをステップアップして処理する必要があることに注意してください。

4
Imhou