OrientDB: Unterschied zwischen den Versionen
Ntr (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „'''OrientDB''' ist eine NoSQL-Datenbank, da sie dokumentorientiert funktioniert. Die Datenbank wurde in Java programmiert“) |
Sn (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
(37 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
[[File:OrientDB Logo 2014 280x177.jpg|thumb|OrientDB Logo 2014 280x177]] | |||
Die | [[OrientDB]] ist [[Open Source]] und gehört zur 2. Generation von [[NoSQL]]-[[Datenbank|Datenbanken]]. Das Datenbanksystem kombiniert mehrere Datenmodelle, einschließlich [[Graph|Graphen]]-, Dokumenten-, Objekt- und [[Schlüssel-Wert-Datenstruktur|Key-Value]]-Modelle und ist somit ein Multi-Model DBMS. Dadurch wird eine umfassende Datenverwaltung geboten und es kommt mehr Funktionalität sowie Flexibilität. | ||
OrientDB wurde in [[Java (Programmiersprache)|Java]] geschrieben und läuft somit auf jedem System, welches Java-Anwendungen unterstützt. | |||
Dazu ist OrientDB leistungsstark genug, um ein operatives [[DBMS]] zu ersetzen, da es vor allem durch sehr schnelle Lese- sowie Schreibgeschwindigkeiten heraussticht, welche bis zu 120.000 Datensätze pro Sekunde erreichen können. Dabei wird diese Geschwindigkeit nicht beeinträchtigt durch die Datenbankgröße. | |||
== Anwendung == | |||
Der Anwendungsbereich von OrientDB ist durch die Flexibilität genauso divers. | |||
=== Implementierung === | |||
{{Veraltet|2=Informationen in diesem Absatz sind zu Version 2.2.x und veraltet!|seit=2018}} | |||
Um OrientDB zu implementieren, werden eine Reihe von bekannten und gängigen [[Programmiersprache|Programmiersprachen]] verwendet. Darunter sind zum Beispiel: | |||
* [[Java (Programmiersprache)|Java]] | |||
* [[Python (Programmiersprache)|Python]] | |||
* [[JavaScript]] / [[Node.js|NodeJS]] | |||
* [[PHP]] | |||
* [[Ruby]] | |||
Bei der Implementierung lässt sich außerdem aus drei verschiedenen Arten von [[Treiber]]n wählen, welche je nach Sprache unterschiedlich nutzbar sind: | |||
* Native Binary Remote Welcher direkt über die [[TCP]]/[[IP]] Verbindung via eines Binär Protokolls arbeitet | |||
* HTTP [[REST]]/JSON Welcher direkt über die TCP/IP Verbindung via eines [[HTTP]]-Protokolls arbeitet | |||
* Java-wrapped Eine Verbindung, welche mit natürlichen Java Treibern arbeitet. Das ist sehr einfach die in der [[JVM]] laufen, wie z.B.: [[JRuby]] oder [[Scala]] | |||
Weitere Informationen zu Sprachen und Treibern ist hier zu finden: [https://orientdb.com/docs/2.2.x/Programming-Language-Bindings.html OrientDB.com] | |||
=== Datenstruktur === | |||
JSON Dateien, Clusters, Classes, Vertices, Edge | |||
=== Programmierung === | |||
==== SQL ==== | |||
Damit OrientDB für viele Nutzer einfach zu verstehen ist, wurde ein Dialekt zur [[SQL]]-Syntax entworfen und verwendet. Dafür wurde sich entschieden, da SQL eine standardisierte Sprache ist, heutzutage allgegenwärtig in der Datenbankwelt ist und somit von vielen schon verstanden wird. Die SQL-Syntax wurde erweitert mit Funktionen, damit komplexere Graphen-Konzepte unterstützt werden, wie Bäume und Graphen. | |||
===== SELECT ===== | |||
<syntaxhighlight lang="sql" line="1"> | |||
SELECT FROM OUser | |||
</syntaxhighlight> | |||
===== WHERE ===== | |||
<syntaxhighlight lang="sql" line="1"> | |||
SELECT FROM OUser WHERE name LIKE 'l%' | |||
</syntaxhighlight> | |||
===== ORDER BY ===== | |||
<syntaxhighlight lang="sql" line="1"> | |||
SELECT FROM Employee WHERE city='Rome' ORDER BY surname ASC, name ASC | |||
</syntaxhighlight> | |||
===== GROUP BY ===== | |||
<syntaxhighlight lang="sql" line="1"> | |||
SELECT SUM(salary) FROM Employee WHERE age < 40 GROUP BY job | |||
</syntaxhighlight> | |||
===== LIMIT ===== | |||
<syntaxhighlight lang="sql" line="1"> | |||
SELECT FROM Employee WHERE gender='male' LIMIT 20 | |||
</syntaxhighlight> | |||
===== SKIP ===== | |||
<syntaxhighlight lang="sql" line="1"> | |||
SELECT FROM Employee WHERE gender='male' LIMIT 20 | |||
SELECT FROM Employee WHERE gender='male' SKIP 20 LIMIT 20 | |||
SELECT FROM Employee WHERE gender='male' SKIP 40 LIMIT 20 | |||
</syntaxhighlight> | |||
===== INSERT ===== | |||
Standard ANSI-92 Syntax: | |||
<syntaxhighlight lang="sql" line="1"> | |||
INSERT INTO Employee(name, surname, gender) VALUES('Jay', 'Miner', 'M') | |||
</syntaxhighlight> | |||
Vereinfachte ANSI-92 Syntax: | |||
<syntaxhighlight lang="sql" line="1"> | |||
INSERT INTO Employee SET name='Jay', surname='Miner', gender='M' | |||
</syntaxhighlight> | |||
JSON Syntax: | |||
<syntaxhighlight lang="sql" line="1"> | |||
INSERT INTO Employee CONTENT {name : 'Jay', surname : 'Miner', gender : 'M'} | |||
</syntaxhighlight> | |||
===== UPDATE ===== | |||
Standard ANSI-92 Syntax: | |||
<syntaxhighlight lang="sql" line="1"> | |||
UPDATE Employee SET local=TRUE WHERE city='London' | |||
</syntaxhighlight> | |||
JSON Syntax, benutzt mit MERGE Keyword | |||
<syntaxhighlight lang="sql" line="1"> | |||
UPDATE Employee SET local=TRUE WHERE city='London' | |||
</syntaxhighlight> | |||
===== DELETE ===== | |||
<syntaxhighlight lang="sql" line="1"> | |||
DELETE FROM Employee WHERE city <> 'London' | |||
</syntaxhighlight><!-- Notizen | |||
- No more Joins: relationships are physical links to the records. - Traverses parts of or entire trees and graphs of records in milliseconds. - Better RAM use. - OrientDB can be distributed across different servers and used in different ways to achieve the maximum of performance, scalability and robustness. --> | |||
== Weblinks == | |||
* https://de.wikipedia.org/wiki/OrientDB 🇩🇪 | |||
* https://en.wikipedia.org/wiki/OrientDB 🇬🇧 | |||
* https://orientdb.com/docs/2.2.x/Programming-Language-Bindings.html 🇬🇧 | |||
* https://orientdb.org/docs/3.0.x/misc/Overview.html 🇬🇧 | |||
* https://orientdb.com/docs/last/gettingstarted/Tutorial-SQL.html 🇬🇧 | |||
* https://orientdb.org/docs/3.0.x/distributed/Distributed-Architecture.html 🇬🇧 | |||
{{Navigationsleiste Datenbanken}} | |||
[[Kategorie:Datenbanken]] |
Aktuelle Version vom 29. September 2023, 14:07 Uhr
OrientDB ist Open Source und gehört zur 2. Generation von NoSQL-Datenbanken. Das Datenbanksystem kombiniert mehrere Datenmodelle, einschließlich Graphen-, Dokumenten-, Objekt- und Key-Value-Modelle und ist somit ein Multi-Model DBMS. Dadurch wird eine umfassende Datenverwaltung geboten und es kommt mehr Funktionalität sowie Flexibilität.
OrientDB wurde in Java geschrieben und läuft somit auf jedem System, welches Java-Anwendungen unterstützt.
Dazu ist OrientDB leistungsstark genug, um ein operatives DBMS zu ersetzen, da es vor allem durch sehr schnelle Lese- sowie Schreibgeschwindigkeiten heraussticht, welche bis zu 120.000 Datensätze pro Sekunde erreichen können. Dabei wird diese Geschwindigkeit nicht beeinträchtigt durch die Datenbankgröße.
Anwendung
Der Anwendungsbereich von OrientDB ist durch die Flexibilität genauso divers.
Implementierung
Folgende Teile dieses Artikels scheinen seit 2018 nicht mehr aktuell zu sein: Informationen in diesem Absatz sind zu Version 2.2.x und veraltet!
Bitte hilf uns dabei, die fehlenden Informationen zu recherchieren und einzufügen.
Um OrientDB zu implementieren, werden eine Reihe von bekannten und gängigen Programmiersprachen verwendet. Darunter sind zum Beispiel:
Bei der Implementierung lässt sich außerdem aus drei verschiedenen Arten von Treibern wählen, welche je nach Sprache unterschiedlich nutzbar sind:
- Java-wrapped Eine Verbindung, welche mit natürlichen Java Treibern arbeitet. Das ist sehr einfach die in der JVM laufen, wie z.B.: JRuby oder Scala
Weitere Informationen zu Sprachen und Treibern ist hier zu finden: OrientDB.com
Datenstruktur
JSON Dateien, Clusters, Classes, Vertices, Edge
Programmierung
SQL
Damit OrientDB für viele Nutzer einfach zu verstehen ist, wurde ein Dialekt zur SQL-Syntax entworfen und verwendet. Dafür wurde sich entschieden, da SQL eine standardisierte Sprache ist, heutzutage allgegenwärtig in der Datenbankwelt ist und somit von vielen schon verstanden wird. Die SQL-Syntax wurde erweitert mit Funktionen, damit komplexere Graphen-Konzepte unterstützt werden, wie Bäume und Graphen.
SELECT
SELECT FROM OUser
WHERE
SELECT FROM OUser WHERE name LIKE 'l%'
ORDER BY
SELECT FROM Employee WHERE city='Rome' ORDER BY surname ASC, name ASC
GROUP BY
SELECT SUM(salary) FROM Employee WHERE age < 40 GROUP BY job
LIMIT
SELECT FROM Employee WHERE gender='male' LIMIT 20
SKIP
SELECT FROM Employee WHERE gender='male' LIMIT 20
SELECT FROM Employee WHERE gender='male' SKIP 20 LIMIT 20
SELECT FROM Employee WHERE gender='male' SKIP 40 LIMIT 20
INSERT
Standard ANSI-92 Syntax:
INSERT INTO Employee(name, surname, gender) VALUES('Jay', 'Miner', 'M')
Vereinfachte ANSI-92 Syntax:
INSERT INTO Employee SET name='Jay', surname='Miner', gender='M'
JSON Syntax:
INSERT INTO Employee CONTENT {name : 'Jay', surname : 'Miner', gender : 'M'}
UPDATE
Standard ANSI-92 Syntax:
UPDATE Employee SET local=TRUE WHERE city='London'
JSON Syntax, benutzt mit MERGE Keyword
UPDATE Employee SET local=TRUE WHERE city='London'
DELETE
DELETE FROM Employee WHERE city <> 'London'
Weblinks
- https://de.wikipedia.org/wiki/OrientDB 🇩🇪
- https://en.wikipedia.org/wiki/OrientDB 🇬🇧
- https://orientdb.com/docs/2.2.x/Programming-Language-Bindings.html 🇬🇧
- https://orientdb.org/docs/3.0.x/misc/Overview.html 🇬🇧
- https://orientdb.com/docs/last/gettingstarted/Tutorial-SQL.html 🇬🇧
- https://orientdb.org/docs/3.0.x/distributed/Distributed-Architecture.html 🇬🇧