Benutzer-Werkzeuge

Webseiten-Werkzeuge


nosql:oracle_nosql_database_einfuehrung

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
nosql:oracle_nosql_database_einfuehrung [2016/01/08 16:48] – [Die Oracle NoSQL Database - Ein Key Value Store] gpipperrnosql:oracle_nosql_database_einfuehrung [2016/07/07 20:43] (aktuell) – [Version 3] gpipperr
Zeile 1: Zeile 1:
 +===== Die Oracle NoSQL Database - Ein Key Value Store ===== 
 +
 +Die Oracle NoSQL Datenbank ist ein Vertreter der Key-Value Store Datenbanken. 
 +
 +Auf Basis der soliden Berkeley DB Java Edition hat Oracle die bestehenden Replikationsmechanismen der Berkeley DB optimiert und damit eine neue Datenbank, die Oracle NoSQL entwickelt.
 +
 +Eine zusammenfassende Einführung in die Oracle NoSQL Datenbank finden Sie hier:\\
 +  * [[http://www.pipperr.de/knowhow/oracle_nosql/oracle_nosql.html|Oracle NoSQL DOAG Datenbank Konferenz 2014 - Düsseldorf, Dienstag, 03.Juni 2014]]
 +  * [[http://www.pipperr.de/knowhow/oracle_nosql/oracle_nosql.html|Oracle NoSQL Development - TWJUG - Taiwan Java User Group Treffen - 04.10.2014 - Oracle Taipei Office ]]
 +
 +
 +Veröffentlichung zu diesem Thema in der DOAG News 05-2014 (Eine Anmeldung an der DOAG Website ist allerdings erforderlich):
 +
 +=> [[https://www.doag.org/formes/servlet/DocNavi?action=getFile&did=6352029|2014-05-News-Gunther-Pippèrr-Oracle-NoSQL---eine-Alternative-für-die-traditionelle-Datenbank.pdf]]
 +
 +
 +Bzw. über Slideshare
 +
 +Deutsch - Übersicht:
 +[slideshare id=51535551&doc=oraclenosql-doag-datenbankkonferenzjuni2014-150812085524-lva1-app6891]
 +
 +Englisch - mehr für Entwickler
 +[slideshare id=51535426&doc=oraclenosql-twjug-oktober2014taiwanprintv01-150812085112-lva1-app6892]
 +
 +
 +----
 +
 +
 +Die Merkmale der Oracle NoSQL Datenbank:
 +
 +  * Key-Value Store
 +    * Key besteht aus zwei Komponenten - den Major und Minor Keys
 +  * Large Object LOB Support 
 +  * Basiert auf der [[http://de.wikipedia.org/wiki/Berkeley_DB|Oracle Berkeley DB]]
 +    * [[http://www.oracle.com/technetwork/products/berkeleydb/learnmore/bdb-je-architecture-whitepaper-366830.pdf|Architektur Übersicht]]
 +  * Partitionskonzept - Mayor Keys in derselben Partition
 +  * CRUD Support - Create/Read/Update/Delete
 +      * Consistency und Durabilität kann durch Parameter gesteuert werden
 +  * Kann Transaktionen unterstützen
 +  * HA Funktionalität über Replikate
 +  * Seit Version 2 Schema Definition über [[http://avro.apache.org/|Avro ]] Schema möglich
 +    * JSON Format für die Schema Definition 
 +  * Mit der Version 3 Unterstützung für ein Tabellen Konzept und sekundäre Indexe. 
 +  * Hadoop Integration 
 +  * Java und C API ( C API nur in der EE!)
 +  * Oracle Database Integration via External Tables (EE Only) 
 +  * In der Version 2 kein Sicherheitsmodell für Authentifizierung, Identität des Clients und verschlüsselte Datenbank Übertragung
 +
 +====Architektur ====
 +
 +Die Oracle NoSQL DB hat in Replikationskonzept umgesetzt und der Store (entspricht im Denkansatz der RDBMS einer kompletten Datenbank)  
 +wird über möglichst viele Server, den Storage Nodes (SN) verteilt. 
 +Auf jedem der Storage Nodes ist ein zentraler Prozess gestartet, der Storage Node Agent SNA. 
 +Der SNA übernimmt eine zentrale Rolle, er überwacht den jeweiligen Storage Node und liefert wichtige Informationen an den Admin Service, der den Store verwaltet. 
 +Der Admin Service besteht wiederum aus einer kleinen Datenbank (entspricht im Prinzip dem System Tablespace mit dem Data Dictionary einer RDBMS) und dient zur Überwachung und  Konfiguration des Stores. 
 +Damit bei einem Ausfall dieser zentrale Komponente redundant zur Verfügung steht, kann der Admin Service über mehrere SN gespiegelt werden.
 +
 +//
 +{{ :nosql:oraclenosql-grundarchitektur_v01.png?500 |Aufbau eines Oracle NoSQL Stores}}Aufbau eines NoSQL Stores – Beispiel mit 3 Storage Nodes (SN) auf je einem Server und Replikation Faktor 3 = drei Replication Groups (Rg) in einer Zone mit dreifach gespiegelten Admin Service für die Verwaltung
 +//
 +
 +
 +In der Architektur des Oracle NoSQL Stores nimmt der Client Treiber die zentrale Rolle ein. 
 +Die gesamte Logik der Datenverteilung über den Store und das Transaktionsverhalten wird auf der Client Seite umgesetzt. 
 +Die Verteilung der Daten auf die Partitionen des Stores erfolgt durch die Keys (der Schlüssel auf die Daten).  
 +Der Client Treiber kennt die Struktur des Stores und ermittelt über einen MD5 Hash auf den Key den passen Master für den Datensatz 
 +und überträgt die Daten zum Schreiben auf den Storage Node, der den Master mit der entsprechenden Partition hält. 
 +//
 +{{ :nosql:oraclenosql-grundarchitektur_client_driver_v02.png?500 |Hashing und Partitionierung der Daten der Oracle NoSQL Datenbank}}Hashing und Partitionierung der Daten der Oracle NoSQL Datenbank
 +//
 +Die Daten werden binär im Store abgelegt, der Zugriff erfolgt ausschließlich über den Schlüssel. 
 +Beim Lesen kann aber der Client vom Master und allen Replikaten die Daten erhalten, dies optimiert entscheidend die Performance.
 +
 +* [[nosql:db_architektur_oracle_nosql_db_11gR2|Auf dem Key-Value Store die Durability und Consistency - das Transaktionelles Verhalten - einstellen]]
 +
 +Unter der Oracle NoSQL ist die Java Version der Oracle Berkeley Datenbank im Einsatz. 
 +Ein sehr bedeutender Unterschied zum gewohnten Verhalten des RRDBMS System stellt dabei das Logverhalten der Berkeley DB dar. 
 +Die Oracle NoSQL unterscheidet nicht zwischen einen Online Redo Log und den eigentlichen Datendateien. 
 +Auch existiert kein Undo Tablespace für die „Before Images“ eines Datensatzes. Alles wird über die Datendateien abgewickelt. 
 +Jede Aktion auf den Daten führt zu einem Eintrag in die Datendateien, auch das Löschen! 
 +Das führt dazu, dass die Datenbank im ersten Schritt scheinbar immer größer wird. 
 +Erst wenn bestimmte Schwellwerte erreicht werden, wird im Hintergrund ein „Cleaner Thread“ gestartet, der die Datendateien optimiert.
 +
 +* [[nosql:log_file_verhalten_oracle_nosql_db_11gR2| Daten Wachstum und Transaktionslog Verhalten Oracle NoSQL 11gR2]] 
 +
 +  
 +====Lizenzierung ====
 +
 +Erfreulicher Weise hat sich Oracle entschieden, den Hauptteil der Software als CC (Community Edition - Lizensiert nach der “GNU AFFERO GENERAL
 +PUBLIC LICENSE“) zur relativ freien Verwendung zu lizensieren. 
 +Sollen erweitere Sicherheitsfeatures, wie Oracle Wallet oder eine Integration mit „External“ Table in die RDBMS umgesetzt werden, muss aber die Enterprise Edition gewählt werden.
 +
 +  * [[nosql:enterprise_cc_edition_oracle_nosql_db_11gR2|Unterschiede zwischen CC und EE Edition]]
 +
 +====Installation====
 +Beim Anlegen des Stores definiert der Administrator mit dem Replikationsfaktor, wie viele Kopien von einem Master über alle verfügbaren Knoten bzw. Storage Nodes verteilt werden sollen. 
 +Zum Beispiel bedeutet dies bei einem Replication Faktor von drei das ein Master und zwei Replica in einer Replication Group (Rg) verwaltet werden. 
 +Auf den verfügbaren Storage Nodes werden drei Replikation Nodes für diese Gruppe angelegt, möglichst je auf einem separaten Server. 
 +Jeder Storage Node besteht damit einem oder mehreren Replikation Nodes, die in einem sogenannten „Shared“ organsiert sind.
 +\\
 +Ebenfalls beim Anlegen des Stores definiert der Administrator die Anzahl der Partitionen, in die der Store unterteilt wird. 
 +Jeder Replication Group (Rg) wird die gleiche Anzahl an Partitionen zugeordnet und diese werden damit über mehrere Storage Nodes (SN) mit einem Master / Slave Konzept repliziert. 
 +
 +  * [[nosql:install_oracle_nosql_db_11gR2|Installation Oracle NoSQL Database 11gR2 (11.2.2.0.39)]]
 +  
 +  * [[nosql:install_oracle_nosql_db_11gR2_script_based|Installation Oracle NoSQL Database 11gR2 automatisieren]]
 +
 +
 +=== Netzwerk ===
 +
 +Ein wichtiger Punkt für die Performance einer Oracle NoSQL Umgebung ist das Netzwerk. Wird auf höchste Performance Wert gelegt, lohnt sich durchaus der Einsatz von InfiniBand für die Kommunikation der Knoten untereinander. Jeder Datensatz muss schnellstmöglich auf die Replikate übertragen werden um das Zeitfenster der „Eventual Consistency“ möglichst klein zu halten. 
 +
 +Eine exakte gleiche Systemzeit aller Knoten des Store ist sehr wichtig, der NTP Service auf jeden Knoten ist mit größter Sorgfalt einzurichten um Ausfälle im Store zu vermeiden, bzgl. Ntp siehe dazu auch [[linux:linux_rac_ntp|Die Uhrzeit im Oracle Cluster überwachen/prüfen und kontrollieren]]
 +
 +Die Oracle NoSQL DB benötigt für die Kommunikation der Storage Nodes untereinander und mit Client eine recht hohe Anzahl von Ports. Soll vor der NoSQL DB Umgebung ein FW für erweiterte Sicherheit sorgen, ist darauf zu achten eine Portrange auch für die Client Kommunikation zu reservieren (Parameter servicePortRange beim Anlegen des Stores) damit auch die für die RMI Kommunikation notwendigen Ports zwischen Client und DB Knoten in der FW freigeschaltet werden können. Ist mehr als ein Store in Verwendung, empfiehlt es sich diese Portranges zu standardisiert um die Wartung und den Betrieb erheblich zu erleichtern.
 +
 +
 +  * [[nosql:netzkonfiguration_fw_oracle_nosql_db_11gR2|Oracle NoSQL Netzwerk Konfiguration]]
 +
 +Neben der Definition einheitlicher Portranges für die Umgebungen sollte auch ein Namenskonzept für den Store nicht fehlen, um diese eindeutig zu unterscheiden.
 +
 +====Betrieb und Wartung ====
 +
 +Für die Administration und Überwachung des Stores steht eine Admin Konsole und eine Art erstes einfaches SQL*Plus zur Verfügung. Eine einfache, leider in der Version 2 nicht Passwort geschützte, Weboberfläche erlaubt es, den Status des Stores remote per Browser abzufragen. Im Detail lässt sich das Laufzeitverhalten der Store Node im Store mit JMX überwachen, zum Beispiel mit Java Mission Control. Schnell zeigt es sich aber, dass eigene Skripte zur Verwaltung notwendig werden, besonders wenn die Zahl der Store Nodes recht hoch wird. 
 +
 +  * [[nosql:administration_5_oracle_nosql_db_11gR2|Administration der Oracle NoSQL Database 11gR2 - Starten/Stoppen]]
 +  * [[nosql:administration_2_oracle_nosql_db_11gR2|Administration der Oracle NoSQL Database 11gR2  - Daily Maintenance Scripts ]]   
 +
 +
 +
 +  * [[nosql:administration_4_je_info_files|Das Schreiben von Log/Debug Informationen in der NoSQL steuern]]
 +  *  [[nosql:je_eigenschaften_oracle_nosql_abfragen|Mit den JE Klassen die Datendateien / Transaktionslogs analysieren der Oracle NoSQL auswerten]]
 +
 +  * [[nosql:neuen_knoten_oracle_nosql_db_11gR2|Einen neuen Knoten SN hinzufügen]]
 +  * [[nosql:ueberwachung_oracle_nosql_db_11gR2|Oracle NoSQL Store mit JMX überwachen]]
 +  * [[nosql:netzkonfiguration_speicher_oracle_nosql_db_11gR2|Oracle NoSQL Speicherverbrauch Konfiguration]]
 +
 +
 +Oft wird in der NoSQL Welt das Thema Backup sehr stiefmütterlich behandelt, mit der Begründung „bei genügend Server Knoten kann ja bei einem Ausfall nichts passieren“, das Problem mit logischen Fehlern wird kaum beachtet. Mit der Oracle NoSQL aber lassen sich Snapshots des gesamten Stores erzeugen. Auf Basis dieser über alle Knoten konsistenten Snapshots kann ein echtes Backup Konzept realisierbar wird. Die Daten in einem Snapshot können auch in einen anderen Store wieder importiert werden, zum Bespiel um eine Testumgebung aus den Produktionsdaten aufzusetzen.
 +
 +
 +  * [[nosql:administration_oracle_nosql_db_11gR2|Administration der Oracle NoSQL Database 11gR2 - Backup und Recovery ]]
 +
 +
 +== Die Web Oberfläche ==
 +Wird ein Admin Port definiert kann im Browser die Admin Console im Browser (Standard Port 5001) geöffnet werden. 
 +
 +Aufruf über den Browser mit <nowiki>http://localhost:5001/</nowiki>:
 +
 +{{ :nosql:admin_overview_nosql.png?300 |Admin Übersicht Oracle NoSQL}}
 +
 +
 +Leider nicht Passwort geschützt!
 +
 +
 +Die Jetty Version in der v3.2.5 ist zum Glück recht alt (Version 7.4.0), daher nicht vom dem Jetty Security Bug betroffen => siehe [[http://blog.gdssecurity.com/labs/2015/2/25/jetleak-vulnerability-remote-leakage-of-shared-buffers-in-je.html|JetLeak Vulnerability: Remote Leakage of Shared Buffers in Jetty Web Server  - CVE-2015-2080 ]].
 +
 +
 +== Oracle Enterprise Manager Integration ==
 +
 +Ab der EE Version 3 seht unter dem lib Verzeichnis ein Plugin für den Oracle EM Manager zur Verfügung (12.1.0.9.0_oracle.nosql.snab_2000_0.opar).
 +
 +  * [[nosql:oracle_nosql_ee_enterprise_manager_plugin|Das Oracle NoSQL EE OEM Plugin]]
 +
 +
 +Für die CC kann auch ein eigenes Plugin entwicklet werden, siehe [[dba:oms_12c_plugin_development|Plug-In Development mit dem Oracle Enterprise Manager 12c]]
 +
 +
 +
 +====Sicherheit====
 +
 +Erst ab der Version 3 erfüllt auch die Oracle NoSQL DB grundlegende Sicherheitsanforderungen. 
 +
 +In den vorgehenden Versionen waren die Netzwerkadministration und der Entwickler in der vollen Verantwortung. 
 +
 +Ab der Version 3 kann das Datenprotokoll verschlüsselt werden und eine Benutzerverwaltung lässt sich in Grundzügen realisieren.
 +
 +  * [[nosql:security_oracle_nosql_db_v3|Sicherheitsfeature in der Oracle NoSQL V3 - Protokoll Verschlüsselung und User Login]]
 +
 +
 +
 +====Update ====
 +
 +=== Version 2 ===
 +  * [[nosql:administration_3_upgrade_oracle_nosql_db_11gR2|Upgrade einer Oracle NoSQL Umgebung von 11g 2.0.39 nach 12c R1 2.1.8 ]]
 +  * [[nosql:administration_3_1_upgrade_oracle_nosql_db_11gR2_2_1_57|Update einer Oracle NoSQL 12c R1 2.1.8 Umgebung auf das neuste Release 2.1.57]]
 +
 +=== Version 3 ===
 +
 +New Features: http://docs.oracle.com/cd/NOSQL/html/changelog.html
 +
 +Besondere Merkmale:
 +  * Secondary Indexes bei Verwendung des neuen Table Features 
 +
 +
 +  * [[nosql:administration_3_2_upgrade_oracle_nosql_db_12cR1_3_0_5|Update einer Oracle NoSQL 12c R1 2.1.8 Umgebung auf das neuste Release 12cR1 3.0.5 - Test mit Java 8]]
 +
 +  
 +==Log Files in der V3 einsammeln ==
 +
 +Neues Utiltiy "diagnostics"
 +<code bash>
 +java -jar kvstore.jar diagnostics
 +
 +diagnostics-> help
 +Oracle NoSQL Database Diagnostic Utility Commands:
 +        setup
 +        collect
 +        exit
 +        help
 +
 +</code>
 +  
 +=== Version 4 ===
 +
 +New Feature => http://docs.oracle.com/cd/NOSQL/html/changelog.html
 +
 +Auszug aus den neuen Features:
 +
 +  * Time To Live (TTL) on an individual table row
 +  * SQL-like declarative query language, called ONQL
 +  * Export/Import utility.
 + 
 +
 +====Entwicklung====
 +
 +===Eine Testversion starten ===
 +
 +  * [[nosql:lokale_testdatenbank_oracle_nosql_db_11gR2|KVlite als Testdatenbank lokal starten]]
 +
 +
 +=== Daten abfragen und einfügen=== 
 +
 +Eine eigentliche SQL Syntax steht für das Arbeiten mit dem Store zurzeit nicht zur Verfügung. 
 +
 +Das Auslesen der Daten erfolgt mit PUT und GET Methoden des JAVA oder C APIs. 
 + 
 +  * [[nosql:connect_read_write_oracle_nosql_db_11gR2|Die Oracle NoSQL DB abfragen]]
 +  * [[nosql:avro_schema_definieren|Mit einem Avro Schema in der Oracle NoSQL Datenbank arbeiten]]
 +  * [[nosql:oracle_nosql_table_definition|Das Konzept einer Tabelle in der NoSQL Datenbank verwenden]]
 +  * [[nosql:admin_console_oracle_nosql_db_11gR2|Die Befehle der Admin Konsole der Oracle NoSQL DB im eigenen Programmen integrieren]]
 +
 +
 +Eine Art SQL*Plus für die NoSQL DB:
 +  * [[nosql:kvclient_oracle_nosql_db_11gR2|kvcli ab der Oracle NoSQL Version 2.1.8 verwenden]]
 +
 +
 +Folgende Programmiersprachen werden ebenfalls neben Java für das Ansprechen der Datenbank unterstützt:
 +
 +  * Python 2.7 - https://pypi.python.org/pypi/nosqldb
 +    * Es muss ein eigener Proxy Server verwendet werden um auf die Datenbank zu zugreifen! 
 +    * Verwendung =>  http://docs.oracle.com/cd/NOSQL/html/driver_table_python/booklets/python_driver/index.html
 +  * JavaScript Driver - https://www.npmjs.com/package/nosqldb-oraclejs
 +  * C - siehe die [[http://www.oracle.com/technetwork/database/database-technologies/nosqldb/downloads/index.html|Oracle NoSQL Website]] für die Download links
 +===Integration in die Oracle 11g Datenbank===
 +
 +  * [[nosql:oracle_nosql_external_table|Die Oracle Datenbank per External Table mit der NoSQL DB verbinden]]  
 +
 +===Integration in Apache Hadopp===
 +
 +  * [[nosql:oracle_nosql_hadoop_integration|Die Oracle NoSQL per MapReduce mit Hadoop verwenden]]  
 +  
 +===Last Test und Performance Tuning ===
 +
 +  * [[nosql:oracle_nosql_lasttest|Oracle NoSQL Last Test]]
 +
 +Da hier Java im Spiel ist, können je nach eingesetzt JVM wohl so einiges an Unterschieden ergeben.
 +
 +Alternative JVM Lösungen:
 +  * [[http://www.azulsystems.com/solutions/big-data|Zing: A better Java for Big Data]]
 +  * [[http://www.azulsystems.com/sites/www.azulsystems.com/files/Java%20aktuell%20Sonderdruck%20-%20Matthew%20Schuetze%20-%20Java%20ohne%20Schwankungen.pdf | Java Aktuell 04-2013 - Java ohne Schwankungen]]
 +
 +
 +====Weitere Key Values Stores====
 +
 +  * [[http://redis.io/|Die Key Value Store Datenbank Redis]]
 +
 +===== Quellen Oracle NoSQL=====
 +
 +=== Oracle ===
 +
 +==Oracle Deutschland==
 +
 +  * http://www.oracle.com/webfolder/technetwork/de/community/dojo/index.html 
 +
 +==Oracle NoSQL==
 +
 +  * http://www.oracle.com/technetwork/products/nosqldb/overview/index.html
 +  * http://www.oracle.com/technetwork/database/nosqldb/overview/nosqldb-faq-518364.html
 +  * http://www.oracle.com/technetwork/products/nosqldb/documentation/consistency-explained-1659908.pdf
 +  * http://www.oracle.com/technetwork/articles/bigdata/oracle-nosqldb-appdev-1891870.html
 +  * http://www.oracle.com/technetwork/products/nosqldb/learnmore/nosql-wp-1436762.pdf
 +  * http://www.oracle.com/technetwork/topics/bigdata/articles/intro-to-oracle-nosql-db-hol-1937059.pdf
 +
 +==Oracle Berkeley DB==
 +
 +  * http://www.oracle.com/technetwork/products/berkeleydb/overview/index.html
 +  * http://www.oracle.com/us/products/database/berkeley-db/overview/index.html
 +
 +=== Vorträge===
 +
 +  * http://indico.cern.ch/getFile.py/access?resId=0&materialId=slides&confId=159716
 +  * http://www.oswoug.org/OSWOUG/Presentation_Slides_files/Oracle%20NoSQL%20Database%20Overview%20--%20OSWOUG%20--%2008-15-12.pdf
 +
 +
 +=== Externe Tools/Schnittstellen etc. ===
 +
 +==Zorba==
 +  * [[https://launchpad.net/zorba/oracle-nosql-db-module|Zorba external module for using an Oracle NoSQL Database]]
  
nosql/oracle_nosql_database_einfuehrung.txt · Zuletzt geändert: 2016/07/07 20:43 von gpipperr