sql >> データベース >  >> RDS >> Mysql

Solr検索インデックスをデータベースとして使用する-これは間違っていますか?

    はい、SOLRをデータベースとして使用できますが、いくつかの非常に重大な注意事項があります:

    1. httpを介したSOLRの最も一般的なアクセスパターンは、バッチクエリに特にうまく応答しません。さらに、SOLRはデータをストリーミングしないため、一度に数百万のレコードを遅延反復することはできません。 これは、SOLRを使用して大規模なデータアクセスパターンを設計する場合は、非常に慎重に行う必要があることを意味します。

    2. SOLRのパフォーマンスは水平方向(より多くのマシン、より多くのコアなど)および垂直方向(より多くのRAM、より優れたマシンなど)にスケーリングしますが、そのクエリ機能は成熟したRDBMSのクエリ機能と比較して大幅に制限されています 。とはいえ、field statsクエリのように、非常に便利な優れた関数がいくつかあります。

    3. リレーショナルデータベースの使用に慣れている開発者は、SOLRがクエリでフィルターを使用する方法が原因で、SOLRパラダイムで同じDAOデザインパターンを使用すると問題が発生することがよくあります。 大規模なクエリまたはステートフルな変更の一部にSOLRを使用するアプリケーションを構築するための適切なアプローチを開発するための学習曲線があります

    4. 多くの高度なWebフレームワーク(Ruby、Hibernateなど)が提供する高度なセッション管理とステートフルエンティティを可能にする「エンタープライズ」ツールは、完全にウィンドウから外す必要があります

    5. リレーショナルデータベースは、複雑なデータと関係を処理することを目的としています。したがって、リレーショナルデータベースには、最先端のメトリックと自動分析ツールが付属しています。 SOLRでは、そのようなツールを作成し、手動で多くのストレステストを行っていることに気づきました。これは時間の浪費になる可能性があります

    6. 参加:これは大きなキラーです。リレーショナルデータベースは、単純な述語に基づいてタプルを結合するビューとクエリを構築および最適化するためのメソッドをサポートします。 SOLRには、インデックス間でデータを結合するための堅牢な方法はありません。

    7. 復元力:高可用性を実現するために、SolrCloudはその下にある分散ファイルシステム(HCFSなど)を使用します。このモデルは、通常、スレーブとマスター、またはRAIDなどを使用して復元力を実行するリレーショナルデータベースのモデルとはまったく異なります。したがって、クラウドでスケーラブルで耐性を持たせたい場合は、SOLRが必要とする復元力のあるインフラストラクチャーを提供する準備ができている必要があります。

    そうは言っても、特定のタスクでSOLRには明らかな利点がたくさんあります:( http://wikiを参照してください。 apache.org/solr/WhyUseSolr )-緩いクエリは実行がはるかに簡単で、意味のある結果を返します。インデックス作成はデフォルトで行われるため、ほとんどの任意のクエリは非常に効果的に実行されます(RDBMSとは異なり、事後に最適化および非正規化する必要があります)。

    結論: SOLRをRDBMSとして使用できますが、(私が持っているように)最終的には「無料の昼食なし」であり、超クールなluceneテキスト検索と高性能のメモリ内インデックス作成のコスト削減に気付くかもしれません。多くの場合、柔軟性の低下と新しいデータアクセスワークフローの採用によって費用が発生します。



    1. MySQLのindex_lengthはバイト単位ですか?

    2. Oracleでネストされたテーブルをデータベースオブジェクトとして作成する方法

    3. mysqlテーブルから特定の行を選択します

    4. postgresを使用してテーブルの2番目または3番目の列の後にテーブルに新しい列を追加するにはどうすればよいですか?