Praxis-Tipp zur Tabellen-Schnittstelle von Oracle NoSQL Database 3.0

Ohne Tabellen geht´s auch in NoSQL nicht

Seite: 3/3

Anbieter zum Thema

Tabellenzeilen mit dem CLI aus der NoSQL-Datenbank abrufen

Analog dazu lässt sich das Kommando „get table“ verwenden. Der Zugriff erfolgt hier allerdings allein über den Primärschlüssel oder (wie sich noch zeigen wird) über per „Secondary Index“ indizierte Spalten. Die freie Selektion, wie bei SQL-Datenbanken üblich, ist in der NoSQL-Datenbank nach wie vor nicht möglich:

kv-> get table -name EMP{"empno":7844,"ename":"FORD", "sal":2500.0,"job":"CLERK"}{"empno":815, "ename":"JONES", "sal":3500.0,"job":"MANAGER"}{"empno":7839,"ename":"MILLER","sal":3000.0,"job":"SALESMAN"}
3 rows returned.
kv-> get table -name EMP -field "empno" -value 7844{"empno":7844,"ename":"FORD","sal":2500.0,"job":"CLERK"}
kv-> get table -name EMP -field "ename" -value "SMITH"Error handling command get table -name EMP -field "ename" -value"SMITH": Field is not part of PrimaryKey: ename

Wie oben gezeigt wird, ist der Zugriff auf eine konkrete Tabellenzeile zunächst nur mit dem Primary Key möglich. Der Admin erkennt sofort, dass der „Key Value Store“ der NoSQL-Datenbank die technische Grundlage ist.

Secondary Indexes nutzen

Allerdings ist das noch nicht alles: Mit den neu eingeführten „Secondary Indexes“ wurde eine Möglichkeit geschaffen, auch über andere Spalten als den „Primary Key“ zu suchen. Im Folgenden steht, wie ein Secondary Index erzeugt und genutzt wird.

kv-> plan add-index -name idx_emp_ename -table EMP -field enameStarted plan 19. Use show plan -id 19 to check status. To wait for completion, use plan wait -id 19kv-> plan wait -id 19Plan 19 ended successfully
kv-> get table -name EMP -field ename -value FORDError handling command get table -name EMP -field ename -value FORD: Field is not part of PrimaryKey: enamekv-> get table -name EMP -field ename -value FORD -index idx_emp_ename{"empno":7844,"ename":"FORD","sal":2500.0,"job":"CLERK"}

Die technische Grundlage eines Secondary Index ist einfach: Beim Erstellen generiert die NoSQL-Datenbank zusätzliche Key-Value-Paare, mit denen der Index modelliert wird.

Dabei dienen die Inhalte der indizierten Spalte als Key – der „Primary Key“ der indizierten Zeile ist dagegen der „Value“. Beim Abrufen von Zeilen wird folgerichtig zunächst mithilfe dieses Index der Primärschlüssel und damit erst die konkreten Daten abgerufen.

Da die NoSQL-Datenbank keinen Query-Optimizer besitzt, muss der „Index Lookup“ von der Anwendung explizit angefordert werden – oben, im Programmcode ist das am Parameter „-index“ erkennbar.

Die in den zwei eben genannten Beispielen vorgestellten Möglichkeiten lassen sich auch per API aus Java-Programmen heraus nutzen. Auf die bereits erwähnten „Child Tables“ oder Array-Datentypen soll hier aus Platzgründen nicht mehr im Detail eingegangen werden – die Dokumentation der NoSQL-Datenbank enthält dazu weitere Informationen.

Carsten Czarski ist leitender Systemberater bei der Oracle Deutschland B.V. & Co KG.
Carsten Czarski ist leitender Systemberater bei der Oracle Deutschland B.V. & Co KG.
(Bild: DOAG)

Der Autor:

Carsten Czarski ist leitender Systemberater bei der Oracle Deutschland B.V. & Co KG. Sein Text wurde zuerst auf der Doag-Webseite veröffentlicht.

(ID:42776026)