2016-11-22 11 views
2

私はこれら2つの間のトレードオフを解明しようとしています。CouchDb - 複数のビューを持つ1つのデザインドキュメントと分割ビューを持つ複数のデザインドキュメント

複数のビューを持つ1つのデザインドキュメントを使用すると、インデックス作成時に各ドキュメントが1回のパスで各ビューに渡されるため、更新が高速になるようです。

ただし、デザイン文書のビューを変更した場合、すべてのビューを更新する必要があるという点でトレードオフがあります。

これは正しいと思われますか?誰かがこの理解に追加できる何かがありますか?

答えて

5

より詳しい情報はhere見つけることができます:

ビューは、設計ドキュメントに編成されています。理論的には、データベースにできるだけ多くの設計文書を持ち、単一の設計文書に必要なだけ多くのビューを配置することができます。理論的には、各ビューはドキュメントごとに任意の数のb-treeノードを出力でき、map/reduceコードは任意に複雑になります。しかし、心に留めておく:各ビューは、同じデザインドキュメントのすべてのビューが一緒にインデックス化されているすべての文書の変更

  • 上で実行する必要がありますので、多くのビューを持つ

    • は、パフォーマンスを低下させます。 、変更追加、または任意のビューを除去すること、それらの全てが

    • (それぞれが独自のビューで発光入れよりも若干よりパフォーマンス)パフォーマンスが低下することに鑑みて、ドキュメントごとに多くの発するを持つインデックスを再作成する必要が複合マップ、コードを減らすにはnullが_sum以外のコードを減らす使用してパフォーマンス

    • を劣化以外の値、_count、_statsビルトイン発光性能

    • を分解する性能を低下させる
    01側として

    はCouchDBの点に注意してくださいとビューが更新されたときに正確に異なるCloudant:彼らが照会されたとき

    • CouchDBのアップデートビューいい加減に、それはあります。これにより、頻繁にアクセスされないビューに対する待機時間が長くなる可能性があります。
    • Cloudantはバックグラウンドで非同期にビューを更新します。これは、もはやアクセスされていないビューは依然としてシステムリソースを消費していることを意味します。
  • +1

    リンクされた記事の関連する別の見積もり:「各ビューを独自のデザインドキュメントに入れて、各ビューを別々に再インデックスできるようにする(ビューを削除しても、デザインドックに他のビュー!) " –

    関連する問題