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: enameWie 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 successfullykv-> 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.

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)