nosql:oracle_nosql_table_definition
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende Überarbeitung | |||
nosql:oracle_nosql_table_definition [2014/05/03 22:40] – [Quellen] gpipperr | nosql:oracle_nosql_table_definition [2015/05/13 14:22] (aktuell) – [Quellen] gpipperr | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ====== Das Konzept einer Tabelle in der NoSQL Datenbank v3 verwenden ====== | ||
+ | Mit der Version 3 der Oracle NoSQL Datenbank wird das Konzept der Tabelle in den Key-Value Store eingeführt. | ||
+ | Neben der Vereinfachung der Entwicklung steht dem Entwickler dann auch das Konzept eines Index auf die Values des Stores zur Verfügung. | ||
+ | |||
+ | Eine Tabelle wird erst mit **table create** definiert und damit mit einem **plan add-table** erzeugt. | ||
+ | |||
+ | |||
+ | |||
+ | Beispiel Anlegen der Tabelle EMP: | ||
+ | |||
+ | Starten der Koncole (hier als Beispiel mit einer [[nosql: | ||
+ | |||
+ | <code powershell> | ||
+ | set KVHOME=D: | ||
+ | |||
+ | java -jar %KVHOME%\lib\kvcli.jar -host localhost -port 5000 -store kvstore | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | Die Tabelle anlegen: | ||
+ | <code java> | ||
+ | |||
+ | kv-> table create -name emp -desc "Die Mitarbeiter" | ||
+ | |||
+ | emp-> add-field -type integer | ||
+ | emp-> primary-key -field empno | ||
+ | |||
+ | emp-> add-field -type string | ||
+ | emp-> add-field -type string | ||
+ | emp-> add-field -type integer | ||
+ | emp-> add-field -type long -name hiredate | ||
+ | emp-> add-field -type float -name sal -default 0 | ||
+ | emp-> add-field -type float -name comm | ||
+ | emp-> add-field -type integer | ||
+ | |||
+ | emp-> exit | ||
+ | |||
+ | Table emp built. | ||
+ | |||
+ | |||
+ | kv-> plan add-table -name emp -wait | ||
+ | |||
+ | Executed plan 5, waiting for completion... | ||
+ | Plan 5 ended successfully | ||
+ | |||
+ | </ | ||
+ | |||
+ | Eine Index auf den Namen mit **" | ||
+ | |||
+ | <code java> | ||
+ | |||
+ | kv-> plan add-index -name IDX_EMP_ENAME -table emp -field ename | ||
+ | |||
+ | Started plan 6. Use show plan -id 6 to check status. | ||
+ | To wait for completion, use plan wait -id 6 | ||
+ | | ||
+ | kv-> plan wait -id 6 | ||
+ | |||
+ | Plan 6 ended successfully | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | Mit **show tables** alle Tabellen anzeigen, mit **show tables -name** eine bestehende Tabelle als JSON Schema anzeigen. | ||
+ | |||
+ | Die erzeugte Tabelle anzeigen mit: | ||
+ | <code java> | ||
+ | |||
+ | kv-> show tables | ||
+ | Tables: | ||
+ | emp -- Die Mitarbeiter | ||
+ | |||
+ | kv-> show tables -name emp | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | } ], | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | } ] | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | |||
+ | Daten auslesen: | ||
+ | |||
+ | <code java> | ||
+ | |||
+ | kv-> get table -name emp -pretty | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | } | ||
+ | |||
+ | 1 row returned. | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | Einfache Java Klasse um die Daten in die Tabelle einzulesen: | ||
+ | |||
+ | <code java TableReadWrite.java> | ||
+ | |||
+ | import java.text.ParseException; | ||
+ | import java.text.SimpleDateFormat; | ||
+ | |||
+ | import java.util.Date; | ||
+ | |||
+ | import oracle.kv.KVStore; | ||
+ | import oracle.kv.KVStoreConfig; | ||
+ | import oracle.kv.KVStoreFactory; | ||
+ | import oracle.kv.table.Row; | ||
+ | import oracle.kv.table.Table; | ||
+ | import oracle.kv.table.TableAPI; | ||
+ | |||
+ | public class TableReadWrite { | ||
+ | |||
+ | // KV Store | ||
+ | public static KVStore kvstore = null; | ||
+ | |||
+ | | ||
+ | public static void main(String[] args) throws ParseException { | ||
+ | TableReadWrite tableReadWrite = new TableReadWrite(); | ||
+ | |||
+ | // get the host to connect as first parameter | ||
+ | String host = " | ||
+ | // get the store Name | ||
+ | String store = " | ||
+ | KVStoreConfig kvconfig = new KVStoreConfig(store, | ||
+ | // Connect to the store | ||
+ | kvstore = KVStoreFactory.getStore(kvconfig); | ||
+ | |||
+ | // get the Table API | ||
+ | TableAPI tableAPI = kvstore.getTableAPI(); | ||
+ | |||
+ | //get a reference to the table | ||
+ | Table empTable = tableAPI.getTable(" | ||
+ | |||
+ | // Get a Row instance | ||
+ | Row empRow = empTable.createRow(); | ||
+ | |||
+ | // put data in the row | ||
+ | empRow.put(" | ||
+ | |||
+ | empRow.put(" | ||
+ | empRow.put(" | ||
+ | empRow.put(" | ||
+ | |||
+ | // date handling | ||
+ | SimpleDateFormat formatter = new SimpleDateFormat(" | ||
+ | Date date = (Date) formatter.parse(" | ||
+ | |||
+ | empRow.put(" | ||
+ | empRow.put(" | ||
+ | empRow.put(" | ||
+ | empRow.put(" | ||
+ | |||
+ | // write the data to the store | ||
+ | tableAPI.put(empRow, | ||
+ | | ||
+ | //-------- Read the data again from the Store | ||
+ | //------- Use an Index | ||
+ | | ||
+ | //get Ref on the index | ||
+ | Index empEmpnoIndex = empTable.getIndex(" | ||
+ | | ||
+ | IndexKey empEmpnoIndexKey=empEmpnoIndex.createIndexKey(); | ||
+ | | ||
+ | TableIterator< | ||
+ | | ||
+ | while (result.hasNext()) { | ||
+ | Row empRowResult = result.next(); | ||
+ | // read row | ||
+ | String jRow=empRowResult.toJsonString(true); | ||
+ | System.out.println(jRow); | ||
+ | | ||
+ | } | ||
+ | | ||
+ | } | ||
+ | } | ||
+ | |||
+ | </ | ||
+ | ==== Quellen ==== | ||
+ | |||
+ | DOAG: | ||
+ | * http:// | ||
+ | |||
+ | Oracle: | ||
+ | |||
+ | * http:// | ||
+ | * http:// |
nosql/oracle_nosql_table_definition.txt · Zuletzt geändert: 2015/05/13 14:22 von gpipperr