2015-02-13 12 views
10

Ich lerne Couchbase, jetzt auf Version 3.xCouchbase - Wann sollte ich N1QL vs Ansichten verwenden?

Mein Zweifel ist, wenn ich eine N1QL Abfrage vs einer Ansicht Abfrage verwenden sollte?

Und gibt es Leistungsunterschiede zwischen ihnen?


Anmerkung: Ich habe eine Situation:

A Bucket mit zwei Dokumenttypen für meine Reisen App: Strecke und Stadt

A Strecke doc hält die Informationen über die Reiseroute und ein Array von Stadt ids th Da ist ein Teil davon, dann hält ein anderer Doc die Informationen der Stadt (jede Stadt hat ihr eigenes Dokument). Beispiel:

//Bucket : "Traveling App" 

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

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

Wenn ich für eine bestimmte Fahrtroute abfragen, sollte ich tun, um eine N1QL Abfrage oder eine Ansicht Abfrage?

Weil ich zuerst die Strecke doc zu öffnen haben würde, bekommen die Städte Array als erhalten jede Stadt doc.

Und ich denke, diese Architektur wäre am besten, weil einige Routen sehr wenige Städte haben können und andere viele Städte haben können.

Antwort

6

N1QL sieht vielversprechend für Ihre Daten aus. Auch wenn es sich, wie ein anderes Poster zeigt, in der Entwicklervorschau lohnt. Sie können NEST traveling_app mit sich selbst alle Stadt docs 'verschachtelt' mit jeder Strecke zu bekommen:

SELECT r.name, c VON traveling_app r NEST traveling_app c ON KEYS r.cities;

zu erhalten, um die Städtenamen für eine bestimmte Route sagen, nehmen Sie den traveling_app mit sich für die Route Städte als Schlüssel verwenden:

SELECT c.name als city_name VON traveling_app r traveling_app c ON KEYS JOIN r.cities WHERE r.name = "Das große Abenteuer";

Diese Abfragen funktionieren gleich, unabhängig davon, wie viele Städte eine Route hat.

1

N1QL bietet alle Funktionen, die Sie benötigen, um die richtigen Routen zu erhalten. N1QL kann das erneute Verschachteln der Arrays durchführen, indem es nach der Route sucht, nach der Sie suchen, und dann diese beiden Arten von Dokumenten VERBINDEN. Also, N1QL ist der Weg zu gehen.

+3

Hinweis aber N1QL ist noch nicht freigegeben. Es ist in der Entwicklervorschau. –