Inhaltsverzeichnis

Die Oracle NoSQL DB abfragen

Verbindung zum Store aufbauen

Über die Factory Klasse KVStoreFactory wird mit Hilfe der Klasse KVStoreConfig die Verbindung zu einem Store aufgebaut.

Notwendige Parameter:

  1. Name des Stores
  2. Liste mit den SN Nodes für den Zugriff auf den Store
  3. Parameter für Consistency und Durability definieren siehe ⇒ Übersicht Key-Value Store der Orace NoSQL DB 11g R2

Aufruf:

       // Node liste
       String[] kvhosts = {"nosqldb01:5000","nosqldb02:5000","nosqldb03:5000"}
 
       // Config erzeugen
       KVStoreConfig kvconfig = new KVStoreConfig("GPIDB", kvhosts);
 
       // Consistency definieren
       kvconfig.setConsistency(Consistency.NONE_REQUIRED);
 
       // Durabiltiy definieren
       kvconfig.setDurability(Durability.COMMIT_NO_SYNC);
 
       // Store Zugriff öffnen
       KVStore kstore = KVStoreFactory.getStore(kvconfig);
 
 
       // Mit dem Store arbeiten
       // ----------
        ....
       // ----------
 
 
       // Store wieder schließen
       kstore.close();
 

Dokumentation: KVstore Connect

Wert in den Store schreiben

Die einfachste Methode eine Wert in den Store zuschreiben ist die Methode put der Klasse KVstore:

Beispiel:

       // Key mit Minor und Mayer  Komponente anlegen
       Key k = Key.createKey("MAIN_KEY", "SLAVE_KEY");
       // Wert als Byte Array anlegen   
       byte[] b = ("Wert").getBytes();
       // Wert in den Store schreiben  
       kvstore.put(k, Value.createValue(b));

Existiert der Key wird der Wert überschrieben.

Dokumentation : KVstore put

Wert aus dem Store auslesen

       // Key erzeugen
       Key datakey = Key.createKey("ABCDEFG");
 
       // Daten aus dem Store mit den Key wieder lesen
       ValueVersion vv = kvstore.get(datakey);
       // Daten auslesen
       Value vdata = vv.getValue();
 
       // Nutzdaten wieder herstellen
       String data = new String(vdata.getValue());
       // Daten ausgeben
       System.out.println(data);
 

Dokumentation: Simple Read

putIfVersion() - Wert aus dem Store auslesen, bearbeiten und prüfen ob der Wert sich in zwischen geändert hat

Jeder Satz im Store hat eine interne Versionsnummer, über dieser Versionsnummer kann beim einfügen ( putIfVersion() ) geprüft werden, ob eine neuer Version des Satzes im Store existiert und entsprechend darauf reagiert werden.

        // Schlüssel erzeugen
        // nur der Mayor Part wird gefüllt
        Key datakey = Key.createKey(mayorkey);
 
        // Daten aus dem Store wieder lesen
        ValueVersion vv = kvstore.get(datakey);
        // Version merken
        Version matchVersion = vv.getVersion();
        // Value auslesen
        Value  vdata = vv.getValue();
        String data = new String(vdata.getValue());
        System.out.println("INFO -- Read Value for the Key::" + mayorkey+" Version("+ matchVersion.getVersion() + ") fond data::" + data);
 
        //Daten ändern
        data="Neuer Wert";
        vdata = Value.createValue(data.getBytes());
 
        // wert wieder zurückschreiben
        Version newVersion = kvstore.putIfVersion(datakey, vdata, matchVersion);
 
        // falls Null konnte nicht zurückgeschrieben werden
        //
        if (newVersion == null) {
            //Auf den fehlgeschlagenen Versuch nun reagieren
            throw new MyException("Fehler aufgetreten...");
 
        } 

Gesamten Store auslesen

Beispiel: Zählen aller Datensätze in einem Store mit Hilfe des storeIterator der Klasse KVstore.

    public static void countAll() {
 
        // Iterator Objekt für den gesamten Store erstellen
        // zur Zeit (R2) wird nur die Direction.UNORDERED untersützt 
        Iterator<KeyValueVersion> ifulldb = kvstore.storeIterator(Direction.UNORDERED, 10);
 
        int storeCount = 0;
 
        while (ifulldb.hasNext()) {
 
            // Key aus dem Store laden 
            KeyValueVersion e = ifulldb.next();
            storeCount++;
        }
 
        System.out.println(" --------------------------------------");
        System.out.println(" -- Total Count of Records in the  Database :: " + storeCount);
        System.out.println(" --------------------------------------");
 
    }

KVStore.multiGetIterator() verwenden

siehe diesen Bog Eintrag als Beispiel: http://www.giannakidis.info/post/54370539362/experimenting-with-kvstore-multigetiterator

Quellen

Beispiele: