[解決済み】データベースとしてのNoSQL(MongoDB) vs Lucene(またはSolr)【クローズド
質問
ドキュメントベースのデータベースをベースにしたNoSQLの動きが活発になってきているので、最近MongoDBを見てみました。 Luceneがやっているように(そしてSolrのユーザーも)、アイテムを"Documents"として扱う方法に著しい類似性があることに気づきました。
そこで、質問です。 なぜ、Lucene(またはSolr)ではなくNoSQL(MongoDB、Cassandra、CouchDBなど)をquot;database"として使用したいのですか?
私が(そして他の人もそうだと思いますが)答えを求めているのは、それらを深く掘り下げて比較することです。 リレーショナル・データベースの議論は、目的が異なるので、すべてスキップしてしまいましょう。
Luceneは、強力な検索システムやウェイトシステムなど、いくつかの重大な利点を提供します。 Solrのファセットは言うまでもありません(SolrはもうすぐLuceneに統合されます、イェーイ!)。 LuceneのドキュメントをIDの保存に使用し、MongoDBのようにドキュメントにアクセスすることができます。 Solrと組み合わせれば、Webサービスベースの負荷分散ソリューションが完成します。
MongoDBと同様のデータ保存とスケーラビリティについて話すときに、VelocityやMemCachedなどのアウトオブプロセスキャッシュプロバイダーを比較することもできます。
MongoDB周りの制約を見るとMemCachedを使うことを思い出すが、MicrosoftのVelocityを使えばMongoDBよりもグルーピングやリスト収集の力がある(と思う)。 メモリにデータをキャッシュする以上の速度とスケーラビリティは得られない。 Luceneにだってメモリプロバイダはあるんだし。
MongoDB(およびその他)には、APIの使いやすさなど、いくつかの利点があります。 ドキュメントを新規作成し、IDを作成し、それを保存する。 これで完了です。 簡単でいいですね。
どのように解決するのですか?
これは素晴らしい質問で、私もずいぶん考えさせられました。私が学んだことをまとめます。
-
MongoDBの代わりにLucene/Solrを使うことは、ほとんどすべての場面で簡単にできますが、その逆はできません。グラント・インガーソルの の記事でまとめています。
-
MongoDBなどは、検索やファセットを必要としない用途に使えるようです。RDBMSの世界から脱却したプログラマーにとっては、よりシンプルで間違いなく移行しやすいと思われる。LuceneやSolrは、慣れていない限り、学習曲線が急です。
-
Lucene/Solrをデータストアとして使用する例はあまり多くありませんが、Guardianがいくつか前進しており、これをまとめた素晴らしい記事があります。 スライドデッキ しかし、彼らはあまりにも完全にSolrの流行に飛び乗ると"調査"SolrとCouchDBを組み合わせる上で非妥協的である。
-
最後に、私たちの経験をお話します。残念ながら、ビジネスケースについて多くを明らかにすることはできません。私たちは、数TBのデータを扱う、ほぼリアルタイムのアプリケーションです。様々な組み合わせを調査した結果、Solrにこだわることにしました。これまでのところ(6ヶ月間)後悔はしていませんし、他に乗り換える理由もないと思っています。
まとめ:検索を必要としない場合、Mongoはシンプルかつパワフルなアプローチを提供します。しかし、検索が重要であれば、1つの技術(Solr/Lucene)にこだわり、それを最適化したほうがよいでしょう - 可動部品が少ないので。
私の2セントがお役に立てれば幸いです。
関連
-
[解決済み】MongoError: 最初の接続でサーバー [localhost:27017] への接続に失敗しました。
-
[解決済み] E: mongodb-org パッケージが見つかりません。
-
[解決済み] MongoDBでフィールドが存在することを確認する
-
[解決済み] ネストされた配列の中で、マッチしたサブドキュメントの要素のみを返す
-
CentOS7に新規インストールしたMongodbの初期設定
-
[解決済み] MongoDBに "like "を使ってクエリを実行する方法
-
[解決済み] pandasを使った "大量データ "ワークフロー【終了しました
-
[解決済み] コマンドラインからMongoDBデータベースを削除する方法を教えてください。
-
[解決済み】mongoコンソールでObjectIdを使用してオブジェクトを検索する方法は?
-
[解決済み】MongoDBでデータのバージョニングを実装する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Mongorestore はファイル "db/collection.bson" をどうしたらいいかわからないため、スキップします。
-
[解決済み] Mongodbでキーに基づいた重複を削除する方法は?
-
[解決済み] Mongo Restart Error -- /var/run/mongodb/mongod.pid が存在する
-
[解決済み] mongodb Failed: error connecting to db server: no reachable servers
-
CentOS7に新規インストールしたMongodbの初期設定
-
[解決済み] MongoDB: 1つのコマンドで複数のドキュメントを更新するには?
-
[解決済み】シェルスクリプトでmongoのコマンドを実行するには?
-
[解決済み】Dockerコンテナのディスク使用量を分析する方法
-
[解決済み】Node.js Mongoose.js の文字列を ObjectId に変換する関数
-
[解決済み】MongoDB コレクションの変更をリッスンする方法は?