Benutzer-Werkzeuge

Webseiten-Werkzeuge


nosql:oracle_nosql_table_definition

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Letzte ÜberarbeitungBeide Seiten der Revision
nosql:oracle_nosql_table_definition [2014/05/03 22:40] – [Das Konzept einer Tabelle in der NoSQL Datenbank v3 verwenden] gpipperrnosql:oracle_nosql_table_definition [2014/05/03 22:40] – [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:lokale_testdatenbank_oracle_nosql_db_11gr2|lokalen Testinstallation]] 
- 
-<code powershell> 
-set KVHOME=D:\entwicklung\libraries\kv-ee-3.0.5 
- 
-java -jar %KVHOME%\lib\kvcli.jar -host localhost -port 5000 -store kvstore 
- 
-</code> 
- 
- 
-Die Tabelle anlegen: 
-<code java> 
- 
-kv-> table create -name emp -desc "Die Mitarbeiter" 
- 
-emp-> add-field -type integer  -name empno 
-emp-> primary-key -field empno 
- 
-emp-> add-field -type string   -name ename -not-nullable -default "NEW" 
-emp-> add-field -type string   -name job 
-emp-> add-field -type integer  -name mgr 
-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  -name deptno 
- 
-emp-> exit 
- 
-Table emp built. 
- 
- 
-kv-> plan add-table -name emp -wait 
- 
-Executed plan 5, waiting for completion... 
-Plan 5 ended successfully 
- 
-</code> 
- 
-Eine Index auf den Namen mit **"plan add-index -name"** anlegen: 
- 
-<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 
-        
-</code> 
- 
- 
-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 
-{ 
-  "type" : "table", 
-  "name" : "emp", 
-  "description" : "Die Mitarbeiter", 
-  "shardKey" : [ "empno" ], 
-  "primaryKey" : [ "empno" ], 
-  "fields" : [ { 
-    "name" : "empno", 
-    "type" : "INTEGER", 
-    "nullable" : true, 
-    "default" : null 
-  }, { 
-    "name" : "ename", 
-    "type" : "STRING", 
-    "nullable" : false, 
-    "default" : "NEW" 
-  }, { 
-    "name" : "job", 
-    "type" : "STRING", 
-    "nullable" : true, 
-    "default" : null 
-  }, { 
-    "name" : "mgr", 
-    "type" : "INTEGER", 
-    "nullable" : true, 
-    "default" : null 
-  }, { 
-    "name" : "hiredate", 
-    "type" : "LONG", 
-    "nullable" : true, 
-    "default" : null 
-  }, { 
-    "name" : "sal", 
-    "type" : "FLOAT", 
-    "nullable" : true, 
-    "default" : 0.0 
-  }, { 
-    "name" : "comm", 
-    "type" : "FLOAT", 
-    "nullable" : true, 
-    "default" : null 
-  }, { 
-    "name" : "deptno", 
-    "type" : "INTEGER", 
-    "nullable" : true, 
-    "default" : null 
-  } ], 
-  "indexes" : [ { 
-    "name" : "IDX_EMP_ENAME", 
-    "description" : null, 
-    "fields" : [ "ename" ] 
-  } ] 
-} 
-</code> 
- 
- 
-Daten auslesen: 
- 
-<code java> 
- 
-kv-> get table -name emp -pretty 
-{ 
-  "empno" : 10, 
-  "ename" : "Gunther", 
-  "job" : "Developer", 
-  "mgr" : 0, 
-  "hiredate" : 1388531040000, 
-  "sal" : 1000.0, 
-  "comm" : 5.0, 
-  "deptno" : 10 
-} 
- 
-1 row returned. 
- 
-</code> 
- 
- 
- 
-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 = "localhost:5000"; 
-        // get the store Name 
-        String store = "kvstore"; 
-        KVStoreConfig kvconfig = new KVStoreConfig(store, host); 
-        // 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("emp"); 
- 
-        // Get a Row instance 
-        Row empRow = empTable.createRow(); 
- 
-        // put data in the row 
-        empRow.put("empno", 10); 
- 
-        empRow.put("ename", "Gunther"); 
-        empRow.put("job", "Developer"); 
-        empRow.put("mgr", 0); 
- 
-        //  date handling 
-        SimpleDateFormat formatter = new SimpleDateFormat("dd.mm.yyyy"); 
-        Date date = (Date) formatter.parse("01.04.2014"); 
- 
-        empRow.put("hiredate", date.getTime()); 
-        empRow.put("sal", 1000f); 
-        empRow.put("comm", 5f); 
-        empRow.put("deptno", 10); 
- 
-        // write the data to the store 
-        tableAPI.put(empRow, null, null); 
-         
-        //-------- Read the data again from the Store 
-        //------- Use an Index 
-         
-        //get Ref on the index 
-        Index empEmpnoIndex = empTable.getIndex("IDX_EMP_ENAME"); 
-         
-        IndexKey empEmpnoIndexKey=empEmpnoIndex.createIndexKey(); 
-         
-        TableIterator<Row> result = tableAPI.tableIterator(empEmpnoIndexKey, null, null); 
-         
-        while (result.hasNext()) { 
-            Row empRowResult = result.next(); 
-            // read row 
-            String jRow=empRowResult.toJsonString(true); 
-            System.out.println(jRow); 
-             
-        }  
-         
-    } 
-} 
- 
-</code> 
-==== Quellen ==== 
- 
- 
-Oracle: 
- 
-  * http://www.youtube.com/watch?v=o7B94ch8iVs 
nosql/oracle_nosql_table_definition.txt · Zuletzt geändert: 2015/05/13 14:22 von gpipperr