OrientDB: Unterschied zwischen den Versionen

Aus KGS-Wiki
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
(18 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
== Orient DB ==
[[File:OrientDB Logo 2014 280x177.jpg|thumb|OrientDB Logo 2014 280x177]]
'''OrientDB''' ist [[Open Source]] und gehört zur 2. Generation von [[NoSQL]]-[[Datenbank|Datenbanken]]. Das Datenbanksystem kombiniert mehrere Datenmodelle, einschließlich Graphen-, Dokumenten-, Objekt- und Key-Value-Modelle, ist also ein [[Multi-Model]] [[DBMS]]. Dadurch wird eine umfassende Datenverwaltung geboten und es kommt mehr Funktionalität sowie Flexibilität. Dazu ist OrientDB leistungsstark genug, um ein operatives [[DBMS]] zu ersetzen. OrientDB wurde in [[Java]] geschrieben und läuft somit auf jedem System, welches Java Anwendungen unterstützt. OrientDB sticht vor allem durch sehr schnelle Lese- sowie Schreibgeschwindigkeiten heraus, welche bis zu 120.000 Datensätze pro Sekunde erreichen. Dabei wird diese Geschwindigkeit nicht beeinträchtigt durch die Datenbankgröße.
[[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.  


== Datenstruktur ==
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.


== Code ==
=== Implementierung ===
=== Implementierung ===
Um OrientDB zu implementieren, werden eine Reihe von bekannten und gängigen [[Programmiersprachen]] verwendet. Darunter sind zum Beispiel:
{{Veraltet|2=Informationen in diesem Absatz sind zu Version 2.2.x und veraltet!|seit=2018}}
* Java
Um OrientDB zu implementieren, werden eine Reihe von bekannten und gängigen [[Programmiersprache|Programmiersprachen]] verwendet. Darunter sind zum Beispiel:
* Python
* [[Java (Programmiersprache)|Java]]
* JS / NodeJS
* [[Python (Programmiersprache)|Python]]
* PHP
* [[JavaScript]] / [[Node.js|NodeJS]]
* Ruby
* [[PHP]]
Und noch eine einige [https://orientdb.com/docs/2.2.x/Programming-Language-Bindings.html weitere].
* [[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>


Bei der Implementierung lässt sich außerdem aus drei verschiedenen Arten von [[Treibern]] wählen, welche je nach Sprache unterschiedlich nutzbar sind:
===== DELETE =====
* Native Binary Remote
<syntaxhighlight lang="sql" line="1">
Welcher direkt über die TCP/IP Verbindung via eines Binär Protokolls arbeitet
DELETE FROM Employee WHERE city <> 'London'
* HTTP REST/JSON
</syntaxhighlight><!-- Notizen
Welcher direkt über die TCP/IP Verbindung via eines HTTP Protokolls arbeitet
* Java-wrapped
Als eine Verbindung
as a layer that links in some way the native Java driver. This is pretty easy for languages that run into the JVM like Scala, Groovy and JRuby


<code>Test code</code>
- 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. -->
<syntaxhighlight>Test syntaxhighlight</syntaxhighlight>


==Notizen==
== Weblinks ==
- No more Joins: relationships are physical links to the records.
* https://de.wikipedia.org/wiki/OrientDB 🇩🇪
- Traverses parts of or entire trees and graphs of records in milliseconds.
* https://en.wikipedia.org/wiki/OrientDB 🇬🇧
- Better RAM use.
* 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}}
{{Navigationsleiste Datenbanken}}
[[Kategorie:Datenbanken]]

Aktuelle Version vom 29. September 2023, 14:07 Uhr

OrientDB Logo 2014 280x177

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

🕰
Veraltet

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:

  • 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: 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