Benutzer-Werkzeuge

Webseiten-Werkzeuge


nosql:oracle_nosql_table_definition

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 lokalen Testinstallation

set KVHOME=D:\entwicklung\libraries\kv-ee-3.0.5
 
java -jar %KVHOME%\lib\kvcli.jar -host localhost -port 5000 -store kvstore

Die Tabelle anlegen:

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

Eine Index auf den Namen mit „plan add-index -name“ anlegen:

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:

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" ]
  } ]
}

Daten auslesen:

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.

Einfache Java Klasse um die Daten in die Tabelle einzulesen:

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);
 
        } 
 
    }
}

Quellen

Cookies helfen bei der Bereitstellung von Inhalten. Durch die Nutzung dieser Seiten erklären Sie sich damit einverstanden, dass Cookies auf Ihrem Rechner gespeichert werden. Weitere Information
"Autor: Gunther Pipperr"
nosql/oracle_nosql_table_definition.txt · Zuletzt geändert: 2015/05/13 14:22 von Gunther Pippèrr