nosql:oracle_nosql_database_einfuehrung
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
nosql:oracle_nosql_database_einfuehrung [2016/01/08 16:48] – [Die Oracle NoSQL Database - Ein Key Value Store] gpipperr | nosql: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:// | ||
+ | * [[http:// | ||
+ | |||
+ | |||
+ | Veröffentlichung zu diesem Thema in der DOAG News 05-2014 (Eine Anmeldung an der DOAG Website ist allerdings erforderlich): | ||
+ | |||
+ | => [[https:// | ||
+ | |||
+ | |||
+ | Bzw. über Slideshare | ||
+ | |||
+ | Deutsch - Übersicht: | ||
+ | [slideshare id=51535551& | ||
+ | |||
+ | Englisch - mehr für Entwickler | ||
+ | [slideshare id=51535426& | ||
+ | |||
+ | |||
+ | ---- | ||
+ | |||
+ | |||
+ | 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:// | ||
+ | * [[http:// | ||
+ | * Partitionskonzept - Mayor Keys in derselben Partition | ||
+ | * CRUD Support - Create/ | ||
+ | * 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:// | ||
+ | * 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, | ||
+ | |||
+ | ====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. | ||
+ | |||
+ | // | ||
+ | {{ : | ||
+ | // | ||
+ | |||
+ | |||
+ | 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. | ||
+ | // | ||
+ | {{ : | ||
+ | // | ||
+ | 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: | ||
+ | |||
+ | 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, | ||
+ | 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: | ||
+ | |||
+ | | ||
+ | ====Lizenzierung ==== | ||
+ | |||
+ | Erfreulicher Weise hat sich Oracle entschieden, | ||
+ | PUBLIC LICENSE“) zur relativ freien Verwendung zu lizensieren. | ||
+ | Sollen erweitere Sicherheitsfeatures, | ||
+ | |||
+ | * [[nosql: | ||
+ | |||
+ | ====Installation==== | ||
+ | Beim Anlegen des Stores definiert der Administrator mit dem Replikationsfaktor, | ||
+ | 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, | ||
+ | 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: | ||
+ | | ||
+ | * [[nosql: | ||
+ | |||
+ | |||
+ | === 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: | ||
+ | |||
+ | 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: | ||
+ | |||
+ | 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, | ||
+ | |||
+ | * [[nosql: | ||
+ | * [[nosql: | ||
+ | |||
+ | |||
+ | |||
+ | * [[nosql: | ||
+ | * [[nosql: | ||
+ | |||
+ | * [[nosql: | ||
+ | * [[nosql: | ||
+ | * [[nosql: | ||
+ | |||
+ | |||
+ | 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“, | ||
+ | |||
+ | |||
+ | * [[nosql: | ||
+ | |||
+ | |||
+ | == 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 < | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | |||
+ | 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:// | ||
+ | |||
+ | |||
+ | == 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: | ||
+ | |||
+ | |||
+ | Für die CC kann auch ein eigenes Plugin entwicklet werden, siehe [[dba: | ||
+ | |||
+ | |||
+ | |||
+ | ====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: | ||
+ | |||
+ | |||
+ | |||
+ | ====Update ==== | ||
+ | |||
+ | === Version 2 === | ||
+ | * [[nosql: | ||
+ | * [[nosql: | ||
+ | |||
+ | === Version 3 === | ||
+ | |||
+ | New Features: http:// | ||
+ | |||
+ | Besondere Merkmale: | ||
+ | * Secondary Indexes bei Verwendung des neuen Table Features | ||
+ | |||
+ | |||
+ | * [[nosql: | ||
+ | |||
+ | | ||
+ | ==Log Files in der V3 einsammeln == | ||
+ | |||
+ | Neues Utiltiy " | ||
+ | <code bash> | ||
+ | java -jar kvstore.jar diagnostics | ||
+ | |||
+ | diagnostics-> | ||
+ | Oracle NoSQL Database Diagnostic Utility Commands: | ||
+ | setup | ||
+ | collect | ||
+ | exit | ||
+ | help | ||
+ | |||
+ | </ | ||
+ | | ||
+ | === Version 4 === | ||
+ | |||
+ | New Feature => http:// | ||
+ | |||
+ | Auszug aus den neuen Features: | ||
+ | |||
+ | * Time To Live (TTL) on an individual table row | ||
+ | * SQL-like declarative query language, called ONQL | ||
+ | * Export/ | ||
+ | |||
+ | |||
+ | ====Entwicklung==== | ||
+ | |||
+ | ===Eine Testversion starten === | ||
+ | |||
+ | * [[nosql: | ||
+ | |||
+ | |||
+ | === 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: | ||
+ | * [[nosql: | ||
+ | * [[nosql: | ||
+ | * [[nosql: | ||
+ | |||
+ | |||
+ | Eine Art SQL*Plus für die NoSQL DB: | ||
+ | * [[nosql: | ||
+ | |||
+ | |||
+ | Folgende Programmiersprachen werden ebenfalls neben Java für das Ansprechen der Datenbank unterstützt: | ||
+ | |||
+ | * Python 2.7 - https:// | ||
+ | * Es muss ein eigener Proxy Server verwendet werden um auf die Datenbank zu zugreifen! | ||
+ | * Verwendung => http:// | ||
+ | * JavaScript Driver - https:// | ||
+ | * C - siehe die [[http:// | ||
+ | ===Integration in die Oracle 11g Datenbank=== | ||
+ | |||
+ | * [[nosql: | ||
+ | |||
+ | ===Integration in Apache Hadopp=== | ||
+ | |||
+ | * [[nosql: | ||
+ | | ||
+ | ===Last Test und Performance Tuning === | ||
+ | |||
+ | * [[nosql: | ||
+ | |||
+ | Da hier Java im Spiel ist, können je nach eingesetzt JVM wohl so einiges an Unterschieden ergeben. | ||
+ | |||
+ | Alternative JVM Lösungen: | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | |||
+ | |||
+ | ====Weitere Key Values Stores==== | ||
+ | |||
+ | * [[http:// | ||
+ | |||
+ | ===== Quellen Oracle NoSQL===== | ||
+ | |||
+ | === Oracle === | ||
+ | |||
+ | ==Oracle Deutschland== | ||
+ | |||
+ | * http:// | ||
+ | |||
+ | ==Oracle NoSQL== | ||
+ | |||
+ | * http:// | ||
+ | * http:// | ||
+ | * http:// | ||
+ | * http:// | ||
+ | * http:// | ||
+ | * http:// | ||
+ | |||
+ | ==Oracle Berkeley DB== | ||
+ | |||
+ | * http:// | ||
+ | * http:// | ||
+ | |||
+ | === Vorträge=== | ||
+ | |||
+ | * http:// | ||
+ | * http:// | ||
+ | |||
+ | |||
+ | === Externe Tools/ | ||
+ | |||
+ | ==Zorba== | ||
+ | * [[https:// | ||
nosql/oracle_nosql_database_einfuehrung.txt · Zuletzt geändert: 2016/07/07 20:43 von gpipperr