MongoDBに関するいくつかの一般的なポイント
長所:
- スキーマレス。柔軟なスキーマがある場合、これはMongoDBのようなドキュメントストアに最適です。これをRDBMSでパフォーマンスの高い方法で実装することは困難です
- スケールアウトのしやすさ。レプリカセットを使用して読み取りをスケーリングします。シャーディング(自動バランシング)を使用して書き込みをスケーリングします。別のマシンを起動するだけで、離れて行くことができます。マシンを追加する=ワーキングセットを配布するためのRAMを追加する。
- コスト。もちろん、どのRDBMSにも依存しますが、MongoDBは無料で、Linuxで実行できるため、より安価なコモディティキットで実行するのに理想的です。
- データの値に応じて、必要な整合性のレベルを選択できます(たとえば、パフォーマンスが速い=MongoDBへの挿入を起動して忘れる、パフォーマンスが遅い=挿入が複数のノードに複製されるまで待ってから戻る)
短所:
- MongoDBのデータサイズは、通常、次の理由により大きくなります。各ドキュメントにはフィールド名が保存されています
- クエリによる柔軟性の低下(例:JOINなし)
- トランザクションのサポートなし-特定のアトミック操作が単一のドキュメントレベルでサポートされます
- 現時点では、Map / Reduce(たとえば、集計/データ分析を行うため)は問題ありませんが、驚くほど高速ではありません。したがって、それが必要な場合は、Hadoopのようなものをミックスに追加する必要があるかもしれません
- 入手可能な最新情報が少ない/急速に進化する製品
最近、自分の考えをブログに書きました MongoDBでSQLServerのバックグラウンドを持っている人として、それに興味があるかもしれません(上記は主なポイントのほんの一部です)。
「MongoDBはRDBMSよりも優れている」という答えを探しているなら、私見では答えはありません。 MongoDBのようなNoSQLテクノロジーは、RDBMSテクノロジーを補完する代替手段を提供します。一方は他方よりも特定の目的に適している可能性があるため、特定の要件に最適なものを呼び出すことがすべてです。