Zum Inhalt springen

Couchbase Verbindungsdetails

Einführung

Connector-Version

Diese Dokumentation basiert auf Version 23.0.8803 des Connectors.

Erste Schritte

Unterstützung der Couchbase-Version

Der Couchbase Konnektor modelliert Couchbase-Dokumente in einem Bucket als Tabellen in einer relationalen Datenbank; stellt eine Verbindung zu Couchbase Server-Versionen 4.0 und höher, Enterprise Edition oder Community Edition her.

Herstellen einer Verbindung

Mit Couchbase verbinden

Um eine Verbindung zu Daten herzustellen, setzen Sie Server-Eigenschaft auf den Hostnamen oder die IP-Adresse des/der Couchbase-Server(s), bei dem/denen Sie sich authentifizieren.

Wenn Ihr Couchbase-Server für die Verwendung von SSL konfiguriert ist, können Sie es aktivieren, indem Sie entweder eine https URL für verwenden Server (wie https://couchbase.server) oder durch Setzen der UseSSL Eigentum an True.

Couchbase Analytics

Standardmäßig stellt der Connector eine Verbindung zum N1QL Query-Dienst her. Um eine Verbindung zum Couchbase Analytics-Dienst herzustellen, müssen Sie außerdem Folgendes festlegen: CouchbaseService Eigentum an Analytics.

Couchbase Cloud

Legen Sie Folgendes fest, um eine Verbindung mit Couchbase Cloud herzustellen:

  • AuthScheme: Setzen Sie dies auf Basic.
  • ConnectionMode: Setzen Sie dies auf Cloud.
  • DNSServer: Legen Sie hier einen DNS-Server fest. In den meisten Fällen sollte dies ein öffentlicher DNS-Dienst sein wie 1.1.1.1 oder 8.8.8.8.
  • SSLServerCert: Legen Sie hier das TLS/SSL-Zertifikat fest, das vom Server akzeptiert werden soll. Alle anderen Zertifikate, denen der Computer nicht vertraut, werden abgelehnt. Alternativ können Sie „*“ festlegen, um alle Zertifikate zu akzeptieren.

Authentifizieren bei Couchbase

Der Connector unterstützt mehrere Formen der Authentifizierung. Couchbase Cloud akzeptiert nur die Standardauthentifizierung, während Couchbase Server Standardauthentifizierung, Clientzertifikate und Anmeldeinformationsdateien akzeptiert.

Standardauthentifizierung

Um sich mit der Standardauthentifizierung zu authentifizieren, legen Sie Folgendes fest:

  • AuthScheme: Setzen Sie dies auf Basic.
  • User: Der Benutzer authentifiziert sich bei Couchbase.
  • Password: Das Passwort des Benutzers, der sich bei Couchbase authentifiziert.
Client-Zertifikate

Der Connector unterstützt die Authentifizierung mit Client-Zertifikaten, wenn SSL aktiviert ist. Um die Client-Zertifikat-Authentifizierung zu verwenden, legen Sie die folgenden Eigenschaften fest:

  • AuthScheme: Setzen Sie dies auf SSLCertificate.
  • SSLClientCertType: Der Typ des Client-Zertifikats, der innerhalb von festgelegt wurde SSLClientCert.
  • SSLClientCert: Das Client-Zertifikat im durch angegebenen Format SSLClientCertType.
  • SSLClientCertPassword (optional): Das Passwort des Client-Zertifikats, sofern es verschlüsselt ist.
  • SSLClientCertSubject (optional): Der Betreff des Client-Zertifikats, das standardmäßig das erste im Speicher gefundene Zertifikat ist. Dies ist erforderlich, wenn im Zertifikatspeicher mehr als ein Zertifikat verfügbar ist.
Anmeldeinformationsdatei

Sie können sich auch mithilfe einer Anmeldeinformationsdatei authentifizieren, die mehrere Logins enthält. Dies ist für die Verwendung in älteren Versionen enthalten und wird nicht empfohlen, wenn Sie eine Verbindung zu einem Couchbase-Server herstellen, der rollenbasierte Authentifizierung unterstützt.

  • AuthScheme: Setzen Sie dies auf CredentialsFile.
  • CredentialsFile: Der Pfad zur Anmeldeinformationsdatei. Siehe Couchbase-Dokumentation für weitere Informationen zum Format dieser Datei.

Schemaerkennung und -indexierung

Schemaerkennung und Indizes

Der Connector bietet verschiedene Modi zum Bestimmen von Schemata und Indizes. Nachfolgend finden Sie einige Beispielkonfigurationen.

TableSupport=Keine

Deaktiviert alle Abfragen, die Tabellen suchen und Spalten ermitteln. Es werden nur die Tabellen gemeldet, die in den Schema definiert sind. TypeDetectionScheme wird ignoriert. Der Treiber verwendet nur die Schema, die sich im Verzeichnis „Location“ befinden. Wenn Sie diese Option ohne Schema verwenden, sind keine Tabellen verfügbar.

TableSupport=Basic

SELECT `Eimer`, `Umfang`, name FROM system:keyspaces

Der Treiber erkennt die verfügbaren Buckets, sucht jedoch nicht darin nach untergeordneten Tabellen. Dies wird empfohlen, wenn Sie entweder die Zeit für die Schema verkürzen möchten oder wenn Ihre Buckets keine Primärindizes haben.

TableSupport=Voll

SELECT `Reisebeispiel`.* FROM `Reisebeispiel` LIMIT 100

Der Treiber erkennt die verfügbaren Buckets und sucht in jedem dieser Buckets nach untergeordneten Tabellen. Dies bietet die flexibelste Möglichkeit, auf verschachtelte Daten zuzugreifen, erfordert jedoch, dass jeder Bucket auf Ihrem Server über Primärindizes verfügt.

TypeDetectionScheme=Keine

Der Treiber führt keine Geschmackserkennung oder Spaltentyperkennung durch. Spalten werden immer als VARCHAR gemeldet. Untergeordnete Tabellen werden je nach TableSupport-Einstellung weiterhin gescannt.

TypeDetectionScheme=RowScan

Der Treiber liest eine Auswahl von Dokumenten aus einem Bucket und ermittelt den Datentyp. Er führt keine Geschmackserkennung durch.

TypeDetectionScheme=Ableiten

Dies verwendet die NQ1QL INFER-Anweisung, um zu bestimmen, welche Tabellen und Spalten vorhanden sind. Dies ermöglicht eine flexiblere Geschmackserkennung als DocType, ist aber nur für Couchbase Enterprise verfügbar.

TypeDetectionScheme=Dokumenttyp

SELECT META(`travel-sample`).id AS `Document.Id`, `travel-sample`.* FROM `travel-sample`

Dies erkennt Tabellen, indem es jeden Bucket überprüft und nach unterschiedlichen Werten des Felds „docType“ in den Dokumenten sucht. Wenn beispielsweise der Bucket „beer-sample“ Dokumente mit „docType“ = „Brauerei“ und „docType“ = „Bier“ enthält, werden drei Tabellen generiert: „bee-sample“, „beer-sample.brewery“ und „beer-sample.beer“. Wie bei RowScan wird hier eine Stichprobe der Dokumente in jeder Geschmacksrichtung gescannt und der Datentyp für jedes Feld bestimmt.

NoSQL-Datenbank

Couchbase ist eine schemafreie Dokumentdatenbank, die hohe Leistung, Verfügbarkeit und Skalierbarkeit bietet. Diese Funktionen sind nicht unbedingt inkompatibel mit einer standardkonformen Abfrage wie SQL-92.

Der Connector modelliert die schemafreien Couchbase Objekte in relationale Tabellen und übersetzt SQL-Abfragen in N1QL- oder SQL++-Abfragen (Analytics), um die angeforderten Daten abzurufen. In diesem Abschnitt zeigen wir verschiedene Schemata, die der Connector bietet, um die Lücke zwischen relationalem SQL und einer Dokumentdatenbank zu schließen.

Automatische Schemaerkennung

Wenn der Connector zum ersten Mal eine Verbindung zu Couchbase herstellt, öffnet er jeden Bucket und scannt eine konfigurierbare Anzahl von Zeilen aus diesem Bucket. Er verwendet diese Zeilen, um die Spalten in diesem Bucket und ihre Datentypen zu bestimmen, sowie um zu bestimmen, wie aromatisierte und untergeordnete Tabellen für alle Arrays in diesen Dokumenten erstellt werden. Für Couchbase Enterprise Version 4.5.1 und höher kann der Connector auch so konfiguriert werden, dass er den INFER-Befehl verwendet, wenn TypeDetectionScheme ist auf INFER eingestellt. Dadurch kann der Connector eine genauere Spaltenliste für den Bucket erhalten und komplexere Varianten erkennen.

Bei Verwendung des Analytics-Dienstes führt der Connector nur die Erkennung von Spalten und untergeordneten Tabellen durch. Aromatisierte Tabellen werden von Couchbase selbst mithilfe von Schattendatensätzen bereitgestellt. Außerdem bietet der Analytics-Modus derzeit keine INFER-Unterstützung, sodass nur Zeilenscans unterstützt werden.

Weitere Einzelheiten finden Sie unter Automatische Schemaerkennung, um zu sehen, wie aromatisierte Tabellen und untergeordnete Tabellen aus Couchbase-Daten modelliert werden. Einstellung NumericStrings wird ebenfalls empfohlen, da es Typerkennungsprobleme bei bestimmten Arten von Textdaten vermeiden kann.

Benutzerdefinierte Schemadefinitionen

Optional können Sie Benutzerdefinierte Schemadefinitionen verwenden, um die von Ihnen gewählte relationale Struktur auf ein Couchbase-Objekt zu projizieren. Auf diese Weise können Sie die von Ihnen gewählten Spaltennamen, deren Datentypen und die Speicherorte ihrer Werte im Couchbase-Dokument definieren.

Abfragezuordnung

Siehe Query Mapping für weitere Einzelheiten dazu, wie verschiedene N1QL- und SQL++-Operationen als SQL dargestellt werden.

Vertikale Abflachung

Siehe Vertikale Abflachung für weitere Einzelheiten dazu, wie Arrays und Objekte in Felder abgebildet werden.

JSON-Funktionen

Siehe JSON-Funktionen für weitere Einzelheiten zum Extrahieren von Daten aus Roh-JSON-Zeichenfolgen.

Automatische Schemaerkennung

Untergeordnete Tabellen

Wenn die Dokumente in einem Bucket Felder mit Arrays enthalten, stellt der Connector diese Felder zusätzlich zu ihrer Anzeige als JSON-Aggregate in der Haupttabelle als eigene Tabellen bereit. Die Struktur dieser untergeordneten Tabellen hängt davon ab, ob das Array Objekte oder primitive Werte enthält.

Array-Untertabellen

Wenn die Arrays primitive Werte wie Zahlen oder Zeichenfolgen enthalten, hat die untergeordnete Tabelle nur zwei Spalten: eine mit dem Namen „Document.Id“, die den Primärschlüssel des Dokuments darstellt, das das Array enthält, und eine mit dem Namen „value“, die den Wert innerhalb des Arrays enthält. Wenn der Bucket „Games“ beispielsweise diese Dokumente enthält:

/* Primary key "1" */
{
  "scores": [1,2,3]
}

/* Primary key "2" */
{
  "scores": [4,5,6]
}

Der Connector erstellt eine Tabelle namens „Gamescores“, die diese Zeilen enthält:

Document.Id value
1 1
1 2
1 3
2 4
2 5
2 6
Untergeordnete Objekttabellen

Wenn die Arrays Objekte enthalten, enthält die untergeordnete Tabelle eine Spalte für jedes Feld, das in den Objekten vorkommt, sowie eine Spalte „Document.Id“, die den Primärschlüssel des Dokuments enthält, das das Array enthält. Wenn der Bucket „Games“ beispielsweise diese Dokumente enthält:

/* Primary key "1" */
{
  "moves": [
    {"piece": "pawn", "square": "c3"},
    {"piece": "rook", "square": "d5"}
  ]
}

/* Primary key "2" */
{
  "moves": [
    {"piece": "knight", "square": "f1"},
    {"piece": "bishop", "square": "e4"}
  ]
}

Der Connector erstellt eine Tabelle namens „Games_moves“, die folgende Zeilen enthält:

Document.Id piece square
1 Bauer c3
1 Turm d5
2 Springer f1
2 Bischofsamt e4
Neuer ChildJoinsMode

Beachten Sie, dass das obige Datenmodell nicht vollständig relational ist, was wichtige Einschränkungen für Anwendungsfälle mit komplexen JOINs oder DML-Operationen an untergeordneten Tabellen mit sich bringt. Das NewChildJoinsMode Die Verbindungseigenschaft stellt ein alternatives Datenmodell bereit, das diese Einschränkungen vermeidet. Weitere Einzelheiten finden Sie auf der entsprechenden Seite im Abschnitt „Verbindungseigenschaft“ der Dokumentation.

Geschmackstabellen

Der Connector kann auch erkennen, wenn sich mehrere Dokumenttypen im selben Bucket befinden, solange TypeDetectionScheme ist auf Infer oder DocType eingestellt und CouchbaseService ist auf N1QL eingestellt. Diese verschiedenen Dokumenttypen werden als eigene Tabellen angezeigt, die nur die entsprechenden Zeilen enthalten.

Beispielsweise enthält der Bucket „Spiele“ Dokumente, die den „Typ“-Wert „Schach“ oder „Fußball“ haben:

/* Primary key "1" */
{
  "type": "chess",
  "result": "stalemate"
}

/* Primary key "2" */
{
  "type": "chess",
  "result": "black win"
}

/* Primary key "3" */
{
  "type": "football",
  "score": 23
}

/* Primary key "4" */
{
  "type": "football",
  "score": 18
}

Der Connector erstellt drei Tabellen für diesen Bucket: eine mit dem Namen „Games“, die alle Dokumente enthält:

Document.Id result score type
1 Patt NULL Schach
2 Schwarz gewinnt NULL Schach
3 NULL 23 Fußball
4 NULL 18 Fußball

Eines mit dem Namen „Games.chess“, das nur Dokumente mit dem Typ „Schach“ enthält:

Document.Id Ergebnis Typ
1 Patt Schach
2 Schwarz gewinnt Schach

Und eine mit dem Namen „Games.football“, die nur Dokumente mit dem Typ „football“ enthält:

Document.Id score type
3 23 Fußball
4 18 Fußball

Beachten Sie, dass der Connector keine Spalten in eine Tabelle mit einer bestimmten Geschmacksrichtung einschließt, die in den Dokumenten dieser Geschmacksrichtung nicht definiert sind. Obwohl beispielsweise sowohl die Spalten „Ergebnis“ als auch „Punktzahl“ in der Basistabelle enthalten sind, enthält „Games.chess“ nur „Ergebnis“ und „Games.football“ nur „Punktzahl“.

Aromatisierte Kindertische

Es ist auch möglich, dass eine Tabelle mit Geschmacksrichtung Arrays enthält, die zu eigenen untergeordneten Tabellen werden. Wenn der Bucket „Spiele“ beispielsweise diese Dokumente enthält:

/* Primary key "1" */
{
  "type": "chess",
  "results": ["stalemate", "white win"]
}

/* Primary key "2" */
{
  "type": "chess",
  "results": ["black win", "stalemate"]
}

/* Primary key "3" */
{
  "type": "football",
  "scores": [23, 12]
}

/* Primary key "4" */
{
  "type": "football",
  "scores": [18, 36]
}

Dann generiert der Connector diese Tabellen:

Tabellenname Untergeordnetes Feld Geschmacksbedingung
Spiele
Spielergebnisse Ergebnisse
Spielergebnisse Ergebnisse
Games.chess "Typ" = "Schach"
Games.chess_results Ergebnisse "Typ" = "Schach"
Spiele.Fußball "Typ" = "Fußball"
Games.football_scores Ergebnisse "Typ" = "Fußball"

Abfragezuordnung

Der Connector ordnet SQL-92-kompatible Abfragen entsprechenden N1QL- oder SQL++-Abfragen zu. Obwohl die folgende Zuordnung nicht vollständig ist, sollte sie Ihnen einen Eindruck von den allgemeinen Mustern vermitteln, die der Connector während dieser Transformation verwendet.

SELECT-Abfragen

Die SELECT-Anweisungen werden wie unten gezeigt in die entsprechende N1QL SELECT Abfrage übersetzt. Aufgrund der Ähnlichkeiten zwischen SQL-92 und N1QL sind viele Abfragen einfach direkte Übersetzungen.

Ein wesentlicher Unterschied besteht darin, dass, wenn das Schema für einen bestimmten Couchbase Bucket im Connector vorhanden ist, eine SELECT *- Abfrage übersetzt wird, um die einzelnen Felder im Bucket direkt auszuwählen. Der Connector erstellt außerdem automatisch ein Document.IdSpalte basierend auf dem Primärschlüssel jedes Dokuments im Bucket.

SQL-Abfrage N1QL-Abfrage
SELECT * FROM Benutzer SELECT META(`users`).id AS `id`, ... AUS `users`
SELECT \[Document.Id\], status FROM users SELECT META(`users`).id AS `Document.Id`, `users`.` status` AUS `users`
SELECT * FROM Benutzer WHERE Status = 'A' OR Alter = 50 SELECT META(`users`).id AS `id`, ... AUS `users` WO TOSTRING(`users`.` status`) = "A" ODER TONUMBER(`users`.`age`) = 50
SELECT * FROM Benutzer WHERE Name LIKE 'A%' SELECT META(`users`).id AS `id`, ... AUS `users` WO TOSTRING(`users`.` name`) WIE "A%"
SELECT * FROM Benutzer WHERE Status = 'A' ORDER BY [Document.Id] DESC SELECT META(`users`).id AS `id`, ... AUS `users` WO TOSTRING(`users`.` status`) = "A" ORDER BY META(`users`).id DESC
SELECT * FROM Benutzer WHERE Status IN ('A', 'B') SELECT META(`users`).id, ... VON `users` WO TOSTRING(`users`.` status`) IN ["A", "B"]

Beachten Sie, dass Bedingungen zusätzliche Typfunktionen enthalten können, wenn der Connector erkennt, dass eine Typkonvertierung erforderlich sein könnte. Sie können diese Typkonvertierungen mit deaktivieren StrictComparison-Eigenschaft. Der Übersichtlichkeit halber werden die restlichen N1QL-Beispiele ohne diese zusätzlichen Konvertierungsfunktionen angezeigt.

USE KEYS-Optimierungen

Wenn eine Abfrage entweder eine Equals- oder eine IN-Klausel hat, die auf abzielt Document.Id Spalte, und es gibt keine OR-Klausel, um sie zu überschreiben, konvertiert der Connector die Document.Id Filter in eine USE KEYS-Klausel. Dies vermeidet den Aufwand beim Scannen eines Index, da die Dokumentschlüssel der N1QL-Engine bereits bekannt sind (diese Optimierung gilt nicht für Analytics CouchbaseService).

SQL-Abfrage N1QL-Abfrage
SELECT * FROM Benutzer WHERE [Dokument.Id] = '1' SELECT ... FROM `users` SCHLÜSSEL VERWENDEN ["1"]
SELECT * FROM Benutzer WHERE [Dokument.Id] IN ('2', '3') SELECT ... FROM `users` VERWENDEN SIE DIE SCHLÜSSEL ["2", "3"]
WÄHLEN SIE * FROM Benutzer, WO [Document.Id] = '4' ODER [Document.Id] = '5' WÄHLEN SIE ... FROM `users` VERWENDEN SIE DIE TASTEN ["4", "5"]
SELECT * FROM users WHERE [Document.Id] = '6' AND status = 'A' SELECT ... FROM `users` VERWENDEN SIE DIE SCHLÜSSEL ["6"], WO `status`= "EIN"

Zusätzlich zur Verwendung für SELECT-Abfragen wird die gleiche Optimierung auch für DML-Operationen durchgeführt, wie unten gezeigt.

Untergeordnete Tabellen

Solange alle untergeordneten Tabellen in einer Abfrage dieselbe übergeordnete Tabelle haben und mithilfe von INNER JOINs auf ihren Document.Id Spalten, der Connector kombiniert die JOINs zu einem einzigen UNNEST-Ausdruck. Im Gegensatz zu N1QL UNNEST-Abfragen müssen Sie explizit mit der Basistabelle JOIN ausführen, wenn Sie auf deren Felder zugreifen möchten.

SQL-Abfrage N1QL-Abfrage
SELECT * FROM users_posts SELECT META(`users`).Ausweis, `users_posts`.` text`, ... AUS `users` UNNEST `users`.`posts` ALS `users_posts`
SELECT * FROM Benutzer INNER JOIN users_posts ON Benutzer.[Dokument.Id] = users_posts.[Dokument.Id] SELECT META(`users`).Ausweis, `users`.` name`, ..., `users_posts`.` text`, ... AUS `users`UNNEST `users`.`posts` ALS `users_posts`
SELECT * FROM Benutzer INNER JOIN Benutzerbeiträge ... INNER JOIN Benutzerkommentare ON ... SELECT ... FROM `users` UNNEST `users`.` posts` ALS `users_posts`UNNEST `users`.`comments` ALS `users_comments`
Geschmackstabellen

Bei Tabellen mit bestimmten Geschmacksrichtungen wird bei der Abfrage immer die entsprechende Bedingung berücksichtigt, sodass nur Dokumente mit der Geschmacksrichtung zurückgegeben werden:

SQL-Abfrage N1QL-Abfrage
WÄHLEN SIE * VON [Benutzer.Abonnent] WÄHLEN SIE ... VON `users` WO `docType`= "Abonnent"
SELECT * FROM [users.subscriber] WHERE age > 50 SELECT ... FROM `users` WO `docType`= "Abonnent" UND `age` > 50
Aggregierte Abfragen

N1QL verfügt über mehrere integrierte Aggregatfunktionen. Der Connector nutzt diese in großem Umfang für verschiedene Aggregatabfragen. Nachfolgend einige Beispiele:

SQL-Abfrage N1QL-Abfrage
SELECT Count(*) As Count FROM Orders SELECT Count(*) AS `count` AUS `Orders`
SELECT Sum(price) As total FROM Orders SELECT Summe(`price`) Als `total` AUS `Orders`
SELECT cust_id, Sum(price) As total FROM Orders GROUP BY cust_id ORDER BY total AUSWÄHLEN `cust_id`, Summe(`price`) Als `total` AUS `Orders` GRUPPE NACH `cust_id` BESTELLEN NACH `total`
SELECT cust_id, ord_date, Sum(price) As total FROM Orders GROUP BY cust_id, ord_date Having total > 250 AUSWÄHLEN `cust_id`, `ord_date`, Summe(`price`) Als `total` AUS `Orders` GRUPPE NACH `cust_id`, `ord_date` Mit `total`> 250

INSERT-Anweisungen

Die SQL INSERT-Anweisung wird der N1QL INSERT-Anweisung wie unten gezeigt zugeordnet. Dies funktioniert sowohl für Felder der obersten Ebene als auch für Felder, die durch Vertical Flattening erzeugt werden, gleich:

SQL-Abfrage N1QL-Abfrage
INSERT INTO users (\[Document.Id\], age, status) VALUES ('bcd001', 45, 'A') EINFÜGEN IN `users` (SCHLÜSSEL, WERT) WERTE ('bcd001', { "Alter" : 45, "Status" : "A" })
INSERT INTO users (\[Document.Id\], \[metrics.posts\]) VALUES ('bcd002', 0) EINFÜGEN IN `users` (SCHLÜSSEL, WERT) WERTE ('bcd002', {"Metriken": {"Beiträge": 0}})
Untergeordnete Tabelleneinsätze

Einfügungen in untergeordneten Tabellen werden intern mithilfe von Array-Operationen in N1QL-UPDATEs umgewandelt. Da dadurch kein Dokument der obersten Ebene erstellt wird, muss die angegebene Document.Id auf ein bereits vorhandenes Dokument verweisen.

Eine weitere Einschränkung von INSERTs in untergeordneten Tabellen besteht darin, dass mehrwertige INSERTs alle dieselbe Document.Id verwenden müssen. Der Anbieter überprüft dies, bevor er Daten ändert, und meldet einen Fehler, wenn diese Einschränkung verletzt wird.

SQL-Abfrage N1QL-Abfrage
INSERT INTO users_ratings (\[Document.Id\], value) VALUES ('bcd001', 4.8), ('bcd001', 3.2) AKTUALISIEREN `users` VERWENDEN SIE DIE SCHLÜSSEL "bcd001" SET `ratings`= ARRAY_PUT(`ratings`, 4.8, 3.2)
INSERT INTO users_reviews (\[Document.Id\], score) VALUES ('bcd002', 'Great'), ('bcd002', 'Lacking') AKTUALISIEREN `users` VERWENDEN SIE DIE SCHLÜSSEL "bcd001" SET `ratings`= ARRAY_PUT(`ratings`, {"score": "Großartig"}, {"score": "Mangelhaft"})

Bulk-INSERT-Anweisungen

Bulk INSERTs werden ebenfalls unterstützt. Das SQL Bulk INSERT wird wie folgt konvertiert:

INSERT INTO users#TEMP ([Document.Id], KEY, VALUE) VALUES ('bcd001', 45, "A")
INSERT INTO users#TEMP ([Document.Id], KEY, VALUE) VALUES ('bcd002', 24, "B")
INSERT INTO users SELECT * FROM users#TEMP

wird umgewandelt in:

INSERT INTO `Benutzer` (KEY, VALUE) VALUES
  ('bcd001', {"age": 45, "status": "A"}),
('bcd002', {"age": 24, "status": "B"})

Wie bei mehrwertigen INSERTs auf untergeordneten Tabellen müssen auch alle Zeilen in einem Bulk-INSERT dieselbe Document.Id haben.

Update-Anweisungen

Die SQL UPDATE-Anweisung wird der N1SQL UPDATE-Anweisung wie unten gezeigt zugeordnet:

SQL-Abfrage N1QL-Abfrage
UPDATE users SET status = 'C' WHERE \[Document.Id\] = 'bcd001' AKTUALISIEREN `users` VERWENDEN SIE DIE SCHLÜSSEL ["bcd001"] SET `status`= "C"
UPDATE users SET status = 'C' WHERE age > 45 AKTUALISIEREN `users` SATZ `status`= "C" WO `age` > 45
Aktualisierungen der untergeordneten Tabelle

Beim Aktualisieren einer untergeordneten Tabelle wird die SQL- Abfrage mithilfe eines „FOR“-Ausdrucks oder eines „ARRAY“-Ausdrucks in eine UPDATE Abfrage umgewandelt:

SQL-Abfrage N1QL-Abfrage
UPDATE users_ratings SET value = 5.0 WHERE value > 5.0 AKTUALISIEREN `users` SATZ `ratings`= ARRAY CASE, WENN `value` > 5,0 DANN 5 SONST `value` ENDE FÜR `value` IN `ratings`ENDE
UPDATE users_reviews SET score = 'Unknown' WHERE score = '' AKTUALISIEREN `users` SATZ `\(child\`.\` score\`= 'Unbekannt' FÜR \`\)child` IN `reviews` WANN `$child`.` score`= "" ENDE
Aktualisierungen der Geschmackstabelle

Wie bei SELECTs von Geschmackstabellen enthalten UPDATEs von Geschmackstabellen immer die entsprechende Bedingung, sodass nur Dokumente betroffen sind, die zu der Geschmackstabelle gehören:

SQL-Abfrage N1QL-Abfrage
UPDATE \[users.subscriber\] SET status = 'C' WHERE age > 45 AKTUALISIEREN `users` SATZ `status`= "C" WO `docType`= "Abonnent" UND `age` > 45

Anweisungen löschen

Die SQL DELETE-Anweisung wird der N1QL DELETE-Anweisung wie unten gezeigt zugeordnet:

SQL-Abfrage N1QL-Abfrage
DELETE FROM users WHERE \[Document.Id\] = 'bcd001' LÖSCHEN VON `users` SCHLÜSSEL VERWENDEN ["bcd001"]
DELETE FROM users WHERE status = 'inactive' LÖSCHEN VON `users` WO `status`= "inaktiv"
Untergeordnete Tabellen löschen

Beim Löschen aus einer untergeordneten Tabelle wird die SQL- Abfrage mithilfe eines „ARRAY“-Ausdrucks in eine UPDATE Abfrage umgewandelt:

SQL-Abfrage N1QL-Abfrage
DELETE FROM users_ratings WHERE value < 0 AKTUALISIEREN `users` SATZ `ratings`= ARRAY `value` FÜR `value` IN `ratings` WENN NICHT (`value` < 0) ENDE
DELETE FROM users_reviews WHERE score = '' AKTUALISIEREN `users` SATZ `reviews`= ARRAY `\(child\` FÜR \`\)child` IN `reviews` WENN NICHT (`$child`.` score`= "") ENDE
Löscht Geschmackstabellen

Wie SELECTs in Geschmackstabellen enthalten DELETEs in Geschmackstabellen immer die entsprechende Bedingung, sodass nur Dokumente betroffen sind, die zum Geschmack gehören:

SQL-Abfrage N1QL-Abfrage
DELETE FROM \[users.subscriber\] WHERE status = 'inactive' LÖSCHEN VON `users` WO `docType`= "Abonnent" UND Status = "inaktiv"

Vertikale Abflachung

Beispieldokument

/* Primary key "1" */
{
  "address" : {
    "building" : "1007",
    "coord" : [-73.856077, 40.848447],
    "street" : "Morris Park Ave",
    "zipcode" : "10462"
  },
  "borough" : "Bronx",
  "cuisine" : "Bakery",
  "grades" : [{
      "date" : "2014-03-03T00:00:00Z",
      "grade" : "A",
      "score" : 2
    }, {
      "date" : "2013-09-11T00:00:00Z",
      "grade" : "A",
      "score" : 6
    }, {
      "date" : "2013-01-24T00:00:00Z",
      "grade" : "A",
      "score" : 10
    }, {
      "date" : "2011-11-23T00:00:00Z",
      "grade" : "A",
      "score" : 9
    }, {
      "date" : "2011-03-10T00:00:00Z",
      "grade" : "B",
      "score" : 14
    }],
  "name" : "Morris Park Bake Shop",
  "restaurant_id" : "30075445"

}

Werte in Objekten auswählen

Wenn die FlattenObjects Die Eigenschaft ist so konfiguriert, dass eine Objektabflachung möglich ist. Anschließend durchläuft der Connector die Objekte und bildet die darin enthaltenen Felder als Spalten ab. Beispielsweise diese Abfrage:

SELECT [address.building],`[Adresse.Straße] `FROM restaurants

Würde dieses Ergebnis zurückgeben:

address.building adres.street
1007 Morris Park Avenue

Werte in Arrays auswählen

Wenn die FlattenArrays-Eigenschaft so konfiguriert ist, dass Array-Abflachung möglich ist. Dann durchläuft der Connector die Arrays und bildet ihre einzelnen Werte als Spalten ab. Wenn beispielsweise „Arrays abflachen“ auf „2“ eingestellt ist, lautet die Abfrage:

SELECT [address.coord.0],`[Adresse.Koordinate.1] `FROM restaurants

Würde dieses Ergebnis zurückgeben:

address.coord.0 address.coord.1
-73.856077 40.838447

Beachten Sie, dass die Array-Verflachung nur in Fällen verwendet werden sollte, in denen Sie die Anzahl der Array-Elemente im Voraus kennen, wie z. B. bei „address.coord“, das immer zwei Elemente enthält. Für Arrays wie „grades“, die eine beliebige Anzahl von Elementen enthalten können, sollten Sie die Verwendung der unter Automatische Schemaerkennung beschriebenen untergeordneten Tabellen in Betracht ziehen, da Sie damit alle Werte im Array lesen können.

Benutzerdefinierte Funktionen

Benutzerdefinierte Funktionen sind eine neue Funktion, die ab Couchbase 7 zur Verfügung steht. Sie können mit dem Connector wie normale Funktionen verwendet werden, allerdings mit einer speziellen Namenskonvention für die Verwendung von bereichsbezogenen Funktionen. Normalerweise erfordert der Connector, dass Funktionen bereits vorhanden sind, bevor sie verwendet werden. Informationen zum Definieren finden Sie in der Couchbase Dokumentation unter CREATE FUNCTION Abfragen. Diese können über die Couchbase-Konsole oder mit dem Connector in ausgeführt werden QueryPassthrough Modus.

Couchbase unterstützt sowohl Skalarfunktionen als auch Funktionen, die Ergebnisse aus Unterabfragen zurückgeben. Der Connector unterstützt Skalarfunktionen innerhalb seines SQL-Dialekts, aber Unterabfragefunktionen können nur verwendet werden, wenn QueryPassthrough ist aktiviert. Der Rest dieses Abschnitts behandelt den SQL-Dialekt des Connectors und geht davon aus, dass QueryPassthrough ist deaktiviert.

Globale Funktionen

Sowohl im N1QL- als auch im Analytics-Modus kann auf globale benutzerdefinierte Funktionen entweder über ihre einfachen Namen oder ihre qualifizierten Namen zugegriffen werden. Der einfache Name ist lediglich der Name der Funktion:

SELECT ageInYears(birthdate) FROM users

Globale Funktionen können auch aufgerufen werden, indem sie mit dem Standard-Namespace qualifiziert werden. Qualifizierte Namen sind in Anführungszeichen gesetzte Namen, die interne Trennzeichen enthalten, was standardmäßig ein Punkt ist, was jedoch mit geändert werden kann DataverseSeparator Eigenschaft. Sowohl in N1QL als auch in Analytics heißt der globale Namespace Default:

SELECT [Default.ageInYears](Geburtsdatum) FROM users

Es wird empfohlen, globale Funktionen mit einfachen Namen aufzurufen. Obwohl der Standardqualifizierer unterstützt wird, ist seine einzige Verwendung für den Fall vorgesehen, dass eine UDF mit einer Standard-SQL-Funktion kollidiert, die der Connector andernfalls übersetzen würde.

Bereichsbezogene Funktionen

Sowohl N1QL als auch Analytics erlauben die Definition von Funktionen außerhalb eines globalen Kontexts. In Analytics können Funktionen sowohl an Datenverses als auch an Bereiche angehängt werden, die mit zweiteiligen bzw. dreiteiligen Namen aufgerufen werden. In N1QL dürfen Funktionen nur an Bereiche angehängt werden, daher dürfen nur dreiteilige Namen verwendet werden.

/* N1QL AND Analytics */
SELECT [socialNetwork.accounts.ageInYears](Geburtsdatum) FROM [socialNetwork.accounts.users]

/* Analytics only */
SELECT [socailNetwork.ageInYears](Geburtsdatum) FROM [socialNetwork.accounts.users]

JSON-Funktionen

Der Connector kann JSON-Strukturen als Spaltenwerte zurückgeben. Der Connector ermöglicht Ihnen die Verwendung von Standard-SQL-Funktionen zum Arbeiten mit diesen JSON-Strukturen. Die Beispiele in diesem Abschnitt verwenden das folgende Array:

[
     { "grade": "A", "score": 2 },
     { "grade": "A", "score": 6 },
     { "grade": "A", "score": 10 },
     { "grade": "A", "score": 9 },
     { "grade": "B", "score": 14 }
]

JSON_EXTRACT

Die Funktion JSON_EXTRACT kann einzelne Werte aus einem JSON-Objekt extrahieren. Die folgende Abfrage gibt die unten gezeigten Werte basierend auf dem JSON-Pfad zurück, der als zweites Argument an die Funktion übergeben wird:

SELECT Name, JSON_EXTRACT(grades,'[0].grade') AS Grade, JSON_EXTRACT(grades,'[0].score') AS Score FROM Students;
Spaltenname Beispielwert
Grade EIN
Score 2

JSON_ANZAHL

Die Funktion JSON_COUNT gibt die Anzahl der Elemente in einem JSON-Array innerhalb eines JSON-Objekts zurück. Die folgende Abfrage gibt die Anzahl der Elemente zurück, die durch den JSON-Pfad angegeben werden, der als zweites Argument an die Funktion übergeben wird:

SELECT Name, JSON_COUNT(grades,'[x]') AS NumberOfGrades FROM Students;
Spaltenname Beispielwert
NumberOfGrades 5

JSON_SUM

Die Funktion JSON_SUM gibt die Summe der numerischen Werte eines JSON-Arrays innerhalb eines JSON-Objekts zurück. Die folgende Abfrage gibt die Summe der Werte zurück, die durch den JSON-Pfad angegeben werden, der als zweites Argument an die Funktion übergeben wird:

SELECT Name, JSON_SUM(score,'[x].score') AS TotalScore FROM Students;
Spaltenname Beispielwert
TotalScore 41

JSON_MIN

Die Funktion JSON_MIN gibt den niedrigsten numerischen Wert eines JSON-Arrays innerhalb eines JSON-Objekts zurück. Die folgende Abfrage gibt den Mindestwert zurück, der durch den JSON-Pfad angegeben wird, der als zweites Argument an die Funktion übergeben wird:

SELECT Name, JSON_MIN(score,'[x].score') AS LowestScore FROM Students;
Spaltenname Beispielwert
LowestScore 2

JSON_MAX

Die Funktion JSON_MAX gibt den höchsten numerischen Wert eines JSON-Arrays innerhalb eines JSON-Objekts zurück. Die folgende Abfrage gibt den Maximalwert zurück, der durch den JSON-Pfad angegeben wird, der als zweites Argument an die Funktion übergeben wird:

SELECT Name, JSON_MAX(score,'[x].score') AS HighestScore FROM Students;
Spaltenname Beispielwert
HighestScore 14

DOKUMENTIEREN

Mit der Funktion DOCUMENT kann ein Dokument als JSON-Zeichenfolge zurückgegeben werden. DOCUMENT(*) kann mit jeder Art von SELECT- Abfrage verwendet werden, einschließlich Abfragen mit anderen Spalten, Abfragen mit nur DOCUMENT(*) und sogar komplexeren Abfragen wie JOINs.

SELECT`[Dokument.Id], `grade, score, DOCUMENT(*) FROM grades

Diese Abfrage würde beispielsweise Folgendes zurückgeben:

Dokument.ID Note Punktzahl DOKUMENT
1 A 6 {"document.id":1, "grade":"A", "score":6}
2 A 10 {"document.id":1, "grade":"A", "score":10}
3 A 9 {"document.id":1, "grade":"A", "score":9}
4 B 14 {"document.id":1, "grade":"B", "score":14}

Wenn DOCUMENT(*) allein verwendet wird, gibt es die Struktur direkt von Couchbase zurück, als ob eine N1QL- oder SQL++ SELECT *- Abfrage verwendet würde. Das bedeutet, dass kein Document.Id-Wert vorhanden ist, da Couchbase ihn nicht automatisch einschließt.

SELECT DOCUMENT(*) FROM grades

Diese Abfrage würde Folgendes zurückgeben:

DOKUMENT
{"Noten":{"Note":"A", "Punktzahl":6"}}
{"grades":{"grade":"A", "score":10"}}
{"Noten":{"Note":"A", "Punktzahl":9"}}
{"grades":{"grade":"B", "score":14"}}

Benutzerdefinierte Schemadefinitionen

Zusätzlich zur Automatischen Schemaerkennung ermöglicht der Connector auch die statische Definition des Schema für Ihr Couchbase-Objekt. Schemata werden in textbasierten Konfigurationsdateien definiert, was ihre Erweiterung erleichtert. Sie können den Befehl CreateSchema aufrufen gespeicherte Prozedur zum Generieren einer Schema; siehe Automatische Schemaerkennung für weitere Informationen.

Setzen Sie die Location-Eigenschaft zum Dateiverzeichnis, das die Schema enthalten wird. Die folgenden Abschnitte zeigen, wie Sie das resultierende Schema erweitern oder Ihr eigenes schreiben.

Beispieldokument

Betrachten wir das folgende Dokument und extrahieren wir die verschachtelten Eigenschaften als eigene Spalten:

/* Primary key "1" */
{
  "id": 12,
  "name": "Lohia Manufacturers Inc.",
  "homeaddress": {"street": "Main "Street", "city": "Chapel Hill", "state": "NC"},
  "workaddress": {"street": "10th "Street", "city": "Chapel Hill", "state": "NC"}
  "offices": ["Chapel Hill", "London", "New York"]
  "annual_revenue": 35600000
}
/* Primary key "2" */
{
  "id": 15,
  "name": "Piago Industries",
  "homeaddress": {street": "Main Street", "city": "San Francisco", "state": "CA"},
  "workaddress": {street": "10th Street", "city": "San Francisco", "state": "CA"}
  "offices": ["Durham", "San Francisco"]
  "annual_revenue": 42600000
}

Benutzerdefinierte Schemadefinition

<rsb:info title="Customers" description="Customers" other:dataverse="" other:bucket=customers"" other:flavorexpr="" other:flavorvalue="" other:isarray="false" other:pathspec="" other:childpath="">
  <attr name="document.id"        xs:type="string"  key="true" other:iskey="true" other:pathspec=""  />
  <attr name="annual_revenue"     xs:type="integer" other:iskey="false"           other:pathspec=""  other:field="annual_revenue" />
  <attr name="homeaddress.city"   xs:type="string"  other:iskey="false"           other:pathspec="{" other:field="homeaddress.city" />
  <attr name="homeaddress.state"  xs:type="string"  other:iskey="false"           other:pathspec="{" other:field="homeaddress.state" />
  <attr name="homeaddress.street" xs:type="string"  other:iskey="false"           other:pathspec="{" other:field="homeaddress.street" />
  <attr name="name"               xs:type="string"  other:iskey="false"           other:pathspec=""  other:field="name" />
  <attr name="id"                 xs:type="integer" other:iskey="false"           other:pathspec=""  other:field="id" />
  <attr name="offices"            xs:type="string"  other:iskey="false"           other:pathspec=""  other:field="offices" />
  <attr name="offices.0"          xs:type="string"  other:iskey="false"           other:pathspec="[" other:field="offices.0" />
  <attr name="offices.1"          xs:type="string"  other:iskey="false"           other:pathspec="[" other:field="offices.1" />
  <attr name="workaddress.city"   xs:type="string"  other:iskey="false"           other:pathspec="{" other:field="workaddress.city" />
  <attr name="workaddress.state"  xs:type="string"  other:iskey="false"           other:pathspec="{" other:field="workaddress.state" />
  <attr name="workaddress.street" xs:type="string"  other:iskey="false"           other:pathspec="{" other:field="workaddress.street" />

</rsb:info>

In Beispiel für benutzerdefiniertes Schema finden Sie das vollständige Schema, das das obige Beispiel enthält.

Tabelleneigenschaften

Das obige Schema verwendet die folgenden Eigenschaften, um bestimmte Eigenschaften für die gesamte Tabelle zu definieren. Alle sind erforderlich:

Eigenschaft Bedeutung
other:dataverse Der Name des Dataverse, zu dem der Datensatz gehört. Leer, wenn es sich nicht um eine Analytics-Ansicht handelt.
other:bucket Der Name des Buckets oder Datensatzes innerhalb von Couchbase
other:flavorexpr Die URL codierte Bedingung in einer Tabelle mit Geschmacksrichtung. Beispiel: „%60docType%60%20%3D%20%22chess%22“.
other:flavorvalue Der Name der Variante in einer Tabelle mit Varianten. Zum Beispiel „Schach“.
other:isarray Ob die Tabelle eine untergeordnete Array-Tabelle ist.
other:pathspec Dies wird verwendet, um die Trennzeichen innerhalb von other:childpath zu interpretieren. Siehe Column Properties für weitere Einzelheiten.
other:childpath Der Pfad zum Attribut, das zum Aufheben der Verschachtelung der untergeordneten Tabelle verwendet wird. Leer, wenn es sich nicht um eine untergeordnete Tabelle handelt.
Spalteneigenschaften

Das obige Schema verwendet die folgenden Eigenschaften, um bestimmte Qualitäten für jede Spalte zu definieren:

Eigenschaft Bedeutung
name Erforderlich. Der Name der Spalte in Kleinbuchstaben.
key Wird verwendet, um den Primärschlüssel zu markieren. Erforderlich für Document.Id, aber optional für andere Spalten.
xs:type Erforderlich. Der Typ der Spalte innerhalb des Konnektors.
other:iskey Erforderlich. Muss der gleiche Wert wie der Schlüssel sein oder „false“, wenn der Schlüssel nicht enthalten ist.
other:pathspec Erforderlich. Dies wird verwendet, um die Trennzeichen innerhalb des anderen Felds zu interpretieren.
other:field Erforderlich. Der Pfad zum Feld in Couchbase.

Beachten Sie, dass die durch vertikales Abflachen erzeugten Felder dieselbe Syntax zum Trennen von Array- und Feldwerten verwenden. Dies führt zu einer potenziellen Mehrdeutigkeit in Fällen wie dem folgenden, in denen der Connector die Spalten „numeric_object.0“ und „array.0“ offenlegt:

{
  "numeric_object": {
    "0": 0
  },
  "array": [
    0
  ]
}

Um sicherzustellen, dass der Connector zwischen Feld- und Arrayzugriffen unterscheiden kann, wird die Pfadspezifikation verwendet, um zu bestimmen, ob jedes „.“ im Feld ein Array oder ein Objekt ist. Jedes „{“ stellt einen Feldzugriff dar, während jedes „[“ einen Arrayzugriff darstellt. Beispielsweise würde mit einem Feld von „a.0.b.1“ und einer „Pfadspezifikation“ von „[{[“ der N1QL-Ausdruck „a[0].b[1]“ generiert. Wenn die „Pfadspezifikation“ stattdessen „{{{", then the N1QL expression "a.`0`.b.` 1`" würde generiert.

Beispiel für ein benutzerdefiniertes Schema

Dieser Abschnitt enthält ein vollständiges Schema. Setzen Sie die Location-Eigenschaft für das Dateiverzeichnis, das die Schema enthalten soll. Der Infoabschnitt ermöglicht eine relationale Ansicht eines Couchbase Objekts. Weitere Einzelheiten finden Sie unter Benutzerdefinierte Schemadefinitionen. Die folgende Tabelle erlaubt die Befehle SELECT, INSERT, UPDATE und DELETE, wie sie in den Abschnitten GET, POST, MERGE und DELETE des folgenden Schema implementiert sind. Die Operationen, wie etwa couchbaseadoSysData, sind interne Implementierungen.

<rsb:script xmlns:rsb="http://www.rssbus.com/ns/rsbscript/2">
  <rsb:info title="Customers" description="Customers" other:dataverse="" other:bucket=customers"" other:flavorexpr="" other:flavorvalue="" other:isarray="false" other:pathspec="" other:childpath="">
    <attr name="document.id"        xs:type="string"  key="true" other:iskey="true" other:pathspec=""  />
    <attr name="annual_revenue"     xs:type="integer" other:iskey="false"           other:pathspec=""  other:field="annual_revenue" />
    <attr name="homeaddress.city"   xs:type="string"  other:iskey="false"           other:pathspec="{" other:field="homeaddress.city" />
    <attr name="homeaddress.state"  xs:type="string"  other:iskey="false"           other:pathspec="{" other:field="homeaddress.state" />
    <attr name="homeaddress.street" xs:type="string"  other:iskey="false"           other:pathspec="{" other:field="homeaddress.street" />
    <attr name="name"               xs:type="string"  other:iskey="false"           other:pathspec=""  other:field="name" />
    <attr name="id"                 xs:type="integer" other:iskey="false"           other:pathspec=""  other:field="id" />
    <attr name="offices"            xs:type="string"  other:iskey="false"           other:pathspec=""  other:field="offices" />
    <attr name="offices.0"          xs:type="string"  other:iskey="false"           other:pathspec="[" other:field="offices.0" />
    <attr name="offices.1"          xs:type="string"  other:iskey="false"           other:pathspec="[" other:field="offices.1" />
    <attr name="workaddress.city"   xs:type="string"  other:iskey="false"           other:pathspec="{" other:field="workaddress.city" />
    <attr name="workaddress.state"  xs:type="string"  other:iskey="false"           other:pathspec="{" other:field="workaddress.state" />
    <attr name="workaddress.street" xs:type="string"  other:iskey="false"           other:pathspec="{" other:field="workaddress.street" />
  </rsb:info>
</rsb:script>

Wichtige Hinweise

Konfigurationsdateien und ihre Pfade

  • Alle Verweise auf das Hinzufügen von Konfigurationsdateien und deren Pfaden beziehen sich auf Dateien und Speicherorte auf dem Jitterbit-Agenten, auf dem der Connector installiert ist. Diese Pfade sind je nach Agent und Operationssystem entsprechend anzupassen. Wenn mehrere Agenten in einer Agentengruppe verwendet werden, werden auf jedem Agenten identische Dateien benötigt.

Erweiterte Funktionen

In diesem Abschnitt wird eine Auswahl erweiterter Funktionen des Couchbase-Connectors beschrieben.

Benutzerdefinierte Ansichten

Der Connector ermöglicht Ihnen die Definition virtueller Tabellen, sogenannter benutzerdefinierter Ansichten, deren Inhalt durch eine vorkonfigurierte Abfrage bestimmt wird. Diese Ansichten sind nützlich, wenn Sie die an die Treiber gesendeten Abfragen nicht direkt steuern können. Siehe Benutzerdefinierte Ansichten für einen Überblick über das Erstellen und Konfigurieren benutzerdefinierter Ansichten.

SSL-Konfiguration

Verwenden Sie SSL-Konfiguration, um anzupassen, wie der Connector TLS/SSL-Zertifikatsverhandlungen handhabt. Sie können aus verschiedenen Zertifikatsformaten wählen; siehe SSLServerCert-Eigenschaft unter „Verbindungszeichenfolgenoptionen“ für weitere Informationen.

Proxy

So konfigurieren Sie den Connector mit privaten Agent-Proxy-Einstellungen, wählen Sie die Use Proxy Settings Kontrollkästchen auf dem Verbindungskonfigurationsbildschirm.

Abfrageverarbeitung

Der Connector verlagert die Verarbeitung der SELECT-Anweisung so weit wie möglich auf Couchbase und verarbeitet den Rest der Abfrage dann im Speicher (clientseitig).

Benutzerdefinierte Ansichten

Mit dem Couchbase-Connector können Sie eine virtuelle Tabelle definieren, deren Inhalt durch eine vorkonfigurierte Abfrage bestimmt wird. Diese werden als benutzerdefinierte Ansichten bezeichnet und sind in Situationen nützlich, in denen Sie die an den Treiber gesendete Abfrage nicht direkt steuern können, z. B. wenn Sie den Treiber von Jitterbit verwenden. Die benutzerdefinierten Ansichten können verwendet werden, um Prädikate zu definieren, die immer angewendet werden. Wenn Sie in der Abfrage an die Ansicht zusätzliche Prädikate angeben, werden diese mit der bereits als Teil der Ansicht definierten Abfrage kombiniert.

Es gibt zwei Möglichkeiten, benutzerdefinierte Ansichten zu erstellen:

  • Erstellen Sie eine Konfigurationsdatei im JSON-Format, die die gewünschten Ansichten definiert.
  • DDL-Anweisungen.

Definieren von Ansichten mithilfe einer Konfigurationsdatei

Benutzerdefinierte Ansichten werden in einer JSON-formatierten Konfigurationsdatei namens UserDefinedViews.json. Der Connector erkennt die in dieser Datei angegebenen Ansichten automatisch.

Sie können auch mehrere Ansichtsdefinitionen haben und diese mit steuern UserDefinedViews Verbindungseigenschaft. Wenn Sie diese Eigenschaft verwenden, werden vom Connector nur die angegebenen Ansichten angezeigt.

Diese Konfigurationsdatei für benutzerdefinierte Ansichten ist wie folgt formatiert:

  • Jedes Stammelement definiert den Namen einer Ansicht.
  • Jedes Stammelement enthält ein untergeordnetes Element namens query, das die benutzerdefinierte SQL- Abfrage für die Ansicht enthält.

Zum Beispiel:

{
    "MyView": {
        "query": "SELECT * FROM Customer WHERE MyColumn = 'value'"
    },
    "MyView2": {
        "query": "SELECT * FROM MyTable WHERE Id IN (1,2,3)"
    }
}

Verwenden Sie UserDefinedViews Verbindungseigenschaft, um den Speicherort Ihrer JSON-Konfigurationsdatei anzugeben. Beispiel:

"UserDefinedViews", "C:\Users\yourusername\Desktop\tmp\UserDefinedViews.json"

Definieren von Ansichten mit DDL-Anweisungen

Der Connector kann das Schema auch über DDL-Anweisungen wie CREATE LOCAL VIEW, ALTER LOCAL VIEW und DROP LOCAL VIEW erstellen und ändern.

Erstellen einer Ansicht

Um eine neue Ansicht mit DDL-Anweisungen zu erstellen, geben Sie den Ansichtsnamen und die Abfrage wie folgt an:

CREATE LOCAL VIEW`[MeinAnsichtsname] `AS SELECT * FROM Customers LIMIT 20;

Wenn keine JSON-Datei vorhanden ist, erstellt der obige Code eine. Die Ansicht wird dann in der JSON-Konfigurationsdatei erstellt und ist nun erkennbar. Der Speicherort der JSON-Datei wird durch angegeben UserDefinedViews Verbindungseigenschaft.

Ändern einer Ansicht

Um eine vorhandene Ansicht zu ändern, geben Sie den Namen der vorhandenen Ansicht zusammen mit der neuen Abfrage an, die Sie stattdessen verwenden möchten:

ALTER LOCAL VIEW`[MeinAnsichtsname] `AS SELECT * FROM Customers WHERE TimeModified > '3/1/2020';

Die Ansicht wird dann in der JSON-Konfigurationsdatei aktualisiert.

Löschen einer Ansicht

Um eine vorhandene Ansicht zu löschen, geben Sie den Namen eines vorhandenen Schema neben der neuen Abfrage an, die Sie stattdessen verwenden möchten.

DROP LOCAL VIEW [MyViewName]

Dadurch wird die Ansicht aus der JSON-Konfigurationsdatei entfernt. Sie kann nicht mehr abgefragt werden.

Schema für benutzerdefinierte Ansichten

Benutzerdefinierte Ansichten werden im angezeigt UserViews Schema standardmäßig. Dies geschieht, um zu vermeiden, dass der Name der Ansicht mit einer tatsächlichen Entität im Datenmodell kollidiert. Sie können den Namen des für UserViews verwendeten Schema ändern, indem Sie UserViewsSchemaName Eigentum.

Arbeiten mit benutzerdefinierten Ansichten

Beispielsweise eine SQL-Anweisung mit einer benutzerdefinierten Ansicht namens UserViews.RCustomers listet nur Kunden in Raleigh auf:

SELECT * FROM Customers WHERE City = 'Raleigh';

Ein Beispiel für eine Abfrage an den Treiber:

SELECT * FROM UserViews.RCustomers WHERE Status = 'Active';

Daraus ergibt sich die effektive Abfrage an die Quelle:

SELECT * FROM Customers WHERE City = 'Raleigh' AND Status = 'Active';

Dies ist ein sehr einfaches Beispiel für eine Abfrage an eine benutzerdefinierte Ansicht, die tatsächlich eine Kombination aus der Abfrage und der Ansichtsdefinition ist. Es ist möglich, diese Abfragen in viel komplexeren Mustern zusammenzustellen. Alle SQL-Operationen sind in beiden Abfragen zulässig und werden bei Bedarf kombiniert.

SSL-Konfiguration

Anpassen der SSL-Konfiguration

Standardmäßig versucht der Connector, SSL/TLS auszuhandeln, indem er das Zertifikat des Servers mit dem vertrauenswürdigen Zertifikatspeicher des Systems vergleicht.

Um ein anderes Zertifikat anzugeben, siehe SSLServerCert Eigenschaft für die verfügbaren Formate, um dies zu tun.

Client-SSL-Zertifikate

Der Couchbase-Connector unterstützt auch das Festlegen von Client-Zertifikaten. Legen Sie Folgendes fest, um eine Verbindung mithilfe eines Client-Zertifikats herzustellen.

  • SSLClientCert: Der Name des Zertifikatspeichers für das Client-Zertifikat.
  • SSLClientCertType: Der Typ des Schlüsselspeichers, der das TLS/SSL-Clientzertifikat enthält.
  • SSLClientCertPassword: Das Passwort für das TLS/SSL-Client-Zertifikat.
  • SSLClientCertSubject: Der Betreff des TLS/SSL-Client-Zertifikats.

Datenmodell

Überblick

Abhängig von den verwendeten Verbindungseinstellungen kann der Connector verschiedene Zuordnungen zwischen Couchbase Entitäten und relationalen Tabellen und Ansichten darstellen. Weitere Einzelheiten zu diesen Funktionen finden Sie im NoSQL-Abschnitt dieser Dokumentation.

  • Beim Herstellen einer Verbindung zum N1QL- Abfrage modelliert der Connector Couchbase Buckets als relationale Tabellen. Darüber hinaus, wenn TypeDetectionScheme auf DocType oder Infer eingestellt ist, stellt der Connector verschiedene Dokumentarten in jedem Bucket als eigene Tabellen dar.
  • Beim Herstellen einer Verbindung mit dem Analytics-Dienst modelliert der Connector Couchbase Datensätze als relationale Ansichten.
  • Beim Herstellen einer Verbindung mit einem der Dienste kann der Connector Daten-Arrays als untergeordnete Tabellen oder Ansichten verfügbar machen.

Bitte beachten Sie die Automatische Schemaerkennung Abschnitt für weitere Details zur Bereitstellung von Geschmacks- und untergeordneten Tabellen. Darüber hinaus ist die NewChildJoinsMode Die Verbindungseigenschaft wird für Workflows empfohlen, die häufig untergeordnete Tabellen verwenden. Die Dokumentation für diese Verbindungseigenschaft beschreibt ausführlich die Verbesserungen, die sie am Connector-Datenmodell vornimmt.

Datenverse, Bereiche und Sammlungen

Couchbase bietet verschiedene Möglichkeiten zum Gruppieren von Buckets und Datasets, abhängig von CouchbaseService und Version von Couchbase, mit der Sie sich verbinden:

  • Couchbase organisiert Analytics-Datensätze in Gruppen, die als Dataverses bezeichnet werden. Standardmäßig stellt der Connector Datensätze aus allen Dataverses unter Verwendung zusammengesetzter Namen wie bereit Default.users wie beschrieben in DataverseSeparator. Es ist wichtig, daran zu denken, dass diese zusammengesetzten Namen in Anführungszeichen gesetzt werden müssen, wenn sie in Abfragen verwendet werden, zum Beispiel SELECT * FROM [Default.users]
  • Sie können auch setzen Dataverse Eigenschaft, um den Connector auf die Anzeige eines einzelnen Dataverses zu beschränken. Dies deaktiviert zusammengesetzte Namen, sodass Ansichtsnamen den Datensatz nicht enthalten.
  • Bei der Verbindung mit Couchbase 7 und höher verwendet der Connector den Bereich, die Sammlung und den Bucket-/Dataset-Namen, um Tabellen- und Ansichtsnamen zu erstellen. Beispielsweise eine Tabelle mit einem Namen wie crm.accounts.customers macht die sichtbar customers Sammlung unter der accounts Umfang der crm Bucket. Diese müssen in Abfragen genauso in Anführungszeichen gesetzt werden wie andere zusammengesetzte Namen, zum Beispiel SELECT * FROM [crm.accounts.customers]

Live-Metadaten

Alle vom Connector bereitgestellten Schemata werden dynamisch von Couchbase abgerufen, sodass alle Änderungen in den Buckets oder Feldern in Couchbase beim nächsten Verbindungsaufbau im Connector widergespiegelt werden. Sie können auch eine Reset-Abfrage ausgeben, um Schemata zu aktualisieren, ohne die Verbindung schließen zu müssen:

RESET SCHEMA CACHE

Gespeicherte Prozeduren

Gespeicherte Prozeduren sind funktionsähnliche Schnittstellen, die die Funktionalität des Connectors über einfache SELECT/INSERT/UPDATE/DELETE-Operationen mit Couchbase hinaus erweitern.

Gespeicherte Prozeduren akzeptieren eine Liste von Parametern, führen ihre beabsichtigte Funktion aus und geben dann alle relevanten Antwortdaten von Couchbase zurück, zusammen mit einer Angabe, ob die Prozedur erfolgreich war oder fehlgeschlagen ist.

Gespeicherte Prozeduren im Couchbase Connector

Name Beschreibung
AddDocument Vollständige JSON-Dokumente unverändert nach Couchbase hochladen.
CreateBucket Erstellt einen neuen Bucket in CouchBase.
CreateCollection Erstellt eine Sammlung unter einem bestehenden Umfang
CreateSchema Erstellt eine Schema einer Tabelle in Couchbase. Die Ergebnisse können je nach Wert von FlattenObjects, FlattenArrays und TypeDetectionScheme unterschiedlich sein.
CreateScope Erstellt einen Bereich unter einem vorhandenen Bucket
CreateUserTable Eine interne Operation, die verwendet wird, wenn GenerateSchemaFiles=OnCreate
DeleteBucket Löscht einen Bucket (und alle seine Sammlungen und Bereiche, sofern unterstützt)
DeleteCollection Löscht eine Sammlung (Couchbase 7 und höher)
DeleteScope Löscht einen Bereich und alle seine Sammlungen (Couchbase 7 und höher)
FlushBucket Entfernt alle Dokumente aus einem Bucket in Couchbase.
ListIndices Listet alle in Couchbase verfügbaren Indizes auf
ManageIndices Erstellt/löscht einen Index in einem Ziel-Bucket in Couchbase.

Dokument hinzufügen

Aktualisieren Sie ganze JSON-Dokumente unverändert zu Couchbase.

Eingang
Name Typ Erforderlich Beschreibung
BucketName String True Der Bucket, in den das Dokument eingefügt werden soll.
SourceTable String Falsch Der Name der temporären Tabelle, die die ID- und Dokumentspalten enthält. Erforderlich, wenn keine ID angegeben ist.
ID String Falsch Der Primärschlüssel, unter dem das Dokument eingefügt werden soll. Erforderlich, wenn keine Quelltabelle angegeben ist.
Document String Falsch Der JSON-Text des einzufügenden Dokuments. Erforderlich, wenn keine SourceTable angegeben ist.
Ergebnissatzspalten
Name Typ Beschreibung
RowsAffected String Die Anzahl der erfolgreich aktualisierten Zeilen

Eimer erstellen

Erstellt einen neuen Bucket in CouchBase.

Erstellen von Buckets

Buckets mit @AuthType „none“ können erstellt werden, indem nur @Name, @AuthType, @BucketType und @RamQuotaMB angegeben werden. Je nachdem, mit welcher Version von Couchbase Sie eine Verbindung herstellen, kann auch die Option @ProxyPort erforderlich sein.

EXECUTE CreateBucket
  @Name = 'Players',
  @AuthType = 'NONE',
  @BucketType = 'COUCHBASE',
  @RamQuotaMB = 100,
@ProxyPort = 1234

Beim Erstellen eines Buckets mit @AuthType „sasl“ darf der @ProxyPort nicht angegeben werden und das @SaslPassword ist optional:

EXECUTE CreateBucket
  @Name = 'Players',
  @AuthType = 'SASL',
  @BucketType = 'COUCHBASE',
@RamQuotaMB = 100

Alle anderen Parameter können unabhängig vom angegebenen @AuthType verwendet werden.

Eingang
Name Typ Erforderlich Beschreibung
Name String True Der Name des zu erstellenden Buckets.
AuthType String True Der zu verwendende Authentifizierungstyp kann „SASL“ oder „None“ sein.
BucketType String True Der Bucket-Typ kann Memcached oder Couchbase sein.
EvictionPolicy String Falsch Was aus dem Cache entfernt werden soll, wenn der Bucket voll ist, kann „fullEviction“ oder „valueOnly“ sein
FlushEnabled String Falsch Aktiviert oder deaktiviert die Unterstützung für „Alle leeren“, kann 0 oder 1 sein.
ParallelDBAndViewCompaction String Falsch Aktiviert die gleichzeitige Komprimierung der Datenbank und der Ansichten, kann „true“ oder „false“ sein.
ProxyPort String Falsch Der Proxy-Port darf nicht verwendet werden und ist erforderlich, wenn die Autorisierung nicht SASL ist.
RamQuotaMB String True Die dem Bucket zuzuweisende RAM-Menge in Megabyte.
ReplicaIndex String Falsch Aktiviert oder deaktiviert replizierte Indizes, kann 1 oder 0 sein.
ReplicaNumber String Falsch Eine Zahl zwischen 0 und 3, gibt die Anzahl der Replikate an.
SaslPassword String Falsch SASL-Passwort, kann angegeben werden, wenn der Authentifizierungstyp SASL ist.
ThreadsNumber String Falsch Eine Zahl zwischen 2 und 8, gibt die Anzahl gleichzeitiger Leser/Schreiber an.
CompressionMode String Falsch Entweder Aus (keine Komprimierung), Passiv (komprimiert eingefügte Dokumente bleiben komprimiert) oder Aktiv (Server kann jedes Dokument komprimieren). Auf Couchbase Enterprise ist Passiv die Standardeinstellung.
ConflictResolutionType String Falsch Wie der Server Konflikte zwischen Clusterknoten löst. Entweder lww (zeitstempelbasierte Auflösung) oder seqno (revisions-ID-basierte Auflösung). Standardmäßig seqno bei Couchbase Enterprise.
Ergebnissatzspalten
Name Typ Beschreibung
Success String Ob der Bucket erfolgreich erstellt wurde oder nicht.

Sammlung erstellen

Erstellt eine Sammlung in einem bestehenden Umfang

Eingang
Name Typ Erforderlich Beschreibung
Bucket String True Der Name des Buckets, der die Sammlung enthält.
Scope String True Der Name des Bereichs, der die Sammlung enthält.
Name String True Der Name der zu erstellenden Sammlung.
Ergebnissatzspalten
Name Typ Beschreibung
Success Bool Ob die Sammlung erfolgreich erstellt wurde oder nicht.

Schema erstellen

Erstellt eine Schema einer Tabelle in Couchbase. Die Ergebnisse können je nach Wert von FlattenObjects, FlattenArrays und TypeDetectionScheme unterschiedlich sein.

Schema erstellen

Erstellt eine lokale Schema (.rsd) aus einer vorhandenen Tabelle oder Ansicht im Datenmodell.

Die Schema wird in dem Verzeichnis erstellt, das in festgelegt ist Location Verbindungseigenschaft, wenn dieses Verfahren ausgeführt wird. Sie können die Datei bearbeiten, um Spalten ein- oder auszuschließen, Spalten umzubenennen oder Spaltendatentypen anzupassen.

Der Connector überprüft die Location um zu bestimmen, ob die Namen von .rsd-Dateien mit einer Tabelle oder Ansicht im Datenmodell übereinstimmen. Wenn ein Duplikat vorhanden ist, hat die Schema Vorrang vor der Standardinstanz dieser Tabelle im Datenmodell. Wenn eine Schema in vorhanden ist Location das nicht mit einer vorhandenen Tabelle oder Ansicht übereinstimmt, wird dem Datenmodell des Connectors ein neuer Tabellen- oder Ansichtseintrag hinzugefügt.

Eingang
Name Typ Erforderlich Akzeptiert Ausgabestreams Beschreibung
TableName String True False Der Name der Tabelle.
FileName String Falsch Falsch Der vollständige Dateipfad und Name des zu generierenden Schema. Beispiel: „C:\Benutzer\Benutzer\Desktop\ Couchbase\sheet.rsd“
Overwrite String Falsch Falsch Löscht alle vorhandenen Schema für diese Tabelle.
FileStream String Falsch Wahr Stream, in den das Schema geschrieben werden soll. Wird nur verwendet, wenn kein Dateiname angegeben ist.
Ergebnissatzspalten
Name Typ Beschreibung
Result String Ob das Schema erfolgreich erstellt wurde oder nicht.
FileData String Der Inhalt des als Base64 codierten Schema. Wird nur zurückgegeben, wenn FileName und FileStream nicht angegeben sind.

Bereich erstellen

Erstellt einen Bereich unter einem vorhandenen Bucket

Eingang
Name Typ Erforderlich Beschreibung
Bucket String True Der Name des Buckets, der den Bereich enthält.
Name String True Der Name des zu erstellenden Bereichs.
Ergebnissatzspalten
Name Typ Beschreibung
Success Bool Ob der Bereich erfolgreich erstellt wurde oder nicht.

Benutzertabelle erstellen

Eine interne Operation, die verwendet wird, wenn GenerateSchemaFiles=OnCreate

Hinweis

Dieses Verfahren verwendet indizierte Parameter.

Indizierte Parameter erleichtern die Bereitstellung mehrerer Instanzen eines einzelnen Parameters als Eingaben für das Verfahren.

Angenommen, es gibt einen Eingabeparameter mit dem Namen Param#. Um mehrere Instanzen eines indexierten Parameters wie diesen einzugeben, führen Sie Folgendes aus:

EXEC ProcedureName Param#1 = "value1", Param#2 = "value2", Param#3 = "value3"

In der folgenden Tabelle sind indexierte Parameter mit einem gekennzeichnet #-Zeichen am Ende ihrer Namen.

Eingang
Name Typ Erforderlich Beschreibung
CreateNotExist String Falsch Ob eine vorhandene Tabelle ein Fehler ist oder nicht
TableName String Falsch Der Name der zu erstellenden Tabelle
ColumnNames# String Falsch Für jede Spalte ihr Name
ColumnDataTypes# String Falsch Für jede Spalte ihr Typ
ColumnSizes# String Falsch Für jede Spalte ihre Größe (ignoriert)
ColumnScales# String Falsch Für jede Spalte der entsprechende Maßstab (ignoriert)
ColumnIsNulls# String Falsch Für jede Spalte, ob sie NULL-Werte zulässt (ignoriert)
ColumnDefaults# String Falsch Für jede Spalte der Standardwert (ignoriert)
Location String Falsch Wo die Schema generiert wird
Ergebnissatzspalten
Name Typ Beschreibung
AffectedTables String Die Anzahl der erstellten Tabellen, entweder 0 oder 1

Bucket löschen

Löscht einen Bucket (und alle seine Sammlungen und Bereiche, sofern unterstützt)

Eingang
Name Typ Erforderlich Beschreibung
Name String True Der Name des zu löschenden Buckets.
Ergebnissatzspalten
Name Typ Beschreibung
Success Bool Ob der Bucket erfolgreich gelöscht wurde oder nicht.

Sammlung löschen

Löscht eine Sammlung (Couchbase 7 und höher)

Eingang
Name Typ Erforderlich Beschreibung
Bucket String True Der Name des Buckets, der die Sammlung enthält.
Scope String True Der Name des Bereichs, der die Sammlung enthält.
Name String True Der Name der zu löschenden Sammlung.
Ergebnissatzspalten
Name Typ Beschreibung
Success Bool Ob die Sammlung erfolgreich gelöscht wurde oder nicht.

Bereich löschen

Löscht einen Bereich und alle seine Sammlungen (Couchbase 7 und höher)

Eingang
Name Typ Erforderlich Beschreibung
Bucket String True Der Name des Buckets, der den Bereich enthält.
Name String True Der Name des zu löschenden Bereichs.
Ergebnissatzspalten
Name Typ Beschreibung
Success Bool Ob der Bereich erfolgreich gelöscht wurde oder nicht.

Spüleimer

Entfernt alle Dokumente aus einem Bucket in Couchbase.

Eingang
Name Typ Erforderlich Beschreibung
Name String True Der Name des zu löschenden Buckets. Für diesen Bucket muss Flush aktiviert sein.
Ergebnissatzspalten
Name Typ Beschreibung
Success Bool Ob der Bucket erfolgreich geleert wurde oder nicht.

ListeIndizes

Listet alle in Couchbase verfügbaren Indizes auf

Ergebnissatzspalten
Name Typ Beschreibung
Id String Die eindeutige Index-ID
Datastore_id String Der Server, der den indizierten Bucket hostet
Namespace_id String Der Pool, der den indizierten Bucket hostet
Bucket_id String Der Bucket, auf den sich der Index bezieht, wenn der Index auf eine Sammlung angewendet wird (Couchbase 7 und höher). Andernfalls NULL.
Scope_id String Der Umfang, auf den sich der Index bezieht, wenn der Index auf eine Sammlung angewendet wird (Couchbase 7 und höher). Andernfalls NULL.
Keyspace_id String Die Sammlung, auf die sich der Index bezieht, wenn der Index auf eine Sammlung angewendet wird (Couchbase 7 und höher). Andernfalls der Bucket, auf den sich der Index bezieht.
Index_key String Eine Liste der am Index beteiligten Schlüssel
Condition String Der N1QL-Filter, auf den der Index angewendet wird
Is_primary String Ob der Index auf dem Primärschlüssel liegt
Name String Der Name des Indexes
State String Ob der Index verfügbar ist
Using String Ob der Index durch GSI oder eine Ansicht unterstützt wird

Indizes verwalten

Erstellt/löscht einen Index in einem Ziel-Bucket in Couchbase.

Indizes erstellen

Ein anonymer Primärindex kann mit diesen Parametern erstellt werden:

EXECUTE ManageIndices
  @BucketName = 'Players'
  @Action = 'CREATE'
  @IsPrimary = 'true'
@IndexType = 'VIEW'

Dies ist dasselbe wie die Ausführung dieses N1QL:

CREATE PRIMARY INDEX ON `Spieler` USING VIEW

Ein benannter Primärindex kann durch die Angabe eines @Namens zusätzlich zu den oben aufgeführten Parametern erstellt werden:

EXECUTE ManageIndices
  @BucketName = 'Players'
  @Action = 'CREATE'
  @IsPrimary = 'true'
  @Name = 'Players_primary'
@IndexType = 'VIEW'

Ein sekundärer Index kann erstellt werden, indem @IsPrimary auf „false“ gesetzt und mindestens ein Ausdruck angegeben wird.

EXECUTE ManageIndices
  @BucketName = 'Players',
  @Action = 'CREATE',
  @IsPrimary = 'false',
  @Name = 'Players_playtime_score',
@Expressions = '["score", "playtime"]'

Dies ist dasselbe wie das Ausführen des folgenden N1QL:

CREATE INDEX `Spieler_Spielzeit_Punktzahl` ON `Spieler` (score, playtime) USING GSI;

Um komplexere Indizes zu generieren, können auch mehrere Knoten und Filter bereitgestellt werden. Sie müssen als JSON-Listen bereitgestellt werden:

EXECUTE ManageIndices
  @BucketName = 'Players',
  @Name = 'TopPlayers',
  @Expressions = '["score", "playtime"]',
  @Filter = '["topscore > 1000", "playtime > 600"]',
@Nodes = '["127.0.0.1:8091", "192.168.0.100:8091"]'

Dies ist dasselbe wie das Ausführen des folgenden N1QL:

CREATE INDEX `TopSpieler` ON `Spieler` (score, playtime) WHERE topscore > 1000 AND playtime > 600 USING GSI WITH { "nodes": ["127.0.0.1:8091", "192.168.0.100:8091"]};
Eingang
Name Typ Erforderlich Beschreibung
BucketName String True Der Ziel-Bucket, aus dem der Index erstellt oder gelöscht werden soll.
ScopeName String Falsch Der Zielbereich, aus dem der Index erstellt oder gelöscht werden soll (Couchbase 7 und höher)
CollectionName String Falsch Die Zielsammlung, aus der der Index erstellt oder gelöscht werden soll (Couchbase 7 und höher)
Action String True Gibt an, welche Aktion für den Index ausgeführt werden soll. Es kann „Erstellen“ oder „Löschen“ sein.
Expressions String Falsch Eine Liste von Ausdrücken oder Funktionen, codiert als JSON, auf denen der Index basiert. Mindestens einer ist erforderlich, wenn IsPrimary auf „Falsch“ gesetzt ist und die Aktion „Erstellen“ lautet.
Name String Falsch Der Name des zu erstellenden oder zu löschenden Indexes, erforderlich, wenn IsPrimary auf „Falsch“ gesetzt ist.
IsPrimary String False Gibt an, ob der Index ein Primärindex sein soll. Der Standardwert ist true.
Filters String Falsch Eine als JSON codierte Liste von Filtern, die auf den Index angewendet werden sollen.
IndexType String Falsch Der zu erstellende Indextyp kann GSI oder View sein und wird nur verwendet, wenn die Aktion „Erstellen“ lautet. Der Standardwert ist GSI.
ViewName String Falsch Veraltet, nur aus Kompatibilitätsgründen enthalten. Tut nichts.
Nodes String Falsch Eine als JSON codierte Liste von Knoten, die den Index enthalten sollen, muss den Port enthalten. Wird nur verwendet, wenn die Aktion „Erstellen“ lautet.
NumReplica String Falsch Wie viele Replikate sollen unter den Indexknoten im Cluster erstellt werden.
Ergebnissatzspalten
Name Typ Beschreibung
Success String Ob der Index erfolgreich erstellt oder gelöscht wurde.

Systemtabellen

Sie können die in diesem Abschnitt beschriebenen Systemtabellen Abfrage, um auf Schema, Informationen zur Datenquellenfunktionalität und Statistiken zu Operation Charge.

Schematabellen

Die folgenden Tabellen geben Datenbankmetadaten für Couchbase zurück:

Datenquellentabellen

Die folgenden Tabellen enthalten Informationen dazu, wie eine Verbindung zur Datenquelle hergestellt und diese Abfrage wird:

  • sys_connection_props: Gibt Informationen zu den verfügbaren Verbindungseigenschaften zurück.
  • sys_sqlinfo: Beschreibt die SELECT-Abfragen, die der Connector an die Datenquelle auslagern kann.

Abfrageinformationstabellen

Die folgende Tabelle gibt Abfrage für Datenänderungsabfragen zurück:

  • Systemidentität: Gibt Informationen zu Charge oder einzelnen Updates zurück.

Sys_catalogs

Listet die verfügbaren Datenbanken auf.

Die folgende Abfrage ruft alle durch die Verbindungszeichenfolge ermittelten Datenbanken ab:

SELECT * FROM sys_catalogs
Spalten
Name Typ Beschreibung
CatalogName String Der Datenbankname.

Sys_schemas

Listet die verfügbaren Schemas auf.

Die folgende Abfrage ruft alle verfügbaren Schemas ab:

SELECT * FROM sys_schemas
Spalten
Name Typ Beschreibung
CatalogName String Der Datenbankname.
SchemaName String Der Schema.

Sys_tables

Listet die verfügbaren Tabellen auf.

Die folgende Abfrage ruft die verfügbaren Tabellen und Ansichten ab:

SELECT * FROM sys_tables
Spalten
Name Typ Beschreibung
CatalogName String Die Datenbank, die die Tabelle oder Ansicht enthält.
SchemaName String Das Schema, das die Tabelle oder Ansicht enthält.
TableName String Der Name der Tabelle oder Ansicht.
TableType String Der Tabellentyp (Tabelle oder Ansicht).
Description String Eine Beschreibung der Tabelle oder Ansicht.
IsUpdateable Boolean Ob die Tabelle aktualisiert werden kann.

Sys_tablecolumns

Beschreibt die Spalten der verfügbaren Tabellen und Ansichten.

Die folgende Abfrage gibt die Spalten und Datentypen für die Tabelle „Customer“ zurück:

SELECT ColumnName, DataTypeName FROM sys_tablecolumns WHERE TableName='Customer'
Spalten
Name Typ Beschreibung
CatalogName String Der Name der Datenbank, die die Tabelle oder Ansicht enthält.
SchemaName String Das Schema, das die Tabelle oder Ansicht enthält.
TableName String Der Name der Tabelle oder Ansicht, die die Spalte enthält.
ColumnName String Der Spaltenname.
DataTypeName String Der Name des Datentyps.
DataType Int32 Eine Ganzzahl, die den Datentyp angibt. Dieser Wert wird zur Laufzeit basierend auf der Umfeld bestimmt.
Length Int32 Die Speichergröße der Spalte.
DisplaySize Int32 Die normale Maximalbreite der angegebenen Spalte in Zeichen.
NumericPrecision Int32 Die maximale Anzahl von Ziffern in numerischen Daten. Die Spaltenlänge in Zeichen für Zeichen- und Datums-/Uhrzeitdaten.
NumericScale Int32 Die Spaltenskala oder Anzahl der Ziffern rechts vom Dezimalpunkt.
IsNullable Boolean Ob die Spalte Null enthalten kann.
Description String Eine kurze Beschreibung der Spalte.
Ordinal Int32 Die Sequenznummer der Spalte.
IsAutoIncrement String Ob der Spaltenwert in festen Schritten zugewiesen wird.
IsGeneratedColumn String Ob die Spalte generiert wird.
IsHidden Boolean Ob die Spalte ausgeblendet ist.
IsArray Boolean Ob die Spalte ein Array ist.
IsReadOnly Boolean Ob die Spalte schreibgeschützt ist.
IsKey Boolean Gibt an, ob ein von sys_tablecolumns zurückgegebenes Feld der Primärschlüssel der Tabelle ist.

Sys_procedures

Listet die verfügbaren gespeicherten Prozeduren auf.

Die folgende Abfrage ruft die verfügbaren gespeicherten Prozeduren ab:

SELECT * FROM sys_procedures
Spalten
Name Typ Beschreibung
CatalogName String Die Datenbank, die die gespeicherte Prozedur enthält.
SchemaName String Das Schema, das die gespeicherte Prozedur enthält.
ProcedureName String Der Name der gespeicherten Prozedur.
Description String Eine Beschreibung der gespeicherten Prozedur.
ProcedureType String Der Typ der Prozedur, z. B. PROZEDUR oder FUNKTION.

Sys_procedureparameters

Beschreibt Parameter gespeicherter Prozeduren.

Die folgende Abfrage gibt Informationen zu allen Eingabeparametern für die gespeicherte Prozedur SelectEntries zurück:

SELECT * FROM sys_procedureparameters WHERE ProcedureName='SelectEntries' AND Direction=1 OR Direction=2
Spalten
Name Typ Beschreibung
CatalogName String Der Name der Datenbank, die die gespeicherte Prozedur enthält.
SchemaName String Der Name des Schema, das die gespeicherte Prozedur enthält.
ProcedureName String Der Name der gespeicherten Prozedur, die den Parameter enthält.
ColumnName String Der Name des gespeicherten Prozedurparameters.
Direction Int32 Eine Ganzzahl, die dem Typ des Parameters entspricht: Eingabe (1), Eingabe/Ausgabe (2) oder Ausgabe (4). Parameter vom Typ Eingabe/Ausgabe können sowohl Eingabe- als auch Ausgabeparameter sein.
DataTypeName String Der Name des Datentyps.
DataType Int32 Eine Ganzzahl, die den Datentyp angibt. Dieser Wert wird zur Laufzeit basierend auf der Umfeld bestimmt.
Length Int32 Die Anzahl der für Zeichendaten zulässigen Zeichen. Die Anzahl der für numerische Daten zulässigen Ziffern.
NumericPrecision Int32 Die maximale Genauigkeit für numerische Daten. Die Spaltenlänge in Zeichen für Zeichen- und Datums-/Uhrzeitdaten.
NumericScale Int32 Die Anzahl der Ziffern rechts vom Dezimalkomma in numerischen Daten.
IsNullable Boolean Ob der Parameter Null enthalten kann.
IsRequired Boolean Ob der Parameter zur Ausführung der Prozedur erforderlich ist.
IsArray Boolean Ob der Parameter ein Array ist.
Description String Die Beschreibung des Parameters.
Ordinal Int32 Der Index des Parameters.

Sys_keycolumns

Beschreibt die Primär- und Fremdschlüssel.

Die folgende Abfrage ruft den Primärschlüssel für die Tabelle „Customer“ ab:

SELECT * FROM sys_keycolumns WHERE IsKey='True' AND TableName='Customer'
Spalten
Name Typ Beschreibung
CatalogName String Der Name der Datenbank, die den Schlüssel enthält.
SchemaName String Der Name des Schema, das den Schlüssel enthält.
TableName String Der Name der Tabelle, die den Schlüssel enthält.
ColumnName String Der Name der Schlüsselspalte.
IsKey Boolean Ob die Spalte ein Primärschlüssel in der Tabelle ist, auf die im Feld „TableName“ verwiesen wird.
IsForeignKey Boolean Ob die Spalte ein Fremdschlüssel ist, auf den im Feld TableName verwiesen wird.
PrimaryKeyName String Der Name des Primärschlüssels.
ForeignKeyName String Der Name des Fremdschlüssels.
ReferencedCatalogName String Die Datenbank, die den Primärschlüssel enthält.
ReferencedSchemaName String Das Schema, das den Primärschlüssel enthält.
ReferencedTableName String Die Tabelle, die den Primärschlüssel enthält.
ReferencedColumnName String Der Spaltenname des Primärschlüssels.

Sys_foreignkeys

Beschreibt die Fremdschlüssel.

Die folgende Abfrage ruft alle Fremdschlüssel ab, die auf andere Tabellen verweisen:

SELECT * FROM sys_foreignkeys WHERE ForeignKeyType = 'FOREIGNKEY_TYPE_IMPORT'
Spalten
Name Typ Beschreibung
CatalogName String Der Name der Datenbank, die den Schlüssel enthält.
SchemaName String Der Name des Schema, das den Schlüssel enthält.
TableName String Der Name der Tabelle, die den Schlüssel enthält.
ColumnName String Der Name der Schlüsselspalte.
PrimaryKeyName String Der Name des Primärschlüssels.
ForeignKeyName String Der Name des Fremdschlüssels.
ReferencedCatalogName String Die Datenbank, die den Primärschlüssel enthält.
ReferencedSchemaName String Das Schema, das den Primärschlüssel enthält.
ReferencedTableName String Die Tabelle, die den Primärschlüssel enthält.
ReferencedColumnName String Der Spaltenname des Primärschlüssels.
ForeignKeyType String Gibt an, ob der Fremdschlüssel ein Importschlüssel (zeigt auf andere Tabellen) oder ein Exportschlüssel (referenziert von anderen Tabellen) ist.

Sys_primarykeys

Beschreibt die Primärschlüssel.

Die folgende Abfrage ruft die Primärschlüssel aus allen Tabellen und Ansichten ab:

SELECT * FROM sys_primarykeys
Spalten
Name Typ Beschreibung
CatalogName String Der Name der Datenbank, die den Schlüssel enthält.
SchemaName String Der Name des Schema, das den Schlüssel enthält.
TableName String Der Name der Tabelle, die den Schlüssel enthält.
ColumnName String Der Name der Schlüsselspalte.
KeySeq String Die Sequenznummer des Primärschlüssels.
KeyName String Der Name des Primärschlüssels.

Sys_indexes

Beschreibt die verfügbaren Indizes. Durch das Filtern nach Indizes können Sie selektivere Abfragen mit schnelleren Abfrage schreiben.

Die folgende Abfrage ruft alle Indizes ab, die keine Primärschlüssel sind:

SELECT * FROM sys_indexes WHERE IsPrimary='false'
Spalten
Name Typ Beschreibung
CatalogName String Der Name der Datenbank, die den Index enthält.
SchemaName String Der Name des Schema, das den Index enthält.
TableName String Der Name der Tabelle, die den Index enthält.
IndexName String Der Indexname.
ColumnName String Der Name der mit dem Index verknüpften Spalte.
IsUnique Boolean Wahr, wenn der Index eindeutig ist. Andernfalls falsch.
IsPrimary Boolean Wahr, wenn der Index ein Primärschlüssel ist. Andernfalls falsch.
Type Int16 Ein ganzzahliger Wert, der dem Indextyp entspricht: Statistik (0), gruppiert (1), gehasht (2) oder Sonstiges (3).
SortOrder String Die Sortierreihenfolge: A für aufsteigend oder D für absteigend.
OrdinalPosition Int16 Die Sequenznummer der Spalte im Index.

Sys_connection_props

Gibt Informationen zu den verfügbaren Verbindungseigenschaften und den in der Verbindungszeichenfolge festgelegten Eigenschaften zurück.

Bei der Abfrage dieser Tabelle sollte die Konfigurationsverbindungszeichenfolge verwendet werden:

jdbc:cdata:couchbase:config:

Mit dieser Verbindungszeichenfolge können Sie diese Tabelle ohne eine gültige Verbindung Abfrage.

Die folgende Abfrage ruft alle Verbindungseigenschaften ab, die in der Verbindungszeichenfolge festgelegt oder über einen Standardwert gesetzt wurden:

SELECT * FROM sys_connection_props WHERE Value <> ''
Spalten
Name Typ Beschreibung
Name String Der Name der Verbindungseigenschaft.
ShortDescription String Eine kurze Beschreibung.
Type String Der Datentyp der Verbindungseigenschaft.
Default String Der Standardwert, sofern nicht explizit einer festgelegt wurde.
Values String Eine durch Kommas getrennte Liste möglicher Werte. Wenn ein anderer Wert angegeben wird, wird ein Validierungsfehler ausgegeben.
Value String Der von Ihnen festgelegte Wert oder ein vorkonfigurierter Standard.
Required Boolean Ob für die Immobilie eine Verbindung erforderlich ist.
Category String Die Kategorie der Verbindungseigenschaft.
IsSessionProperty String Ob die Eigenschaft eine Sitzungseigenschaft ist, die zum Speichern von Informationen zur aktuellen Verbindung verwendet wird.
Sensitivity String Die Vertraulichkeitsstufe der Eigenschaft. Diese gibt Aufschluss darüber, ob die Eigenschaft in Protokollierungs- und Authentifizierungsformularen verschleiert wird.
PropertyName String Eine verkürzte Form des Verbindungseigenschaftsnamens in Camel-Case-Schreibweise.
Ordinal Int32 Der Index des Parameters.
CatOrdinal Int32 Der Index der Parameterkategorie.
Hierarchy String Zeigt zugehörige abhängige Eigenschaften an, die zusammen mit dieser festgelegt werden müssen.
Visible Boolean Informiert, ob die Eigenschaft in der Verbindungs-Benutzeroberfläche sichtbar ist.
ETC String Verschiedene sonstige Informationen zum Objekt.

Sys_sqlinfo

Beschreibt die SELECT- Abfrage, die der Connector an die Datenquelle auslagern kann.

Entdecken der SELECT-Funktionen der Datenquelle

Nachfolgend sehen Sie einen Beispieldatensatz mit SQL-Funktionen. Einige Aspekte der SELECT-Funktionalität werden in einer durch Kommas getrennten Liste zurückgegeben, sofern sie unterstützt werden. Andernfalls enthält die Spalte NO.

Name Beschreibung Mögliche Werte
AGGREGATE_FUNCTIONS Unterstützte Aggregatfunktionen. AVG, COUNT, MAX, MIN, SUM, DISTINCT
COUNT Ob die COUNT-Funktion unterstützt wird. YES, NO
IDENTIFIER_QUOTE_OPEN_CHAR Das öffnende Zeichen, das zum Escapen eines Bezeichners verwendet wird. [
IDENTIFIER_QUOTE_CLOSE_CHAR Das abschließende Zeichen, das zum Escapen eines Bezeichners verwendet wird. ]
SUPPORTED_OPERATORS Eine Liste unterstützter SQL-Operatoren. =, >, <, >=, <=, <>, !=, LIKE, NOT LIKE, IN, NOT IN, IS NULL, IS NOT NULL, AND, OR
GROUP_BY Ob GROUP BY unterstützt wird und wenn ja, in welchem Umfang. NO, NO_RELATION, EQUALS_SELECT, SQL_GB_COLLATE
STRING_FUNCTIONS Unterstützte String-Funktionen. LENGTH, CHAR, LOCATE, REPLACE, SUBSTRING, RTRIM, LTRIM, RIGHT, LEFT, UCASE, SPACE, SOUNDEX, LCASE, CONCAT, ASCII, REPEAT, OCTET, BIT, POSITION, INSERT, TRIM, UPPER, REGEXP, LOWER, DIFFERENCE, CHARACTER, SUBSTR, STR, REVERSE, PLAN, UUIDTOSTR, TRANSLATE, TRAILING, TO, STUFF, STRTOUUID, STRING, SPLIT, SORTKEY, SIMILAR, REPLICATE, PATINDEX, LPAD, LEN, LEADING, KEY, INSTR, INSERTSTR, HTML, GRAPHICAL, CONVERT, COLLATION, CHARINDEX, BYTE
NUMERIC_FUNCTIONS Unterstützte numerische Funktionen. ABS, ACOS, ASIN, ATAN, ATAN2, CEILING, COS, COT, EXP, FLOOR, LOG, MOD, SIGN, SIN, SQRT, TAN, PI, RAND, DEGREES, LOG10, POWER, RADIANS, ROUND, TRUNCATE
TIMEDATE_FUNCTIONS Unterstützte Datums-/Uhrzeitfunktionen. NOW, CURDATE, DAYOFMONTH, DAYOFWEEK, DAYOFYEAR, MONTH, QUARTER, WEEK, YEAR, CURTIME, HOUR, MINUTE, SECOND, TIMESTAMPADD, TIMESTAMPDIFF, DAYNAME, MONTHNAME, CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP, EXTRACT
REPLICATION_SKIP_TABLES Zeigt an, dass während der Replikation Tabellen übersprungen wurden.
REPLICATION_TIMECHECK_COLUMNS Ein Zeichenfolgenarray mit einer Liste von Spalten, die (in der angegebenen Reihenfolge) zur Überprüfung verwendet werden, ob sie während der Replikation als geänderte Spalte verwendet werden sollen.
IDENTIFIER_PATTERN Zeichenfolgenwert, der angibt, welche Zeichenfolge für einen Bezeichner gültig ist.
SUPPORT_TRANSACTION Gibt an, ob der Anbieter Transaktionen wie Commit und Rollback unterstützt. YES, NO
DIALECT Gibt den zu verwendenden SQL-Dialekt an.
KEY_PROPERTIES Gibt die Eigenschaften an, die die einheitliche Datenbank identifizieren.
SUPPORTS_MULTIPLE_SCHEMAS Gibt an, ob für den Anbieter mehrere Schemas vorhanden sein können. YES, NO
SUPPORTS_MULTIPLE_CATALOGS Gibt an, ob für den Anbieter mehrere Kataloge vorhanden sein können. YES, NO
DATASYNCVERSION Die für den Zugriff auf diesen Treiber erforderliche Data Sync-Version. Standard, Starter, Professional, Enterprise
DATASYNCCATEGORY Die Kategorie „Datensynchronisierung“ dieses Treiber. Source, Destination, Cloud Destination
SUPPORTSENHANCEDSQL Ob erweiterte SQL-Funktionen über das hinaus, was die API bietet, unterstützt werden. TRUE, FALSE
SUPPORTS_BATCH_OPERATIONS Ob Charge Operationen unterstützt werden. YES, NO
SQL_CAP Alle unterstützten SQL-Funktionen für diesen Treiber. SELECT, INSERT, DELETE, UPDATE, TRANSACTIONS, ORDERBY, OAUTH, ASSIGNEDID, LIMIT, LIKE, BULKINSERT, COUNT, BULKDELETE, BULKUPDATE, GROUPBY, HAVING, AGGS, OFFSET, REPLICATE, COUNTDISTINCT, JOINS, DROP, CREATE, DISTINCT, INNERJOINS, SUBQUERIES, ALTER, MULTIPLESCHEMAS, GROUPBYNORELATION, OUTERJOINS, UNIONALL, UNION, UPSERT, GETDELETED, CROSSJOINS, GROUPBYCOLLATE, MULTIPLECATS, FULLOUTERJOIN, MERGE, JSONEXTRACT, BULKUPSERT, SUM, SUBQUERIESFULL, MIN, MAX, JOINSFULL, XMLEXTRACT, AVG, MULTISTATEMENTS, FOREIGNKEYS, CASE, LEFTJOINS, COMMAJOINS, WITH, LITERALS, RENAME, NESTEDTABLES, EXECUTE, BATCH, BASIC, INDEX
PREFERRED_CACHE_OPTIONS Ein Zeichenfolgenwert gibt die bevorzugten Cacheoptionen an.
ENABLE_EF_ADVANCED_QUERY Gibt an, ob der Treiber erweiterte Abfragen aus dem Entity Framework direkt unterstützt. Wenn nicht, werden die Abfragen clientseitig verarbeitet. YES, NO
PSEUDO_COLUMNS Ein Zeichenfolgenarray, das die verfügbaren Pseudospalten angibt.
MERGE_ALWAYS Wenn der Wert „true“ ist, wird der Merge-Modus in der Datensynchronisierung zwangsweise ausgeführt. TRUE, FALSE
REPLICATION_MIN_DATE_QUERY Eine Abfrage zum Zurückgeben des Startdatums und der Startzeit der Replikation.
REPLICATION_MIN_FUNCTION Ermöglicht einem Anbieter, den Formelnamen anzugeben, der zum Ausführen eines serverseitigen Minimums verwendet werden soll.
REPLICATION_START_DATE Ermöglicht einem Anbieter, ein Replikationsstartdatum anzugeben.
REPLICATION_MAX_DATE_QUERY Eine Abfrage zum Zurückgeben des Enddatums und der Endzeit der Replikation.
REPLICATION_MAX_FUNCTION Ermöglicht einem Anbieter, den Formelnamen anzugeben, der zur Ausführung eines serverseitigen Max. verwendet werden soll.
IGNORE_INTERVALS_ON_INITIAL_REPLICATE Eine Liste von Tabellen, bei denen das Aufteilen der Replikation in Blöcke bei der ersten Replikation übersprungen wird.
CHECKCACHE_USE_PARENTID Gibt an, ob die CheckCache-Anweisung für die übergeordnete Schlüsselspalte ausgeführt werden soll. TRUE, FALSE
CREATE_SCHEMA_PROCEDURES Gibt gespeicherte Prozeduren an, die zum Generieren von Schema verwendet werden können.

Die folgende Abfrage ruft die Operatoren ab, die in der WHERE-Klausel verwendet werden können:

SELECT * FROM sys_sqlinfo WHERE Name = 'SUPPORTED_OPERATORS'

Beachten Sie, dass einzelne Tabellen unterschiedliche Einschränkungen oder Anforderungen an die WHERE-Klausel haben können; siehe Datenmodell Abschnitt für weitere Informationen.

Spalten
Name Typ Beschreibung
NAME String Eine Komponente der SQL-Syntax oder eine Funktion, die auf dem Server verarbeitet werden kann.
VALUE String Details zum unterstützten SQL bzw. zur SQL-Syntax.

Systemidentität

Gibt Informationen zu versuchten Änderungen zurück.

Die folgende Abfrage ruft die IDs der geänderten Zeilen in einer Operation Charge:

SELECT * FROM sys_identity
Spalten
Name Typ Beschreibung
Id String Die von einer Operation zurückgegebene, von der Datenbank generierte ID.
Batch String Eine Kennung für den Charge. 1 für einen einzelnen Operation.
Operation String Das Ergebnis der Operation im Charge: EINGEFÜGT, AKTUALISIERT oder GELÖSCHT.
Message String SUCCESS oder eine Fehlermeldung, wenn das Update im Charge fehlgeschlagen ist.

Erweiterte Konfigurationseigenschaften

Die erweiterten Konfigurationseigenschaften sind die verschiedenen Optionen, die zum Herstellen einer Verbindung verwendet werden können. Dieser Abschnitt enthält eine vollständige Liste der Optionen, die Sie konfigurieren können. Klicken Sie auf die Links, um weitere Einzelheiten zu erfahren.

Authentifizierung

Eigenschaft Beschreibung
AuthScheme Der zu verwendende Authentifizierungstyp bei der Verbindung mit Couchbase.
User Das zur Authentifizierung verwendete Couchbase Benutzerkonto.
Password Das zur Authentifizierung des Benutzers verwendete Kennwort.
CredentialsFile Verwenden Sie diese Eigenschaft, wenn Sie Anmeldeinformationen für mehrere Benutzer oder Buckets bereitstellen müssen. Diese Datei hat Vorrang vor anderen Authentifizierungsformen.
Server Die Adresse des oder der Couchbase-Server, mit denen Sie eine Verbindung herstellen.
CouchbaseService Bestimmt den Couchbase-Dienst, mit dem eine Verbindung hergestellt werden soll. Standard ist N1QL. Verfügbare Optionen sind N1QL und Analytics.
ConnectionMode Bestimmt, wie die Verbindung zum Couchbase-Server hergestellt wird. Muss entweder „Direkt“ oder „Cloud“ sein.
DNSServer Bestimmt, welcher DNS-Server zum Abrufen von Couchbase Capella-Informationen verwendet werden soll.
N1QLPort Der Port oder die URL für die Verbindung mit dem Couchbase N1QL Endpoint.
AnalyticsPort Der Port oder die URL für die Verbindung mit dem Couchbase Analytics-Endpoint.
WebConsolePort Der Port oder die URL für die Verbindung mit der Couchbase Webkonsole.

SSL

Eigenschaft Beschreibung
SSLClientCert Der TLS/SSL-Client-Zertifikatspeicher für die SSL-Client-Authentifizierung (bidirektionales SSL).
SSLClientCertType Der Typ des Schlüsselspeichers, der das TLS/SSL-Client-Zertifikat enthält.
SSLClientCertPassword Das Passwort für das TLS/SSL-Client-Zertifikat.
SSLClientCertSubject Der Betreff des TLS/SSL-Client-Zertifikats.
UseSSL Ob TLS/SSL bei der Verbindung mit dem Couchbase-Server ausgehandelt werden soll.
SSLServerCert Das vom Server zu akzeptierende Zertifikat bei einer Verbindung per TLS/SSL.

Schema

Eigenschaft Beschreibung
Location Ein Pfad zum Verzeichnis, das die Schema enthält, die Tabellen, Ansichten und gespeicherte Prozeduren definieren.
BrowsableSchemas Diese Eigenschaft beschränkt die gemeldeten Schemata auf eine Teilmenge der verfügbaren Schemata. Beispiel: BrowsableSchemas=SchemaA, SchemaB, SchemaC.
Tables Diese Eigenschaft beschränkt die gemeldeten Tabellen auf eine Teilmenge der verfügbaren Tabellen. Beispiel: Tabellen=TabelleA, TabelleB, TabelleC.
Views Beschränkt die gemeldeten Ansichten auf eine Teilmenge der verfügbaren Tabellen. Beispiel: Ansichten=AnsichtA, AnsichtB, AnsichtC.
Dataverse Welches Analytics-Dataverse beim Erkennen von Tabellen gescannt werden soll.
TypeDetectionScheme Bestimmt, wie der Anbieter Tabellen und Spalten aus den in Couchbase gefundenen Buckets erstellt.
InferNumSampleValues Die maximale Anzahl von Werten, die für jedes Feld gescannt werden sollen, bevor sein Datentyp bestimmt wird. Gilt für die automatische Schemaerkennung, wenn TypeDetectionScheme auf INFER eingestellt ist.
InferSampleSize Die maximale Anzahl von Dokumenten, die nach den im Bucket verfügbaren Spalten durchsucht werden sollen. Gilt für die automatische Schemaerkennung, wenn TypeDetectionScheme auf INFER eingestellt ist.
InferSimilarityMetric Gibt den Ähnlichkeitsgrad an, bei dem verschiedene Schemata als gleichartig betrachtet werden. Gilt für die automatische Schemaerkennung, wenn TypeDetectionScheme auf INFER eingestellt ist.
FlexibleSchemas Ob der Anbieter Abfragen die Verwendung von Spalten erlaubt, die er nicht erkannt hat.
ExposeTTL Gibt an, ob TTL-Informationen des Dokuments angezeigt werden sollen.
NumericStrings Ob Zeichenfolgenwerte als Zahlen behandelt werden dürfen.
IgnoreChildAggregates Gibt an, ob der Anbieter aggregierte Spalten verfügbar macht, die auch als untergeordnete Tabellen verfügbar sind. Wird ignoriert, wenn TableSupport nicht auf Full eingestellt ist.
TableSupport Wie viel Aufwand der Anbieter in die Ermittlung von Tabellen auf dem Couchbase-Server stecken wird.
NewChildJoinsMode Bestimmt die Art des untergeordneten Tabellenmodells, das der Anbieter verfügbar macht.

Verschiedenes

Eigenschaft Beschreibung
AllowJSONParameters Ermöglicht die Verwendung von reinem JSON in Parametern, wenn QueryPassthrough aktiviert ist.
ChildSeparator Das oder die Zeichen, die zur Kennzeichnung untergeordneter Tabellen verwendet werden.
CreateTableRamQuota Das Standard-RAM-Kontingent in Megabyte, das beim Einfügen von Buckets über die CREATE TABLE-Syntax verwendet werden soll.
DataverseSeparator Das oder die Zeichen, die zur Kennzeichnung von Analytics-Dataverses und-Bereichen/-Sammlungen verwendet werden.
FlattenArrays Die Anzahl der Elemente, die als Spalten aus verschachtelten Arrays verfügbar gemacht werden sollen. Wird ignoriert, wenn „IgnoreChildAggregates“ aktiviert ist.
FlattenObjects Setzen Sie FlattenObjects auf true, um Objekteigenschaften in eigene Spalten zu reduzieren. Andernfalls werden in Arrays verschachtelte Objekte als JSON-Strings zurückgegeben.
FlavorSeparator Das oder die Zeichen, die zur Bezeichnung von Geschmacksrichtungen verwendet werden.
GenerateSchemaFiles Gibt die Benutzerpräferenz an, wann Schemata generiert und gespeichert werden sollen.
InsertNullValues Bestimmt, ob ein INSERT Felder mit NULL-Werten einschließen soll.
MaxRows Begrenzt die Anzahl der zurückgegebenen Zeilen, wenn in der Abfrage keine Aggregation oder GROUP BY verwendet wird. Dies hat Vorrang vor LIMIT-Klauseln.
Other Diese versteckten Eigenschaften werden nur in bestimmten Anwendungsfällen verwendet.
Pagesize Die maximale Anzahl der Ergebnisse, die pro Seite von Couchbase zurückgegeben werden sollen.
PeriodsSeparator Das oder die Zeichen, die zur Kennzeichnung der Hierarchie verwendet werden.
PseudoColumns Diese Eigenschaft gibt an, ob Pseudospalten als Spalten in die Tabelle aufgenommen werden sollen oder nicht.
QueryExecutionTimeout Dadurch wird das serverseitige Timeout für die Abfrage festgelegt, das bestimmt, wie lange Couchbase die Abfrage ausführt, bevor ein Timeout-Fehler zurückgegeben wird.
QueryPassthrough Diese Option übergibt die Abfrage unverändert an den Couchbase-Server.
RowScanDepth Die maximale Anzahl der zu scannenden Zeilen, um nach den in einer Tabelle verfügbaren Spalten zu suchen.
StrictComparison Passt an, wie genau Filter für SQL-Eingabeabfragen in Couchbase Abfragen übersetzt werden. Dies kann auf eine durch Kommas getrennte Werteliste eingestellt werden, wobei jeder Wert ein Datum, eine Zahl, ein Boolescher Wert oder eine Zeichenfolge sein kann.
Timeout Der Wert in Sekunden, bis der Timeout-Fehler auftritt und der Operation abgebrochen wird.
TransactionDurability Gibt an, wie ein Dokument gespeichert werden muss, damit eine Transaktion erfolgreich ist. Gibt an, ob bei der Ausführung von Abfragen N1QL-Transaktionen verwendet werden sollen.
TransactionTimeout Dadurch wird die Zeitspanne festgelegt, in der eine Transaktion ausgeführt werden kann, bevor sie von Couchbase als abgelaufen eingestuft wird.
UpdateNullValues Bestimmt, ob ein UPDATE NULL-Werte als NULL schreibt oder entfernt.
UseCollectionsForDDL Ob angenommen werden soll, dass CREATE TABLE-Anweisungen Sammlungen statt Varianten verwenden. Wird nur wirksam, wenn eine Verbindung zu Couchbase v7+ hergestellt wird und GenerateSchemaFiles auf OnCreate eingestellt ist.
UserDefinedViews Ein Dateipfad, der auf die JSON-Konfigurationsdatei verweist, die Ihre benutzerdefinierten Ansichten enthält.
UseTransactions Gibt an, ob beim Ausführen von Abfragen N1QL-Transaktionen verwendet werden sollen.
ValidateJSONParameters Ermöglicht dem Anbieter, zu prüfen, ob die Zeichenfolgenparameter gültiges JSON sind, bevor die Abfrage an Couchbase gesendet wird.

Authentifizierung

Dieser Abschnitt enthält eine vollständige Liste der Authentifizierungseigenschaften, die Sie konfigurieren können.

Eigenschaft Beschreibung
AuthScheme Der zu verwendende Authentifizierungstyp bei der Verbindung mit Couchbase.
User Das zur Authentifizierung verwendete Couchbase Benutzerkonto.
Password Das zur Authentifizierung des Benutzers verwendete Kennwort.
CredentialsFile Verwenden Sie diese Eigenschaft, wenn Sie Anmeldeinformationen für mehrere Benutzer oder Buckets bereitstellen müssen. Diese Datei hat Vorrang vor anderen Authentifizierungsformen.
Server Die Adresse des oder der Couchbase-Server, mit denen Sie eine Verbindung herstellen.
CouchbaseService Bestimmt den Couchbase-Dienst, mit dem eine Verbindung hergestellt werden soll. Standard ist N1QL. Verfügbare Optionen sind N1QL und Analytics.
ConnectionMode Bestimmt, wie die Verbindung zum Couchbase-Server hergestellt wird. Muss entweder „Direkt“ oder „Cloud“ sein.
DNSServer Bestimmt, welcher DNS-Server zum Abrufen von Couchbase Capella-Informationen verwendet werden soll.
N1QLPort Der Port oder die URL für die Verbindung mit dem Couchbase N1QL Endpoint.
AnalyticsPort Der Port oder die URL für die Verbindung mit dem Couchbase Analytics-Endpoint.
WebConsolePort Der Port oder die URL für die Verbindung mit der Couchbase Webkonsole.

AuthScheme

Der bei der Verbindung mit Couchbase zu verwendende Authentifizierungstyp.

Mögliche Werte

Auto, Basic, CredentialsFile, SSLCertificate

Datentyp

string

Standardwert

Auto

Hinweise
  • Auto: Diese Option ist veraltet und nur aus Kompatibilitätsgründen enthalten.
  • Basic: Verwendet HTTP Basic-Authentifizierung mit Benutzer und Passwort.
  • CredentialsFile: Verwendet eine Anmeldeinformationsdatei. Dies erfordert, dass die CredentialsFile-Eigenschaft muss festgelegt werden.
  • SSLCertificate: Verwendet SSL-Client-Zertifikatauthentifizierung. Erfordert, dass UseSSL aktiviert sein und dass SSLClientCert und SSLClientCertType eingestellt werden.

Beachten Sie, dass bei Verwendung des „Cloud“-ConnectionMode nur die Basisauthentifizierung unterstützt wird.

Benutzer

Das zur Authentifizierung verwendete Couchbase Benutzerkonto.

Datentyp

string

Standardwert

""

Hinweise

Zusammen mit Passwort, wird dieses Feld zur Authentifizierung gegenüber dem Couchbase-Server verwendet.

Passwort

Das zur Authentifizierung des Benutzers verwendete Passwort.

Datentyp

string

Standardwert

""

Hinweise

Der Benutzer Und Password werden zusammen zur Authentifizierung beim Server verwendet.

Anmeldeinformationsdatei

Verwenden Sie diese Eigenschaft, wenn Sie Anmeldeinformationen für mehrere Benutzer oder Buckets bereitstellen müssen. Diese Datei hat Vorrang vor anderen Authentifizierungsformen.

Datentyp

string

Standardwert

""

Hinweise

Verwenden Sie diese Eigenschaft, wenn Sie Anmeldeinformationen für mehrere Benutzer oder Buckets angeben müssen. Dies hat Vorrang vor anderen Formen der Authentifizierung.

Set CredentialsFile zum Pfad zu einer Datei mit der gleichen Auszeichnung wie unten:

[{"user": "YourUserName1", "pass":"YourPassword1"},
{"user": "YourUserName2", "pass":"YourPassword2"}]

Server

Die Adresse des oder der Couchbase-Server, mit denen Sie eine Verbindung herstellen.

Datentyp

string

Standardwert

""

Hinweise

Dieser Wert kann auf einen Hostnamen oder eine IP-Adresse gesetzt werden, wie „couchbase-server.com“ oder „1.2.3.4“. Er kann auch auf eine HTTP- oder HTTPS- URL gesetzt werden, wie „https://couchbase-server.com" oder "http://1.2.3.4". Wenn ConnectionMode auf „Cloud“ eingestellt ist, sollte dies der Hostname der Couchbase Cloud-Instanz sein, wie in der Systemsteuerung angegeben.

Wenn das URL Formular verwendet wird, wird durch das Setzen dieser Option auch die Option UseSSL gesetzt Option: Wenn das URL Schema "https://", dann UseSSL wird auf true gesetzt und eine URL mit "http://" setzt UseSSL auf false.

Ein Port kann nicht als Teil dieser Option verwendet werden, daher sind Werte wie "http://couchbase-server.com:8093" sind nicht erlaubt. Bitte verwenden Sie WebConsolePort, N1QLPort und AnalyticsPort.

Dieser Wert kann auch mehrere Server im obigen Format akzeptieren, die durch Kommas getrennt sind, z. B. „1.2.3.4, couchbase-server.com“. Dadurch kann der Connector die Verbindung wiederherstellen, falls einige der aufgelisteten Server nicht erreichbar sind.

Beachten Sie, dass der Connector zwar versucht, die Verbindung als Ganzes wiederherzustellen, dabei aber einzelne Vorgänge verlieren kann. Beispielsweise schlägt eine lang andauernde Abfrage fehl, wenn der Server während der Ausführung dieser Abfrage nicht mehr erreichbar ist. Die Abfrage kann jedoch über dieselbe Verbindung wiederholt werden und der Connector führt sie auf dem nächsten aktiven Server aus.

CouchbaseService

Bestimmt den Couchbase-Dienst, mit dem eine Verbindung hergestellt werden soll. Standard ist N1QL. Verfügbare Optionen sind N1QL und Analytics.

Mögliche Werte

N1QL, Analytics

Datentyp

string

Standardwert

N1QL

Hinweise

Bestimmt den Couchbase-Dienst, mit dem eine Verbindung hergestellt werden soll. Standard ist N1QL. Verfügbare Optionen sind N1QL und Analytics

Verbindungsmodus

Bestimmt, wie die Verbindung zum Couchbase-Server hergestellt wird. Muss entweder „Direkt“ oder „Cloud“ sein.

Mögliche Werte

Direct, Cloud

Datentyp

string

Standardwert

Direct

Hinweise

Standardmäßig stellt der Connector eine direkte Verbindung zu Couchbase her und verwendet dabei die im Feld Server angegebene Adresse Option. Die Option Server muss der entsprechende CouchbaseService ausgeführt werden, um die Verbindung zu akzeptieren. Dies funktioniert in den meisten lokalen oder einfachen Cloudbereitstellungen.

Dies sollte auf Cloud eingestellt werden, wenn eine Verbindung zu Couchbase Capella oder einer benutzerdefinierten Bereitstellung hergestellt wird, die Servicedatensätze verwendet. Diese Datensätze ermöglichen es dem Connector, die genauen Couchbase-Server zu bestimmen, die den entsprechenden CouchbaseService bereitstellen. Sie müssen auch den DNSServer-Eigenschaft, damit der Connector diese Servicedatensätze abrufen kann.

Beachten Sie, dass das Aktivieren des Cloud-Modus diese Verbindungseigenschaften mit den durch die Kontaktaufnahme mit dem Cluster ermittelten Werten überschreibt:

  • Server
  • N1QLPort
  • AnalyticsPort

DNS-Server

Bestimmt, welcher DNS-Server zum Abrufen von Couchbase Capella-Informationen verwendet werden soll.

Datentyp

string

Standardwert

""

Hinweise

In den meisten Fällen kann hier jeder öffentliche DNS-Server angegeben werden, beispielsweise die von OpenDNS, Cloudflare oder Google.

Wenn diese nicht zugänglich sind, müssen Sie den von Ihrem Netzwerkadministrator konfigurierten DNS-Server verwenden.

N1QLPort

Der Port oder die URL für die Verbindung mit dem Couchbase N1QL Endpoint.

Datentyp

string

Standardwert

""

Hinweise

Dieser Port wird zum Senden von Abfragen verwendet, wenn CouchbaseService ist auf N1QL eingestellt. Alle Anfragen zur Verwaltung von Indizes werden ebenfalls über diesen Port geleitet. Der Standardwert ist 8093, wenn kein SSL verwendet wird, und 18093, wenn SSL verwendet wird. Siehe UseSSL.

Diese Option kann auf zwei Arten festgelegt werden:

  • Als Port wie „1234“. Mit dieser Einstellung sendet der Connector N1QL-Anfragen an den Endpoint http://Server:N1QLPort/ Abfrage/Dienst. (oder https:// if Server Ist https:// oder UseSSL ist aktiviert).
  • Als vollständige URL wie "http://couchbase.example:1234/proxy". Mit dieser Einstellung sendet der Connector N1QL-Anfragen über den von Ihnen angegebenen Endpoint. Wenn Sie beispielsweise diese URL verwenden, werden N1QL-Anfragen an http://couchbase.example:1234/proxy/query/serivce. Server und UseSSL werden bei N1QL-Anfragen ignoriert.

AnalyticsPort

Der Port oder die URL für die Verbindung mit dem Couchbase Analytics-Endpoint.

Datentyp

string

Standardwert

""

Hinweise

Dieser Port wird zum Senden von Abfragen verwendet, wenn CouchbaseService ist auf Analytics eingestellt. Der Standardwert ist 8095, wenn kein SSL verwendet wird, und 18095, wenn SSL verwendet wird. Siehe UseSSL.

Diese Option kann auf zwei Arten festgelegt werden:

  • Als Port wie „1234“. Mit dieser Einstellung sendet der Connector Analytics-Abfragen an den Endpoint http://Server:AnalyticsPort/analytics/service (oder https:// if Server Ist https:// oder UseSSL ist aktiviert).
  • Als vollständige URL wie "http://couchbase.example:1234/proxy". Mit dieser Einstellung sendet der Connector Analytics-Anfragen über den von Ihnen angegebenen Endpoint. Wenn Sie beispielsweise diese URL verwenden, werden Analytics-Anfragen an http://couchbase.example:1234/proxy/analytics/serivce. Server und UseSSL werden bei Analytics-Anfragen ignoriert.

WebConsolePort

Der Port oder die URL für die Verbindung mit der Couchbase Webkonsole.

Datentyp

string

Standardwert

""

Hinweise

Dieser Port wird für API Operationen wie die Verwaltung von Buckets verwendet. Der Standardwert ist 8091, wenn kein SSL verwendet wird, und 18091, wenn SSL verwendet wird. Siehe UseSSL.

Diese Option kann auf zwei Arten festgelegt werden:

  • Als Port wie „1234“. Mit dieser Einstellung sendet der Connector Verwaltungsanfragen an http://Server:WebConsolePort/. Der genaue Endpoint hängt von der verwendeten Operation ab. Beispielsweise wird die Clusterstatusanfrage an den Endpoint http://Server gesendet:WebConsolePort/Schwimmbecken.
  • Als vollständige URL wie "http://couchbase.example:1234/proxy". Mit dieser Einstellung sendet der Connector Webkonsolenabfragen über den von Ihnen angegebenen Endpoint. Wenn Sie beispielsweise diese URL verwenden, wird die Clusterstatusanfrage (normalerweise unter /pools) an http://couchbase.example:1234/proxy/pools. Server und UseSSL werden bei Webkonsolenanfragen ignoriert.

SSL

Dieser Abschnitt enthält eine vollständige Liste der SSL-Eigenschaften, die Sie konfigurieren können.

Eigenschaft Beschreibung
SSLClientCert Der TLS/SSL-Client-Zertifikatspeicher für die SSL-Client-Authentifizierung (bidirektionales SSL).
SSLClientCertType Der Typ des Schlüsselspeichers, der das TLS/SSL-Client-Zertifikat enthält.
SSLClientCertPassword Das Passwort für das TLS/SSL-Client-Zertifikat.
SSLClientCertSubject Der Betreff des TLS/SSL-Client-Zertifikats.
UseSSL Ob TLS/SSL bei der Verbindung mit dem Couchbase-Server ausgehandelt werden soll.
SSLServerCert Das vom Server zu akzeptierende Zertifikat bei einer Verbindung per TLS/SSL.

SSLClientCert

Der TLS/SSL-Client-Zertifikatspeicher für die SSL-Client-Authentifizierung (bidirektionales SSL).

Datentyp

string

Standardwert

""

Hinweise

Der Name des Zertifikatspeichers für das Client-Zertifikat.

Der SSLClientCertType Feld gibt den Typ des durch angegebenen Zertifikatspeichers an SSLClientCert. Wenn der Store kennwortgeschützt ist, geben Sie das Kennwort in SSLClientCertPassword an.

SSLClientCert wird in Verbindung mit SSLClientCertSubject verwendet, um Client-Zertifikate anzugeben. Wenn SSLClientCert hat einen Wert und SSLClientCertSubject gesetzt ist, wird eine Suche nach einem Zertifikat eingeleitet. Siehe SSLClientCertSubject für weitere Informationen.

Die Bezeichnungen der Zertifikatsspeicher sind plattformabhängig.

Nachfolgend sind die Bezeichnungen der gebräuchlichsten Benutzer- und Maschinen-Zertifikatspeicher in Windows aufgeführt:

Eigenschaft Beschreibung
MY Ein Zertifikatsspeicher, der persönliche Zertifikate mit den zugehörigen privaten Schlüsseln enthält.
CA Zertifikate der Zertifizierungsstelle.
ROOT Stammzertifikate.
SPC Zertifikate von Softwareherstellern.

In Java ist der Zertifikatsspeicher normalerweise eine Datei, die Zertifikate und optionale private Schlüssel enthält.

Wenn der Zertifikatsspeichertyp PFXFile ist, muss diese Eigenschaft auf den Namen der Datei gesetzt werden. Wenn der Typ PFXBlob ist, muss die Eigenschaft auf den binären Inhalt einer PFX-Datei gesetzt werden (z. B. PKCS12-Zertifikatsspeicher).

SSLClientCertType

Der Typ des Schlüsselspeichers, der das TLS/SSL-Clientzertifikat enthält.

Mögliche Werte

USER, MACHINE, PFXFILE, PFXBLOB, JKSFILE, JKSBLOB, PEMKEY_FILE, PEMKEY_BLOB, PUBLIC_KEY_FILE, PUBLIC_KEY_BLOB, SSHPUBLIC_KEY_FILE, SSHPUBLIC_KEY_BLOB, P7BFILE, PPKFILE, XMLFILE, XMLBLOB

Datentyp

string

Standardwert

USER

Hinweise

Diese Eigenschaft kann einen der folgenden Werte annehmen:

Eigenschaft Beschreibung
USER - default Unter Windows gibt dies an, dass es sich bei dem Zertifikatspeicher um einen Zertifikatspeicher handelt, der dem aktuellen Benutzer gehört. Beachten Sie, dass dieser Speichertyp in Java nicht verfügbar ist.
MACHINE Unter Windows gibt dies an, dass es sich bei dem Zertifikatspeicher um einen Maschinenspeicher handelt. Beachten Sie, dass dieser Speichertyp in Java nicht verfügbar ist.
PFXFILE Der Zertifikatsspeicher ist der Name einer PFX-Datei (PKCS12), die Zertifikate enthält.
PFXBLOB Der Zertifikatsspeicher ist eine Zeichenfolge (Base-64-codiert), die einen Zertifikatsspeicher im PFX-Format (PKCS12) darstellt.
JKSFILE Der Zertifikatsspeicher ist der Name einer Java Key Store (JKS)-Datei, die Zertifikate enthält. Beachten Sie, dass dieser Speichertyp nur in Java verfügbar ist.
JKSBLOB Der Zertifikatsspeicher ist eine Zeichenfolge (base-64-codiert), die einen Zertifikatsspeicher im JKS-Format darstellt. Beachten Sie, dass dieser Speichertyp nur in Java verfügbar ist.
PEMKEY_FILE Der Zertifikatsspeicher ist der Name einer PEM-codierten Datei, die einen privaten Schlüssel und ein optionales Zertifikat enthält.
PEMKEY_BLOB Der Zertifikatsspeicher ist eine Zeichenfolge (base64-codiert), die einen privaten Schlüssel und ein optionales Zertifikat enthält.
PUBLIC_KEY_FILE Der Zertifikatsspeicher ist der Name einer Datei, die ein PEM- oder DER-codiertes öffentliches Schlüsselzertifikat enthält.
PUBLIC_KEY_BLOB Der Zertifikatsspeicher ist eine Zeichenfolge (Base-64-codiert), die ein PEM- oder DER-codiertes öffentliches Schlüsselzertifikat enthält.
SSHPUBLIC_KEY_FILE Der Zertifikatsspeicher ist der Name einer Datei, die einen öffentlichen Schlüssel im SSH-Stil enthält.
SSHPUBLIC_KEY_BLOB Der Zertifikatsspeicher ist eine Zeichenfolge (Base-64-codiert), die einen öffentlichen Schlüssel im SSH-Stil enthält.
P7BFILE Der Zertifikatsspeicher ist der Name einer PKCS7-Datei, die Zertifikate enthält.
PPKFILE Der Zertifikatsspeicher ist der Name einer Datei, die einen privaten PuTTY-Schlüssel (PPK) enthält.
XMLFILE Der Zertifikatsspeicher ist der Name einer Datei, die ein Zertifikat im XML-Format enthält.
XMLBLOB Der Zertifikatsspeicher ist eine Zeichenfolge, die ein Zertifikat im XML-Format enthält.

SSLClientCertPassword

Das Passwort für das TLS/SSL-Client-Zertifikat.

Datentyp

string

Standardwert

""

Hinweise

Wenn der Zertifikatspeicher von einem Typ ist, der ein Passwort erfordert, wird diese Eigenschaft verwendet, um dieses Passwort zum Öffnen des Zertifikatspeichers anzugeben.

SSLClientCertSubject

Der Betreff des TLS/SSL-Client-Zertifikats.

Datentyp

string

Standardwert

*

Hinweise

Beim Laden eines Zertifikats wird der Betreff verwendet, um das Zertifikat im Speicher zu lokalisieren.

Wenn keine genaue Übereinstimmung gefunden wird, wird der Speicher nach Betreffs durchsucht, die den Wert der Eigenschaft enthalten. Wenn immer noch keine Übereinstimmung gefunden wird, wird die Eigenschaft auf eine leere Zeichenfolge gesetzt und kein Zertifikat ausgewählt.

Der spezielle Wert „*“ wählt das erste Zertifikat im Zertifikatspeicher aus.

Der Betreff des Zertifikats ist eine durch Kommas getrennte Liste von Distinguished Name-Feldern und-Werten. Beispiel: „CN=www.server.com, OU=test, C=US, E=support@company.com“. Die allgemeinen Felder und ihre Bedeutungen werden unten angezeigt.

Feld Bedeutung
CN Allgemeiner Name. Dies ist normalerweise ein Host wie www.server.com.
O Organisation
OU Organisationseinheit
L Ort
S Staat
C Land
E Email Adresse

Wenn ein Feldwert ein Komma enthält, muss es in Anführungszeichen gesetzt werden.

Verwenden Sie SSL

Ob TLS/SSL bei der Verbindung mit dem Couchbase-Server ausgehandelt werden soll.

Datentyp

bool

Standardwert

false

Hinweise

Wenn dies auf „true“ gesetzt ist, ändern sich die Standardwerte für die folgenden Optionen:

Eigenschaft Beschreibung
Property Klartext-Standard SSL-Standard
[AnalyticsPort](#RSBCouchbase_p_AnalyticsPort) 8095 18095
[N1QLPort](#RSBCouchbase_p_N1QLPort) 8093 18093
[WebConsolePort](#RSBCouchbase_p_WebConsolePort) 8091 18091

Diese Option sollte bei der Verbindung mit Couchbase Capella aktiviert werden, da alle Capella-Bereitstellungen standardmäßig SSL verwenden.

SSLServerCert

Das vom Server zu akzeptierende Zertifikat bei einer Verbindung über TLS/SSL.

Datentyp

string

Standardwert

""

Hinweise

Bei Verwendung einer TLS/SSL-Verbindung kann diese Eigenschaft verwendet werden, um das vom Server zu akzeptierende TLS/SSL-Zertifikat anzugeben. Jedes andere Zertifikat, dem der Computer nicht vertraut, wird abgelehnt.

Diese Eigenschaft kann folgende Formen annehmen:

Beschreibung Beispiel
Ein vollständiges PEM-Zertifikat (Beispiel der Kürze halber gekürzt) -----BEGIN CERTIFICATE----- MIIChTCCAe4CAQAwDQYJKoZIhv......Qw== -----END CERTIFICATE-----
Ein Pfad zu einer lokalen Datei, die das Zertifikat enthält C:\\cert.cer
Der öffentliche Schlüssel (Beispiel der Kürze halber gekürzt) -----BEGIN RSA PUBLIC KEY----- MIGfMA0GCSq......AQAB -----END RSA PUBLIC KEY-----
Der MD5-Fingerabdruck (Hexadezimalwerte können auch durch Leerzeichen oder Doppelpunkte getrennt sein) ecadbdda5a1529c58a1e9e09828d70e4
Der SHA1-Fingerabdruck (Hex-Werte können auch durch Leerzeichen oder Doppelpunkte getrennt sein) 34a929226ae0819f2ec14b4a3d904f801cbb150d

Wenn nicht angegeben, wird jedes vom Computer vertrauenswürdige Zertifikat akzeptiert.

Zertifikate werden vom Computer basierend auf dem Trust Store des Systems als vertrauenswürdig validiert. Der verwendete Trust Store ist der für das System angegebene Wert „javax.net.ssl.trustStore“. Wenn für diese Eigenschaft kein Wert angegeben ist, wird der Standard-Trust Store von Java verwendet (z. B. JAVA_HOME\lib\security\cacerts).

Verwenden Sie „*“, um anzugeben, dass alle Zertifikate akzeptiert werden. Beachten Sie, dass dies aus Sicherheitsgründen nicht empfohlen wird.

Schema

Dieser Abschnitt enthält eine vollständige Liste der Schema, die Sie konfigurieren können.

Eigenschaft Beschreibung
Location Ein Pfad zum Verzeichnis, das die Schema enthält, die Tabellen, Ansichten und gespeicherte Prozeduren definieren.
BrowsableSchemas Diese Eigenschaft beschränkt die gemeldeten Schemata auf eine Teilmenge der verfügbaren Schemata. Beispiel: BrowsableSchemas=SchemaA, SchemaB, SchemaC.
Tables Diese Eigenschaft beschränkt die gemeldeten Tabellen auf eine Teilmenge der verfügbaren Tabellen. Beispiel: Tabellen=TabelleA, TabelleB, TabelleC.
Views Beschränkt die gemeldeten Ansichten auf eine Teilmenge der verfügbaren Tabellen. Beispiel: Ansichten=AnsichtA, AnsichtB, AnsichtC.
Dataverse Welches Analytics-Dataverse beim Erkennen von Tabellen gescannt werden soll.
TypeDetectionScheme Bestimmt, wie der Anbieter Tabellen und Spalten aus den in Couchbase gefundenen Buckets erstellt.
InferNumSampleValues Die maximale Anzahl von Werten, die für jedes Feld gescannt werden sollen, bevor sein Datentyp bestimmt wird. Gilt für die automatische Schemaerkennung, wenn TypeDetectionScheme auf INFER eingestellt ist.
InferSampleSize Die maximale Anzahl von Dokumenten, die nach den im Bucket verfügbaren Spalten durchsucht werden sollen. Gilt für die automatische Schemaerkennung, wenn TypeDetectionScheme auf INFER eingestellt ist.
InferSimilarityMetric Gibt den Ähnlichkeitsgrad an, bei dem verschiedene Schemata als gleichartig betrachtet werden. Gilt für die automatische Schemaerkennung, wenn TypeDetectionScheme auf INFER eingestellt ist.
FlexibleSchemas Ob der Anbieter Abfragen die Verwendung von Spalten erlaubt, die er nicht erkannt hat.
ExposeTTL Gibt an, ob TTL-Informationen des Dokuments angezeigt werden sollen.
NumericStrings Ob Zeichenfolgenwerte als Zahlen behandelt werden dürfen.
IgnoreChildAggregates Gibt an, ob der Anbieter aggregierte Spalten verfügbar macht, die auch als untergeordnete Tabellen verfügbar sind. Wird ignoriert, wenn TableSupport nicht auf Full eingestellt ist.
TableSupport Wie viel Aufwand der Anbieter in die Ermittlung von Tabellen auf dem Couchbase-Server stecken wird.
NewChildJoinsMode Bestimmt die Art des untergeordneten Tabellenmodells, das der Anbieter verfügbar macht.

Standort

Ein Pfad zum Verzeichnis, das die Schema enthält, die Tabellen, Ansichten und gespeicherte Prozeduren definieren.

Datentyp

string

Standardwert

%APPDATA%\Couchbase Data Provider\Schema

Hinweise

Der Pfad zu einem Verzeichnis, das die Schema für den Connector enthält (.rsd-Dateien für Tabellen und Ansichten, .rsb-Dateien für gespeicherte Prozeduren). Der Ordnerspeicherort kann ein relativer Pfad vom Speicherort der ausführbaren Datei sein. Der Location Die Eigenschaft wird nur benötigt, wenn Sie Definitionen anpassen (z. B. einen Spaltennamen ändern, eine Spalte ignorieren usw.) oder das Datenmodell mit neuen Tabellen, Ansichten oder gespeicherten Prozeduren erweitern möchten.

Wenn nichts angegeben wird, ist der Standardspeicherort "%APPDATA%\ Couchbase Data Provider\Schema" mit %APPDATA% wird auf das Konfigurationsverzeichnis des Benutzers eingestellt:

Plattform %APPDATA%
Windows Der Wert der Umfeld APPDATA
Mac ~/Bibliothek/Anwendungsunterstützung
Linux ~/.config

DurchsuchbareSchemas

Diese Eigenschaft beschränkt die gemeldeten Schemata auf eine Teilmenge der verfügbaren Schemata. Beispiel: BrowsableSchemas=SchemaA,SchemaB,SchemaC.

Datentyp

string

Standardwert

""

Hinweise

Das Auflisten der Schemata aus Datenbanken kann aufwändig sein. Die Bereitstellung einer Liste von Schemata in der Verbindungszeichenfolge verbessert die Leistung.

Tabellen

Diese Eigenschaft beschränkt die gemeldeten Tabellen auf eine Teilmenge der verfügbaren Tabellen. Beispiel: Tabellen=TabelleA,TabelleB,TabelleC.

Datentyp

string

Standardwert

""

Hinweise

Das Auflisten der Tabellen aus einigen Datenbanken kann teuer sein. Die Bereitstellung einer Liste von Tabellen in der Verbindungszeichenfolge verbessert die Leistung des Connectors.

Diese Eigenschaft kann auch als Alternative zum automatischen Auflisten von Ansichten verwendet werden, wenn Sie bereits wissen, mit welchen Sie arbeiten möchten, und es sonst zu viele wären.

Geben Sie die gewünschten Tabellen in einer durch Kommas getrennten Liste an. Jede Tabelle sollte ein gültiger SQL-Bezeichner sein, wobei alle Sonderzeichen mit eckigen Klammern, Anführungszeichen oder Backticks maskiert werden. Beispiel: Tables=TableA,[TableB/WithSlash],WithCatalog.WithSchema.`TableC With Space`.

Beachten Sie, dass Sie beim Herstellen einer Verbindung zu einer Datenquelle mit mehreren Schemata oder Katalogen den vollqualifizierten Namen der Tabelle in dieser Eigenschaft angeben müssen, wie im letzten Beispiel hier, um Mehrdeutigkeiten zwischen Tabellen zu vermeiden, die in mehreren Katalogen oder Schemata vorhanden sind.

Ansichten

Beschränkt die gemeldeten Ansichten auf eine Teilmenge der verfügbaren Tabellen. Beispiel: Ansichten=AnsichtA,AnsichtB,AnsichtC.

Datentyp

string

Standardwert

""

Hinweise

Das Auflisten der Ansichten aus einigen Datenbanken kann teuer sein. Die Bereitstellung einer Liste von Ansichten in der Verbindungszeichenfolge verbessert die Leistung des Connectors.

Diese Eigenschaft kann auch als Alternative zum automatischen Auflisten von Ansichten verwendet werden, wenn Sie bereits wissen, mit welchen Sie arbeiten möchten, und es sonst zu viele wären.

Geben Sie die gewünschten Ansichten in einer durch Kommas getrennten Liste an. Jede Ansicht sollte ein gültiger SQL-Bezeichner sein, wobei alle Sonderzeichen mit eckigen Klammern, Anführungszeichen oder Backticks maskiert werden. Beispiel: Views=ViewA,[ViewB/WithSlash],WithCatalog.WithSchema.`ViewC With Space`.

Beachten Sie, dass Sie beim Herstellen einer Verbindung zu einer Datenquelle mit mehreren Schemata oder Katalogen den vollqualifizierten Namen der Tabelle in dieser Eigenschaft angeben müssen, wie im letzten Beispiel hier, um Mehrdeutigkeiten zwischen Tabellen zu vermeiden, die in mehreren Katalogen oder Schemata vorhanden sind.

Dataverse

Welches Analytics-Dataverse beim Erkennen von Tabellen gescannt werden soll.

Datentyp

string

Standardwert

""

Hinweise

Diese Eigenschaft ist standardmäßig leer, was bedeutet, dass alle Dataverses gescannt und Tabellennamen wie in DataverseSeparator beschrieben generiert werden.

Wenn Sie dieser Eigenschaft einen nicht leeren Wert zuweisen, scannt der Connector nur das entsprechende Dataverse (wenn Sie dies beispielsweise auf „Standard“ setzen, wird das Standard-Dataverse gescannt). Da nur ein Dataverse gescannt wird, wird den Tabellennamen nicht der Dataverse-Name vorangestellt. Es wird empfohlen, diese Eigenschaft auf „Standard“ zu setzen, wenn Sie von einer früheren Version des Connectors kommen und Abwärtskompatibilität benötigen.

Wenn Sie eine Verbindung zu Couchbase 7.0 oder höher herstellen, wird diese Option als zusammengesetzter Name behandelt, der sowohl einen Datensatz als auch einen Bereich enthält. Wenn Sie beispielsweise zuvor Sammlungen wie diese erstellt haben:

CREATE ANALYTICS SCOPE websites.exampledotcom
CREATE ANALYTICS COLLECTION websites.exampledotcom.traffic ON examplecom_traffic_bucket
CREATE ANALYTICS COLLECTION websites.exampledotcom.ads ON examplecom_ads_bucket

Sie würden diese Option auf „websites.exampledotcom“ setzen.

Typerkennungsschema

Bestimmt, wie der Anbieter Tabellen und Spalten aus den in Couchbase gefundenen Buckets erstellt.

Datentyp

string

Standardwert

DocType

Hinweise

Eine durch Kommas getrennte Liste der folgenden Optionen:

Eigenschaft Beschreibung
DocType Dies erkennt Tabellen, indem es jeden Bucket überprüft und nach unterschiedlichen Werten des Felds „docType“ in den Dokumenten sucht. Wenn beispielsweise der Bucket „beer-sample“ Dokumente mit „docType“ = „Brauerei“ und „docType“ = „Bier“ enthält, werden drei Tabellen generiert: „beer-sample“ (enthält alle Dokumente), „beer-sample.brewery“ (enthält nur Brauereien) und „beer-sample.beer“ (enthält nur Biere). Wie bei RowScan wird hier eine Stichprobe der Dokumente in jeder Geschmacksrichtung gescannt und der Datentyp für jedes Feld bestimmt. RowScanDepth bestimmt, wie viele Dokumente von jeder Variante gescannt werden.
DocType=fieldName Wie DocType, aber dies scannt auf Grundlage eines Felds namens „fieldName“ statt „docType“. „fieldName“ muss exakt mit dem Feldnamen in Couchbase übereinstimmen, einschließlich Groß-/Kleinschreibung.
Infer Dabei wird die N1QL INFER-Anweisung verwendet, um zu ermitteln, welche Tabellen und Spalten vorhanden sind. Dies ermöglicht eine flexiblere Geschmackserkennung als DocType, ist aber nur für Couchbase Enterprise verfügbar.
RowScan Dies liest eine Stichprobe von Dokumenten aus einem Bucket und bestimmt heuristisch den Datentyp. RowScanDepth bestimmt, wie viele Dokumente gescannt werden. Es wird keine Geschmackserkennung durchgeführt.
None Dies ähnelt RowScan, gibt aber immer Spalten mit Zeichenfolgentypen statt dem erkannten Typ zurück.

InferNumSampleValues

Die maximale Anzahl von Werten für jedes Feld, die gescannt werden sollen, bevor sein Datentyp bestimmt wird. Gilt für die automatische Schemaerkennung, wenn TypeDetectionScheme auf INFER eingestellt ist.

Datentyp

string

Standardwert

10

Hinweise

Die maximale Anzahl von Werten, die aus jedem Feld der abgetasteten Dokumente gescannt werden sollen, bevor der Datentyp des Felds bestimmt wird. Diese Eigenschaft ermöglicht eine zusätzliche Konfiguration der Automatischen Schemaerkennung wenn Sie den Couchbase Infer-Befehl verwenden -- TypeDetectionScheme muss auch auf „Infer“ gesetzt sein, um diese Eigenschaft zu verwenden.

Stichprobengröße ableiten

Die maximale Anzahl von Dokumenten, die nach den im Bucket verfügbaren Spalten durchsucht werden sollen. Gilt für die automatische Schemaerkennung, wenn TypeDetectionScheme auf INFER eingestellt ist.

Datentyp

string

Standardwert

100

Hinweise

Die maximale Anzahl von Dokumenten, die nach den im Bucket verfügbaren Spalten durchsucht werden sollen. Der Befehl „Infer“ gibt Spaltenmetadaten zurück, indem er eine zufällige Stichprobe von Dokumenten der hier angegebenen Größe durchsucht.

Das Festlegen eines hohen Werts kann die Leistung beeinträchtigen. Das Festlegen eines niedrigen Werts kann dazu führen, dass die Spalte und der Datentyp nicht richtig bestimmt werden, insbesondere wenn Nulldaten vorhanden sind.

Diese Eigenschaft ermöglicht eine zusätzliche Konfiguration der Automatischen Schemaerkennung wenn Sie den Couchbase Infer-Befehl verwenden -- TypeDetectionScheme muss auch auf „Infer“ gesetzt sein, um diese Eigenschaft zu verwenden.

Ähnlichkeitsmetrik ableiten

Gibt den Ähnlichkeitsgrad an, bei dem verschiedene Schemata als gleichartig angesehen werden. Gilt für die automatische Schemaerkennung, wenn TypeDetectionScheme auf INFER eingestellt ist.

Datentyp

string

Standardwert

0.7

Hinweise

Diese Eigenschaft gibt an, wie ähnlich zwei Schemata sein müssen, damit sie als gleichartig gelten. Betrachten Sie als Beispiel die folgenden Zeilen:

Row 1: ColA, ColB, ColC, ColD
Row 2: ColA, ColB, ColE, ColF
Row 3: ColB, ColF, ColX, ColY

Sie können die für jede Variante zurückgegebenen Spalten mit unterschiedlichen konfigurieren InferSimilarityMetric Werte, wie in den folgenden Beispielen:

  • Wenn Sie setzen InferSimilarityMetric auf 1, der Connector gibt keine Varianten zurück.
  • Wenn Sie setzen InferSimilarityMetric auf 0,5, der Connector gibt 2 Varianten zurück, wobei Row1 und Row2 eine und Row3 eine andere bilden.
  • Wenn Sie festlegen InferSimilarityMetric bis 0,25, der Connector gibt eine einzelne Variante zurück, die alle Zeilen enthält.

Anschließend können Sie Dokumentvarianten mithilfe der Punktnotation Abfrage, wie in der folgenden Anweisung:

SELECT * FROM [Items.Technology]

Diese Eigenschaft ermöglicht eine zusätzliche Konfiguration der Automatischen Schemaerkennung wenn Sie den Couchbase Infer-Befehl verwenden -- TypeDetectionScheme muss auch auf „Infer“ gesetzt sein, um diese Eigenschaft zu verwenden.

FlexibleSchemas

Ob der Anbieter Abfragen die Verwendung von Spalten erlaubt, die er nicht erkannt hat.

Datentyp

bool

Standardwert

false

Hinweise

Standardmäßig lässt der Connector nur Abfragen zu, die Spalten verwenden, die er während des Metadatenerkennungsprozesses gefunden hat (siehe TypeDetectionScheme für Details). Das bedeutet, dass der Connector die vollständigen Informationen für jede Spalte hat, die er präsentiert, aber es bedeutet auch, dass Felder, die nur für einige Dokumente festgelegt sind, möglicherweise nicht angezeigt werden. Wenn Sie diese Option deaktivieren, können Sie mit dem Connector eine Abfrage mit beliebigen Spalten schreiben. Wenn Sie in einer Abfrage Spalten verwenden, die noch nicht erkannt wurden, geht der Connector davon aus, dass es sich um einfache Zeichenfolgen handelt.

Beispielsweise verwendet der Connector Spaltentypinformationen, um Daten für den Vergleich automatisch zu konvertieren, da Couchbase Daten nicht direkt nativ vergleichen kann. Wenn der Connector erkennt, dass datecol ein Datumsfeld ist, kann er die STR_TO_MILLIS-Konvertierung automatisch anwenden:

/* SQL */
WHERE datecol < '2020-06-12';

/* N1QL */
WHERE STR_TO_MILLIS(datecol) < STR_TO_MILLIS('2020-06-12');

Wenn Sie nicht erkannte Spalten verwenden, kann der Connector diese Art der Konvertierung nicht für Sie durchführen. Sie müssen alle erforderlichen Konvertierungen manuell durchführen, um sicherzustellen, dass die Vorgänge wie gewünscht ablaufen.

ExposeTTL

Gibt an, ob TTL-Informationen des Dokuments angezeigt werden sollen.

Datentyp

bool

Standardwert

false

Hinweise

Standardmäßig zeigt der Connector bei der Ausführung von DML-Vorgängen keine TTL-Werte an und berücksichtigt keine Dokument-TTLs. Durch Aktivieren dieser Option werden TTL-Werte auf zwei Arten angezeigt:

  • Alle Tabellen erhalten eine neue Spalte namens Document.Expiration, die den TTL-Wert für jedes Dokument enthält. Diese Spalte ist eine Ganzzahl und gibt den in Couchbase gespeicherten TTL-Wert direkt zurück. Diese Spalte ist in Bucket-Tabellen schreibgeschützt und in untergeordneten Tabellen schreibgeschützt.
  • INSERT und UPDATE verwenden dieses Feld, um TTL-Werte festzulegen oder sie (für Updates) beizubehalten, wenn keine angegeben sind. Wenn Sie das Feld auf 0 oder NULL setzen, wird die TTL aus allen betroffenen Dokumenten entfernt.

Beachten Sie, dass zum Aktivieren dieser Funktion Ihr Server die Version 6.5.1 oder höher haben muss und dass Ihr CouchbaseService ist auf N1QL eingestellt. Wenn einer dieser Punkte nicht zutrifft, wird der Connector nicht verbunden.

Numerische Zeichenfolgen

Gibt an, ob Zeichenfolgenwerte als Zahlen behandelt werden dürfen.

Datentyp

bool

Standardwert

true

Hinweise

Standardmäßig ist diese Eigenschaft aktiviert und der Connector behandelt Zeichenfolgenwerte als numerisch, wenn alle Werte, die er während der Schema abtastet, numerisch sind. Dies kann später zu Typfehlern führen, wenn das Feld in anderen Dokumenten nicht numerische Werte enthält. Wenn diese Eigenschaft deaktiviert ist, bleiben numerische Zeichenfolgen als Zeichenfolgen erhalten, obwohl andere zeichenfolgenbasierte Datentypen wie Zeitstempel weiterhin erkannt werden.

Beispielsweise wäre das Feld „Code“ im folgenden Bucket von dieser Einstellung betroffen. Standardmäßig würde es als Ganzzahl betrachtet, aber wenn diese Eigenschaft aktiviert wäre, würde es als Zeichenfolge behandelt.

{ "code": "123", "message": "Please restart your computer" }
{ "code": "456", "message": "Urgent update must be applied" }

Untergeordnete Aggregate ignorieren

Ob der Anbieter aggregierte Spalten verfügbar macht, die auch als untergeordnete Tabellen verfügbar sind. Wird ignoriert, wenn TableSupport nicht auf Full eingestellt ist.

Datentyp

bool

Standardwert

false

Hinweise

Der Connector stellt Array-Felder innerhalb eines Buckets als separate untergeordnete Tabelle bereit, wie im Beispiel Games_scores, das in Automatische Schemaerkennung beschrieben wird. Standardmäßig stellt der Connector diese Array-Felder auch als JSON-Aggregate in der Basistabelle bereit. Beispielsweise würde jede dieser Abfragen Informationen zu Spielständen zurückgeben:

/* Return each score as an individual row */
SELECT value FROM Games_scores;

/* Return all scores for each Game as a JSON string */
SELECT scores FROM Games;

Da diese Aggregate in der Basistabelle angezeigt werden, werden sie auch dann generiert, wenn die darin enthaltenen Informationen redundant sind. Wenn Sie beispielsweise diesen Join ausführen, wird das Punkteaggregat von Games sowie die Wertespalte von Games_scores ausgefüllt. Intern führt dies dazu, dass zwei Kopien der Punktedaten von Couchbase übertragen werden.

/* Retrieves score data twice, once for Games.scores and once for Games_scores.value */
SELECT * FROM Games INNER JOIN Games_scores ON Games.[Document.Id] = Games_scores.[Document.Id]

Mit dieser Option kann verhindert werden, dass das Aggregatfeld angezeigt wird, wenn die gleichen Informationen auch in einer untergeordneten Tabelle verfügbar sind. Im Spielebeispiel bedeutet das Setzen dieser Option auf „true“, dass die Spieletabelle nur eine Primärschlüsselspalte anzeigt. Informationen zu Spielständen können nur über die untergeordnete Tabelle abgerufen werden, sodass die Spielstandsdaten nur einmal aus Couchbase gelesen werden.

/* Only exposes Document.Id, not scores */
SELECT * FROM Games;

/* Only retrieves score data once for Games_scores.value */
SELECT * FROM Games INNER JOIN Games_scores ON Games.[Document.Id] = Games_scores.[Document.Id]

Beachten Sie, dass diese Option FlattenArrays überschreibt, da alle Daten aus abgeflachten Arrays auch als Kindtabellen verfügbar sind. Wenn diese Option gesetzt ist, wird keine Array-Abflachung durchgeführt, auch wenn FlattenArrays ist auf einen Wert über 0 eingestellt.

Tischunterstützung

Wie viel Aufwand der Anbieter in die Ermittlung von Tabellen auf dem Couchbase-Server stecken wird.

Mögliche Werte

Full, Basic, None

Datentyp

string

Standardwert

Full

Hinweise

Die verfügbaren Optionen sind:

Eigenschaft Beschreibung
Full Der Connector erkennt die verfügbaren Buckets und sucht in jedem dieser Buckets nach untergeordneten Tabellen. Dies ist die flexibelste Möglichkeit, auf verschachtelte Daten zuzugreifen, erfordert jedoch, dass jeder Bucket auf Ihrem Server über Primärindizes verfügt.
Basic Der Connector erkennt die verfügbaren Buckets, sucht aber nicht darin nach untergeordneten Tabellen. Dies wird empfohlen, wenn Sie entweder die Zeit für die Schema verkürzen möchten oder wenn Ihre Buckets keine Primärindizes haben.
None Der Connector verwendet nur die Schema, die sich im Speicherort befinden-Verzeichnis und erkennt keine Buckets auf dem Server. Diese Option sollte nur verwendet werden, nachdem Sie bereits Schema erstellt haben. Wenn Sie diese Option ohne Schema verwenden, sind keine Tabellen verfügbar.

Neuer ChildJoinsMode

Bestimmt die Art des untergeordneten Tabellenmodells, das der Anbieter bereitstellt.

Datentyp

bool

Standardwert

false

Hinweise

Standardmäßig stellt der Connector ein abwärtskompatibles Datenmodell bereit, das nicht vollständig relational ist. In diesem Modus haben nicht untergeordnete Tabellen einen Primärschlüssel namens Document.Id, aber untergeordnete Tabellen haben keinen Primärschlüssel. Stattdessen haben sie eine Spalte namens Document.Id, das den gleichen Wert hat wie Document.Id der übergeordneten Zeile, die die untergeordnete Zeile enthält.

Zum Beispiel eine übergeordnete Tabelle invoices enthaltene Rechnungsdatensätze können wie folgt aussehen:

Document.Id customer
1 Adam
2 Beatrice
3 Charlie

Und sein Kind invoices_lineitems enthaltene Zeilenelemente können wie folgt aussehen:

Document.Id item
1 Laptop
1 Tastatur
2 Hefter
3 Whiteboard
3 Markierungen

Dieses Modell hat mehrere Einschränkungen:

  • Komplexe JOIN-Ergebnisse können falsch sein. In den meisten Fällen kann der Connector einen JOIN wie folgt übersetzen: SELECT * FROM invoices INNERT JOIN invoices_lineitems ON invoices.[Document.Id] = invoices_lineitems.[Document.Id]in ein UNNEST. Wenn der JOIN jedoch zu komplex ist, werden beide Seiten separat ausgeführt, was zu falschen Ergebnissen führen kann.
  • DML-Operationen an verschachtelten untergeordneten Tabellen sind unmöglich, da es keine Möglichkeit gibt, anzugeben, welche Zeile des mittleren untergeordneten Tabellenelements verwendet werden soll. Sie können beispielsweise Zeilen in einer Tabelle wie nicht ändern invoices_lineitems_discounts weil es keine Möglichkeit gibt, die Position anzugeben, die den Rabatt enthält, den Sie aktualisieren.
  • Einige Umgebungen wie SSIS können möglicherweise überhaupt nicht mit untergeordneten Tabellen arbeiten, da diese keine Primärschlüssel haben.

Das NewChildJoins-Datenmodell ist vollständig relational. In diesem Modus haben nicht untergeordnete Tabellen die gleichen Document.Id wie zuvor, aber untergeordnete Tabellen werden erweitert, um sowohl einen Fremdschlüssel als auch einen Primärschlüssel zu haben. Der Fremdschlüssel heißt Document.Parent und es bezieht sich auf die Document.Id der Zeile in der übergeordneten Tabelle, die die untergeordnete Zeile enthält. Der Primärschlüssel heißt Document.Id und es enthält einen Pfad, der eindeutig auf diese untergeordnete Zeile verweist.

Dieselben Tabellen wie oben würden beispielsweise im NewChildJoins-Modell so aussehen. invoices wäre dasselbe:

Document.Id customer
1 Adam
2 Beatrice
3 Charlie

Jedoch, invoices_lineitems hätte sowohl einen Primär- als auch einen Fremdschlüssel. Der Primärschlüssel enthält die ID der übergeordneten Zeile sowie die Position der untergeordneten Zeile im übergeordneten Element.

Document.Id Document.Parent item
1$1 1 Laptop
1$2 1 Tastatur
2$1 2 Hefter
3$1 3 Whiteboard
3$2 3 Markierungen

Dadurch werden die Einschränkungen des alten Datenmodells behoben:

  • Komplexe JOIN-Ergebnisse sind immer konsistent, da sie Fremdschlüssel mit Primärschlüsseln verknüpfen SELECT * FROM invoices INNERT JOIN invoices_lineitems ON invoices.[Document.Id] = invoices_lineitems.[Document.Parent]
  • DML-Operationen an verschachtelten untergeordneten Tabellen sind zulässig, da die Document.Id enthält alle erforderlichen Informationen, um bestimmte Zeilen auszuwählen, unabhängig von der Tiefe der Tabelle.
  • Umgebungen, die von Primärschlüsseln abhängen, können diese Tabellen verwenden und JOIN-Abfragen generieren, da die Beziehungen zwischen Document.Id Und Document.ParentSpalten sind in den Connector-Metadaten enthalten.

Verschiedenes

Dieser Abschnitt enthält eine vollständige Liste verschiedener Eigenschaften, die Sie konfigurieren können.

Eigenschaft Beschreibung
AllowJSONParameters Ermöglicht die Verwendung von reinem JSON in Parametern, wenn QueryPassthrough aktiviert ist.
ChildSeparator Das oder die Zeichen, die zur Kennzeichnung untergeordneter Tabellen verwendet werden.
CreateTableRamQuota Das Standard-RAM-Kontingent in Megabyte, das beim Einfügen von Buckets über die CREATE TABLE-Syntax verwendet werden soll.
DataverseSeparator Das oder die Zeichen, die zur Kennzeichnung von Analytics-Dataverses und-Bereichen/-Sammlungen verwendet werden.
FlattenArrays Die Anzahl der Elemente, die als Spalten aus verschachtelten Arrays verfügbar gemacht werden sollen. Wird ignoriert, wenn „IgnoreChildAggregates“ aktiviert ist.
FlattenObjects Setzen Sie FlattenObjects auf true, um Objekteigenschaften in eigene Spalten zu reduzieren. Andernfalls werden in Arrays verschachtelte Objekte als JSON-Strings zurückgegeben.
FlavorSeparator Das oder die Zeichen, die zur Bezeichnung von Geschmacksrichtungen verwendet werden.
GenerateSchemaFiles Gibt die Benutzerpräferenz an, wann Schemata generiert und gespeichert werden sollen.
InsertNullValues Bestimmt, ob ein INSERT Felder mit NULL-Werten einschließen soll.
MaxRows Begrenzt die Anzahl der zurückgegebenen Zeilen, wenn in der Abfrage keine Aggregation oder GROUP BY verwendet wird. Dies hat Vorrang vor LIMIT-Klauseln.
Other Diese versteckten Eigenschaften werden nur in bestimmten Anwendungsfällen verwendet.
Pagesize Die maximale Anzahl der Ergebnisse, die pro Seite von Couchbase zurückgegeben werden sollen.
PeriodsSeparator Das oder die Zeichen, die zur Kennzeichnung der Hierarchie verwendet werden.
PseudoColumns Diese Eigenschaft gibt an, ob Pseudospalten als Spalten in die Tabelle aufgenommen werden sollen oder nicht.
QueryExecutionTimeout Dadurch wird das serverseitige Timeout für die Abfrage festgelegt, das bestimmt, wie lange Couchbase die Abfrage ausführt, bevor ein Timeout-Fehler zurückgegeben wird.
QueryPassthrough Diese Option übergibt die Abfrage unverändert an den Couchbase-Server.
RowScanDepth Die maximale Anzahl der zu scannenden Zeilen, um nach den in einer Tabelle verfügbaren Spalten zu suchen.
StrictComparison Passt an, wie genau Filter für SQL-Eingabeabfragen in Couchbase Abfragen übersetzt werden. Dies kann auf eine durch Kommas getrennte Werteliste eingestellt werden, wobei jeder Wert ein Datum, eine Zahl, ein Boolescher Wert oder eine Zeichenfolge sein kann.
Timeout Der Wert in Sekunden, bis der Timeout-Fehler auftritt und der Operation abgebrochen wird.
TransactionDurability Gibt an, wie ein Dokument gespeichert werden muss, damit eine Transaktion erfolgreich ist. Gibt an, ob bei der Ausführung von Abfragen N1QL-Transaktionen verwendet werden sollen.
TransactionTimeout Dadurch wird die Zeitspanne festgelegt, in der eine Transaktion ausgeführt werden kann, bevor sie von Couchbase als abgelaufen eingestuft wird.
UpdateNullValues Bestimmt, ob ein UPDATE NULL-Werte als NULL schreibt oder entfernt.
UseCollectionsForDDL Ob angenommen werden soll, dass CREATE TABLE-Anweisungen Sammlungen statt Varianten verwenden. Wird nur wirksam, wenn eine Verbindung zu Couchbase v7+ hergestellt wird und GenerateSchemaFiles auf OnCreate eingestellt ist.
UserDefinedViews Ein Dateipfad, der auf die JSON-Konfigurationsdatei verweist, die Ihre benutzerdefinierten Ansichten enthält.
UseTransactions Gibt an, ob beim Ausführen von Abfragen N1QL-Transaktionen verwendet werden sollen.
ValidateJSONParameters Ermöglicht dem Anbieter, zu prüfen, ob die Zeichenfolgenparameter gültiges JSON sind, bevor die Abfrage an Couchbase gesendet wird.

AllowJSONParameters

Ermöglicht die Verwendung von Roh-JSON in Parametern, wenn QueryPassthrough aktiviert ist.

Datentyp

bool

Standardwert

false

Hinweise

Diese Option beeinflusst, wie Zeichenfolgenparameter bei der Verwendung direkter N1QL- und SQL++-Abfragen über QueryPassthrough behandelt werden. Betrachten Sie beispielsweise diese Abfrage:

INSERT INTO `Eimer` (KEY, VALUE) VALUES ("1", @x)

Standardmäßig ist diese Option deaktiviert und Zeichenfolgenparameter werden in Anführungszeichen gesetzt und in JSON-Zeichenfolgen maskiert. Das bedeutet, dass jeder Wert sicher als Zeichenfolgenparameter verwendet werden kann, aber es bedeutet auch, dass Parameter nicht als reine JSON-Dokumente verwendet werden können:

/*
 * If @x is set to: test value " contains quote
 *
 * Result is a valid query
*/
INSERT INTO `Eimer` (KEY, VALUE) VALUES ("1", "test value \" contains quote")

/*
 * If @x is set to: {"a": ["valid", "JSON", "value"]}
 *
 * Result contains string instead of JSON document
*/
INSERT INTO `Eimer` (KEY, VALUE) VALUES ("1", "{\"a\": [\"valid\", \"JSON\", \"value\"]})

Wenn diese Option aktiviert ist, wird davon ausgegangen, dass Zeichenfolgenparameter gültiges JSON sind. Dies bedeutet, dass Roh-JSON-Dokumente als Parameter verwendet werden können, aber es bedeutet auch, dass alle einfachen Zeichenfolgen maskiert werden müssen:

/*
 * If @x is set to: test value " contains quote
 *
 * Result is an invalid query
*/
INSERT INTO `Eimer` (KEY, VALUE) VALUES ("1", test value " contains quote)

/*
 * If @x is set to: {"a": ["valid", "JSON", "value"]}
 *
 * Result is a JSON document
*/
INSERT INTO `Eimer` (KEY, VALUE) VALUES ("1", {"a": ["valid", "JSON", "value"]})

Bitte beachten Sie ValidateJSONParameters für weitere Einzelheiten dazu, wie Parameter validiert werden, wenn diese Option aktiviert ist.

Untergeordneter Trenner

Das oder die Zeichen, die zur Kennzeichnung untergeordneter Tabellen verwendet werden.

Datentyp

string

Standardwert

_

Hinweise

Wenn eine untergeordnete Tabelle für ein Array unter einem Bucket erstellt wird, generiert der Connector den Namen der untergeordneten Tabelle, indem er den Namen der Basistabelle zusammen mit diesem Trennzeichen und jedem Pfadelement verknüpft.

Wenn sich dieses Dokument beispielsweise im Bucket „Kunden“ befände, würde die untergeordnete Tabelle für das Adressfeld „Kunden_Adressen“ heißen.

{
  "addresses": [
    {"street": "123 Main St"},
    {"street": "424 Pleasant Ct"},
    {"street": "719 Blue Way"}
  ]
}

Erstellen Sie TableRamQuota

Das standardmäßige RAM-Kontingent in Megabyte, das beim Einfügen von Buckets über die CREATE TABLE-Syntax verwendet werden soll.

Datentyp

string

Standardwert

250

Hinweise

Das standardmäßige RAM-Kontingent in Megabyte, das beim Einfügen von Buckets über die CREATE TABLE-Syntax verwendet werden soll.

DataverseSeparator

Das oder die Zeichen, die zur Bezeichnung von Analytics-Datenversen und-Bereichen/-Sammlungen verwendet werden.

Datentyp

string

Standardwert

.

Hinweise

Bei Verwendung des Analytics-Dienstes scannt der Connector alle Datensätze aus allen verfügbaren Dataverses. Um mögliche Namenskonflikte zu vermeiden, werden der Dataverse-Name und der Datensatzname in den generierten Tabellennamen aufgenommen.

Standardmäßig ist dies auf „.“ eingestellt, sodass, wenn im „Standard“-Dataverse ein Dataset mit dem Namen „Benutzer“ vorhanden ist, die generierte Tabelle „Default.users“ ist.

Diese Eigenschaft wird auch beim Generieren von Tabellennamen für Sammlungen (sowohl auf N1QL als auch auf Analytics) auf Couchbase 7 und höher verwendet. Beispielsweise würde ein Bucket namens „Benutzer“, der zwei Sammlungen namens „aktiv“ und „inaktiv“ im Bereich „Status“ hat, als die Tabellen „Benutzer.status.aktiv“ und „Benutzer.status.inaktiv“ erkannt.

Arrays abflachen

Die Anzahl der Elemente, die als Spalten aus verschachtelten Arrays angezeigt werden sollen. Wird ignoriert, wenn IgnoreChildAggregates aktiviert ist.

Datentyp

string

Standardwert

0

Hinweise

Standardmäßig werden verschachtelte Arrays als JSON-Strings zurückgegeben. Das FlattenArrays-Eigenschaft kann verwendet werden, um die Elemente verschachtelter Arrays in eigene Spalten zu reduzieren. Dies wird nur für Arrays empfohlen, die voraussichtlich kurz sind.

Set FlattenArrays zur Anzahl der Elemente, die Sie aus verschachtelten Arrays zurückgeben möchten. Die angegebenen Elemente werden als Spalten zurückgegeben. Der nullbasierte Index wird an den Spaltennamen angehängt. Andere Elemente werden ignoriert.

Sie können beispielsweise eine beliebige Anzahl von Elementen aus einem Array von Zeichenfolgen zurückgeben:

["FLOW-MATIC","LISP","COBOL"]

Wenn FlattenArrays auf 1 gesetzt ist, wird das vorhergehende Array in die folgende Tabelle abgeflacht:

Spaltenname Spaltenwert
languages.0 FLOW-MATIC

Objekte abflachen

Setzen Sie FlattenObjects auf true, um Objekteigenschaften in eigene Spalten zu reduzieren. Andernfalls werden in Arrays verschachtelte Objekte als JSON-Strings zurückgegeben.

Datentyp

bool

Standardwert

true

Hinweise

Satz FlattenObjects auf true, um Objekteigenschaften in eigene Spalten zu reduzieren. Andernfalls werden in Arrays verschachtelte Objekte als JSON-Zeichenfolgen zurückgegeben. Der Eigenschaftsname wird mit einem Unterstrich an den Objektnamen angehängt, um den Spaltennamen zu generieren.

Sie können beispielsweise die folgenden verschachtelten Objekte zum Zeitpunkt der Verbindung reduzieren:

address : {
  "street" : "123 Main St.",
  "city"   : "Nowhere",
  "state"  : "NY",
  "zip"    : "12345"
}

Wenn FlattenObjects auf true gesetzt ist, wird das vorhergehende Objekt in die folgende Tabelle abgeflacht:

Spaltenname Spaltenwert
address.street Hauptstraße 123
address.city Nirgendwo
address.state Schweiz
address.zip 12345

GeschmacksSeparator

Das oder die Zeichen, die zur Bezeichnung von Geschmacksrichtungen verwendet werden.

Datentyp

string

Standardwert

.

Hinweise

Wenn der Connector eine Tabelle mit Geschmack erkennt, entweder mithilfe eines DocType oder Infer TypeDetectionScheme, benennt er aromatisierte Tabellen, indem er den zugrunde liegenden Bucket-Namen, dieses Trennzeichen und den Wert des primären Aromas des Buckets verknüpft.

Wenn der Connector beispielsweise das Aroma „docType = ‚beer‘“ im Bucket „beer-sample“ erkennt, generiert er die Tabelle „beer-sample.beer“, die nur Dokumente in „beer-sample“ enthält, die den DocType „beer“ haben.

Schemadateien generieren

Gibt die Benutzerpräferenz an, wann Schemata generiert und gespeichert werden sollen.

Mögliche Werte

Never, OnUse, OnStart, OnCreate

Datentyp

string

Standardwert

Never

Hinweise

GenerateSchemaFiles ermöglicht das Speichern der von Automatic Schema Discovery identifizierten Tabellendefinitionen. Diese Eigenschaft gibt Schemas in .rsd-Dateien im durch Location angegebenen Pfad aus.

Die folgenden Einstellungen sind verfügbar:

  • Niemals: Es wird nie eine Schema generiert.
  • OnUse: Beim ersten Verweis auf eine Tabelle wird eine Schema generiert, sofern die Schema für die Tabelle noch nicht vorhanden ist.
  • OnStart: Zum Zeitpunkt der Verbindung wird für alle Tabellen, die aktuell keine Schema haben, eine Schema generiert.
  • OnCreate: Beim Ausführen einer CREATE TABLE-SQL- Abfrage wird eine Schema generiert.

Beachten Sie, dass Sie eine Datei zuerst löschen müssen, wenn Sie sie neu generieren möchten.

Generieren von Schemas mit SQL

Wenn Sie setzen GenerateSchemaFiles Zu OnUse, der Connector generiert Schemata, während Sie SELECT-Abfragen ausführen. Schemata werden für jede in der Abfrage referenzierte Tabelle generiert.

Wenn Sie setzen GenerateSchemaFiles Zu OnCreate, Schemas werden nur generiert, wenn eine CREATE TABLE Abfrage ausgeführt wird.

Schemas bei Verbindung generieren

Eine andere Möglichkeit, diese Eigenschaft zu verwenden, besteht darin, beim Herstellen einer Verbindung Schemata für jede Tabelle in Ihrer Datenbank abzurufen. Setzen Sie dazu GenerateSchemaFiles Zu OnStart und verbinden.

Alternativen zu statischen Schemas

Wenn Ihre Datenstrukturen volatil sind, sollten Sie Folgendes festlegen: GenerateSchemaFiles auf Nie und Verwendung dynamischer Schemata. Siehe Automatische Schemaerkennung für weitere Informationen zu dynamischen Schemata.

Bearbeiten von Schemas

Schemadateien haben ein einfaches Format, das ihre Änderung erleichtert. Siehe Benutzerdefinierte Schemadefinitionen für weitere Informationen.

Nullwerte einfügen

Bestimmt, ob ein INSERT Felder mit NULL-Werten einschließen soll.

Datentyp

bool

Standardwert

true

Hinweise

Standardmäßig verwendet der Connector NULL-Werte, die in einer INSERT-Anweisung bereitgestellt werden, und fügt sie als JSON-Nullwerte ein.

Wenn diese Option deaktiviert ist, werden SQL-NULL-Werte während eines INSERT ignoriert. Im Fall von Array-Spalten (FlattenArrays muss gesetzt sein, um diese abzurufen), das heißt, dass Array-Indizes verschoben werden, um die entfernten Werte zu kompensieren.

MaxRows

Begrenzt die Anzahl der zurückgegebenen Zeilen, wenn in der Abfrage keine Aggregation oder GROUP BY verwendet wird. Dies hat Vorrang vor LIMIT-Klauseln.

Datentyp

int

Standardwert

-1

Hinweise

Begrenzt die Anzahl der zurückgegebenen Zeilen, wenn in der Abfrage keine Aggregation oder GROUP BY verwendet wird. Dies hat Vorrang vor LIMIT-Klauseln.

Andere

Diese versteckten Eigenschaften werden nur in bestimmten Anwendungsfällen verwendet.

Datentyp

string

Standardwert

""

Hinweise

Die unten aufgeführten Eigenschaften sind für bestimmte Anwendungsfälle verfügbar. Für normale Anwendungsfälle und Funktionen von Treiber sollten diese Eigenschaften nicht erforderlich sein.

Geben Sie mehrere Eigenschaften in einer durch Semikolon getrennten Liste an.

Integration und Formatierung
Eigenschaft Beschreibung
DefaultColumnSize Legt die Standardlänge von Zeichenfolgefeldern fest, wenn die Datenquelle keine Spaltenlänge in den Metadaten bereitstellt. Der Standardwert ist 2000.
ConvertDateTimeToGMT Bestimmt, ob Datums-/Uhrzeitwerte in GMT statt in die lokale Zeit des Computers konvertiert werden sollen.
RecordToFile=filename Protokolliert den zugrunde liegenden Socket-Datenübertragungsvorgang in die angegebene Datei.

Seitengröße

Die maximale Anzahl der Ergebnisse, die pro Seite von Couchbase zurückgegeben werden sollen.

Datentyp

int

Standardwert

1000

Hinweise

Der Pagesize Die Eigenschaft beeinflusst die maximale Anzahl von Ergebnissen, die pro Seite von Couchbase zurückgegeben werden. Das Festlegen eines höheren Wertes kann zu einer besseren Leistung führen, allerdings auf Kosten des zusätzlichen Speichers, der pro verbrauchter Seite zugewiesen wird.

PunkteSeparator

Das oder die Zeichen, die zur Bezeichnung der Hierarchie verwendet werden.

Datentyp

string

Standardwert

.

Hinweise

Beim Reduzieren von Objekten und Arrays verwendet der Connector diesen Wert, um verschiedene Ebenen von Objekten und Arrays zu trennen. Wenn Ihr Couchbase-Server beispielsweise ein Dokument wie dieses zurückgibt (und FlattenObjects aktiviert ist), dann gibt der Connector die Spalten „geo.latitude“ und „geo.longitude“ zurück, wenn das Punkttrennzeichen auf „.“ eingestellt ist.

{
  "geo": {
    "latitude": 35.9132,
    "longitude": -79.0558
  }
}

Pseudospalten

Diese Eigenschaft gibt an, ob Pseudospalten als Spalten in die Tabelle aufgenommen werden sollen oder nicht.

Datentyp

string

Standardwert

""

Hinweise

Diese Einstellung ist besonders hilfreich im Entity Framework, da Sie dort keinen Wert für eine Pseudospalte festlegen können, es sei denn, es handelt sich um eine Tabellenspalte. Der Wert dieser Verbindungseinstellung hat das Format „Tabelle1=Spalte1, Tabelle1=Spalte2, Tabelle2=Spalte3“. Sie können das Zeichen „*“ verwenden, um alle Tabellen und alle Spalten einzuschließen, z. B. „*=*“.

Abfrageausführungszeitüberschreitung

Dadurch wird das serverseitige Timeout für die Abfrage festgelegt, das bestimmt, wie lange Couchbase die Abfrage ausführt, bevor ein Timeout-Fehler zurückgegeben wird.

Datentyp

string

Standardwert

-1

Hinweise

Der Standardwert ist -1, wodurch das Timeout deaktiviert wird. Wenn das Timeout aktiviert wird, muss der Wert sowohl einen Betrag als auch eine Einheit enthalten. Dabei kann es sich um „ns“ (Nanosekunden), „us“ (Mikrosekunden), „ms“ (Millisekunden), „s“ (Sekunden), „m“ (Minuten) oder „h“ (Stunden) handeln. Beispielsweise legen „5m“ und „300s“ beide Timeouts von 5 Minuten fest.

Es gibt auch ein serverseitiges Timeout, das „Index-Scan-Timeout“ genannt wird und dieses überschreibt, wenn es niedriger ist. Standardmäßig beträgt das Index-Scan-Timeout 2 Minuten, es kann jedoch geändert werden, indem Sie die Eigenschaft „indexer.settings.scan_timeout“ auf Ihrem Couchbase-Server festlegen.

QueryPassthrough

Diese Option übergibt die Abfrage unverändert an den Couchbase-Server.

Datentyp

bool

Standardwert

false

Hinweise

Wenn dies festgelegt ist, werden Abfragen direkt an Couchbase weitergeleitet.

Zeilenscantiefe

Die maximale Anzahl zu scannender Zeilen, um nach den in einer Tabelle verfügbaren Spalten zu suchen.

Datentyp

int

Standardwert

100

Hinweise

Die Spalten in einer Tabelle müssen durch das Scannen der Tabellenzeilen ermittelt werden. Dieser Wert bestimmt die maximale Anzahl der zu scannenden Zeilen.

Das Festlegen eines hohen Wertes kann die Leistung beeinträchtigen. Das Festlegen eines niedrigen Wertes kann dazu führen, dass der Datentyp nicht richtig ermittelt wird, insbesondere wenn Nulldaten vorhanden sind.

Strenger Vergleich

Passt an, wie genau Filter für SQL-Eingabeabfragen in Couchbase Abfragen übersetzt werden. Dies kann auf eine durch Kommas getrennte Werteliste eingestellt werden, wobei jeder Wert ein Datum, eine Zahl, ein Boolescher Wert oder eine Zeichenfolge sein kann.

Datentyp

string

Standardwert

""

Hinweise

Diese Option ist standardmäßig leer, was bedeutet, dass an Couchbase gesendete WHERE-Klauseln zusätzliche Funktionen enthalten, die Werte konvertieren, sodass mehr Vergleiche funktionieren.

Wenn Sie beispielsweise die Einstellung „String“ aus der Liste weglassen, werden Arrays konvertiert, sodass sie mit Strings verglichen werden können:

SELECT * FROM Bucket WHERE MyArrayColumn = '[1,2,3]'

Wenn ein Wert festgelegt ist, werden Abfragen, die die entsprechenden Vergleichstypen enthalten, wörtlich übersetzt. Dadurch werden die Indizes von Couchbase besser genutzt, die Vergleichstypen müssen jedoch in einem Format vorliegen, das Couchbase direkt vergleichen kann.

Wenn beispielsweise „Datum“ als eine der Optionen angegeben ist, müssen die Daten dem Format entsprechen, in dem sie in Couchbase gespeichert sind, da sie nicht automatisch konvertiert werden:

SELECT * FROM Bucket WHERE MyDateColumn = '2018-10-31T10:00:00';

Zeitüberschreitung

Der Wert in Sekunden, bis der Timeout-Fehler auftritt und der Operation abgebrochen wird.

Datentyp

int

Standardwert

60

Hinweise

Wenn Timeout = 0, Operationen werden nicht abgebrochen. Die Operationen werden ausgeführt, bis sie erfolgreich abgeschlossen sind oder bis ein Fehler auftritt.

Wenn Timeout abläuft und der Operation noch nicht abgeschlossen ist, löst der Connector eine Ausnahme aus.

Transaktionsdauerhaftigkeit

Gibt an, wie ein Dokument gespeichert werden muss, damit eine Transaktion erfolgreich ist. Gibt an, ob bei der Ausführung von Abfragen N1QL-Transaktionen verwendet werden sollen.

Mögliche Werte

None, Majority, MajorityAndPersistActive, PersistToMajority

Datentyp

string

Standardwert

Majority

Hinweise

Wenn UseTransactions aktiviert ist, kann diese Option festgelegt werden, um zu bestimmen, wann Couchbase Schreibvorgänge in Transaktionen zulässt. Die Couchbase Dokumentation zu Haltbarkeit und Transaktionen enthält alle Einzelheiten, unten finden Sie eine allgemeine Zusammenfassung.

Diese Option steuert die Anforderungen für beide quorum Und persistence. Das Quorum kann entweder erfordern, dass keine Bucket-Replikate das Dokument empfangen (Keine), oder dass eine Mehrheit der Replikate das Dokument hat (alle anderen). Die Persistenzstufe erfordert entweder, dass das Dokument im Replikatspeicher (Majority) oder auf der Replikatfestplatte (MajorityAndPersistActive, PersistToMajority) gespeichert wird.

Keine ist nur nützlich, wenn der von Ihnen verwendete Bucket nicht für Replikate konfiguriert ist. Die anderen Optionen können je nach den erforderlichen Kompromissen in Bezug auf Leistung und Haltbarkeit verwendet werden. Das Persistieren auf mehr Replikaten ist langsamer, bietet aber eine größere Widerstandsfähigkeit gegen einen Knotenabsturz.

TransaktionsTimeout

Hiermit wird die Zeitspanne festgelegt, in der eine Transaktion ausgeführt werden kann, bevor sie von Couchbase als abgelaufen eingestuft wird.

Datentyp

string

Standardwert

""

Hinweise

Wenn Transaktionen aktiviert sind, verwendet der Connector standardmäßig die Standardeinstellung für das Transaktionstimeout des Servers.

Wenn das Timeout aktiviert wird, muss der Wert sowohl einen Betrag als auch eine Einheit enthalten. Dabei kann es sich um eine der folgenden Einheiten handeln: „ns“ (Nanosekunden), „us“ (Mikrosekunden), „ms“ (Millisekunden), „s“ (Sekunden), „m“ (Minuten) oder „h“ (Stunden). Beispielsweise legen „5m“ und „300s“ beide Timeouts von 5 Minuten fest.

Es gibt auch Transaktionstimeouts auf Cluster- und Knotenebene, die dieses Timeout überschreiben, wenn sie kleiner sind. Wenn beispielsweise das Timeout auf Knotenebene auf eine Minute eingestellt ist, hat das Einstellen dieser Option auf „5m“ keine Auswirkung.

Nullwerte aktualisieren

Bestimmt, ob ein UPDATE NULL-Werte als NULL schreibt oder entfernt.

Datentyp

bool

Standardwert

true

Hinweise

Standardmäßig verwendet der Connector NULL-Werte, die in einer UPDATE-Anweisung bereitgestellt werden, und setzt das Feld in Couchbase auf NULL.

Wenn diese Option deaktiviert ist, führen SQL NULL-Werte in einem UPDATE dazu, dass der Connector das Feld als MISSING markiert. Dadurch wird das Feld aus dem Objekt entfernt, das es enthält, oder wenn das Feld in einem Array enthalten ist (per FlattenArrays), dann wird dieses Element auf NULL gesetzt.

Diese Option sollte mit Vorsicht verwendet werden, da der Connector möglicherweise nicht erkennt, dass das Feld existiert, wenn es aus genügend Dokumenten innerhalb eines Buckets entfernt wird.

Verwenden Sie CollectionsForDDL

Ob angenommen werden soll, dass CREATE TABLE-Anweisungen Sammlungen statt Varianten verwenden. Wird nur wirksam, wenn eine Verbindung zu Couchbase v7+ hergestellt wird und GenerateSchemaFiles auf OnCreate eingestellt ist.

Datentyp

bool

Standardwert

false

Hinweise

Normalerweise geht der Connector davon aus, dass zusammengesetzte Tabellennamen, auf die in einer CREATE TABLE-Anweisung verwiesen wird, Varianten sind. Aus Kompatibilitätsgründen ist dies bei Couchbase v7+ immer noch die Standardeinstellung, obwohl Varianten dort nicht empfohlen werden.

CREATE TABLE [myBucket.myFlavor](
 `[Dokument.Id] `VARCHAR PRIMARY KEY,
  docType VARCHAR,
  sometext VARCHAR,
  somenum INT
)

Aktivieren Sie diese Option, um anzunehmen, dass CREATE TABLE-Anweisungen stattdessen auf die Sammlung verweisen. In diesem Szenario erstellt diese Abfrage bei Bedarf den Bucket und den Bereich, bevor die Sammlung erstellt und ein Primärindex festgelegt wird:

CREATE TABLE [myBucket.myScope.myCollection](
 `[Dokument.Id] `VARCHAR PRIMARY KEY,
  sometext VARCHAR,
  somenum INT
)

BenutzerdefinierteAnsichten

Ein Dateipfad, der auf die JSON-Konfigurationsdatei verweist, die Ihre benutzerdefinierten Ansichten enthält.

Datentyp

string

Standardwert

""

Hinweise

Benutzerdefinierte Ansichten werden in einer JSON-formatierten Konfigurationsdatei namens UserDefinedViews.json. Der Connector erkennt die in dieser Datei angegebenen Ansichten automatisch.

Sie können auch mehrere Ansichtsdefinitionen haben und diese mit steuern UserDefinedViews Verbindungseigenschaft. Wenn Sie diese Eigenschaft verwenden, werden vom Connector nur die angegebenen Ansichten angezeigt.

Diese Konfigurationsdatei für benutzerdefinierte Ansichten ist wie folgt formatiert:

  • Jedes Stammelement definiert den Namen einer Ansicht.
  • Jedes Stammelement enthält ein untergeordnetes Element namens query, das die benutzerdefinierte SQL- Abfrage für die Ansicht enthält.

Zum Beispiel:

{
    "MyView": {
        "query": "SELECT * FROM Customer WHERE MyColumn = 'value'"
    },
    "MyView2": {
        "query": "SELECT * FROM MyTable WHERE Id IN (1,2,3)"
    }
}

Verwenden Sie UserDefinedViews Verbindungseigenschaft, um den Speicherort Ihrer JSON-Konfigurationsdatei anzugeben. Beispiel:

"UserDefinedViews", C:\Users\yourusername\Desktop\tmp\UserDefinedViews.json

Beachten Sie, dass der angegebene Pfad nicht in Anführungszeichen steht.

Transaktionen verwenden

Gibt an, ob bei der Ausführung von Abfragen N1QL-Transaktionen verwendet werden sollen.

Mögliche Werte

Never, Always, Explicit

Datentyp

string

Standardwert

Never

Hinweise

Standardmäßig verwendet der Connector aus Kompatibilitätsgründen mit älteren Versionen von Couchbase keine Transaktionen. Alle anderen Optionen erfordern eine Verbindung zu Couchbase 7 oder höher. Der N1QL-Dienst muss außerdem mit CouchbaseService aktiviert werden.

Dies auf setzen Always bedeutet, dass alle Abfragen Transaktionen verwenden. Eine explizite Transaktion kann für die Verbindung erstellt werden und Abfragen verwenden diese Transaktion, solange sie aktiv ist. Wenn keine explizite Transaktion vorhanden ist, verwenden Abfragen stattdessen implizite Transaktionen.

Wenn Sie dies auf setzen,Explicit aktiviert nur die Unterstützung für explizite Transaktionen. Explizite Transaktionen können erstellt werden, aber wenn derzeit keine aktiv ist, erstellen Anweisungen keine implizite Transaktion.

ValidateJSONParameters

Ermöglicht dem Anbieter, zu überprüfen, ob die Zeichenfolgenparameter gültiges JSON sind, bevor die Abfrage an Couchbase gesendet wird.

Datentyp

bool

Standardwert

true

Hinweise

Wenn AllowJSONParameters und QueryPassthrough aktiviert sind, werden die dem Connector übergebenen Abfrage als reine JSON-Dokumente und nicht als beliebige Zeichenfolgenwerte behandelt. Diese Option steuert, was passiert, wenn dem Connector in diesem Modus ungültiges JSON übergeben wird.

Wenn diese Option aktiviert ist, prüft der Connector, ob alle Zeichenfolgenparameter als gültiges JSON analysiert werden können. Wenn dies nicht möglich ist, wird ein Fehler ausgelöst und die Abfrage wird nicht ausgeführt.

Wenn diese Option deaktiviert ist, wird keine Prüfung durchgeführt und alle String-Parameterwerte werden direkt in die Abfrage eingesetzt. Dadurch wird die Ausführung vorbereiteter Anweisungen schneller, aber weniger sicher, da ungültige N1QL- oder SQL++-Anweisungen an Couchbase gesendet werden können.