10

現在バージョン 3.x の Couchbase を学習しています。

私の疑問は、いつN1QLクエリとビュークエリを使用する必要があるかということです。

そして、それらの間にパフォーマンスの違いはありますか?


注:状況があります:

旅行アプリ用の2 つのドキュメント タイプバケット: RouteCity

Route doc は移動ルートに関する情報とその一部である都市IDの配列を保持し、別の doc は都市の情報を保持します (各都市には独自の doc があります)。例:

//Bucket : "Traveling App"

{
  "type" : "route"
  "name" : "The Great Adventure",
  "cities" : ["234", "h4345", "h42da"]
}

{
  "type" : "city",
  "name" : "Little Town",
  "UID"  : "234"
}

特定の移動ルートを照会する場合、N1QLクエリまたはViewクエリを実行する必要がありますか?

最初にRouteドキュメントを開く必要があるため、各Cityドキュメントを取得するよりも、 citys 配列を取得します。

そして、このアーキテクチャが最適だと思います。ルートによっては都市が非常に少ない場合もあれば、多くの都市が存在する場合もあるためです。

4

3 に答える 3

5

N1QL はあなたのデータにとって有望に見えます。たとえ別のポスターが指摘しているように、開発者プレビューでは、調査する価値があります. travelling_app をそれ自体でネストして、各ルートですべての市のドキュメントを「ネスト」することができます。

SELECT r.name, c FROM travelling_app r NEST travelling_app c ON KEYS r.cities;

特定のルートの都市名を取得するには、ルートの都市をキーとして使用して、travel_app をそれ自体に結合します。

SELECT c.name as city_name FROM travelling_app r JOIN travelling_app c ON KEYS r.cities WHERE r.name = "The Great Adventure";

これらのクエリは、ルートに含まれる都市の数に関係なく、同じように動作します。

于 2015-02-16T11:29:05.843 に答える
1

例: ある都市にある可能性のあるすべてのルートを見つけたい場合は、クエリを実行する前に常に事前計算され、準備が整っているビューが必要です。

インデックス作成を介して同じクエリを実行すると、応答時間が長くなります。その他のドキュメントは、http: //developer.couchbase.com/documentation/server/4.0/architecture/gsi-versus-views.htmlにあります。

于 2016-01-27T10:22:59.597 に答える