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
nosql:oracle_nosql_table_definition [2014/05/03 22:40] – [Quellen] gpipperrnosql: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: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 ====
 +
 +DOAG:
 +  * http://www.doag.org/de/home/aktuelle-news/article/so-nutzen-sie-die-tabellen-schnittstelle-von-oracle-nosql-database-30.html
 +
 +Oracle:
 +
 +  * http://docs.oracle.com/cd/NOSQL/html/GettingStartedGuideTables/
 +  * http://www.youtube.com/watch?v=o7B94ch8iVs
nosql/oracle_nosql_table_definition.txt · Zuletzt geändert: 2015/05/13 14:22 von gpipperr