CUBRID
CUBRID (Open-Source-SQL-basiertes Relationales Datenbank-Management-System entwickelt von NHN Corporation für Webapplikationen. Der Name CUBRID ist dabei eine Kombination aus den englischen Wörtern für Würfel und Brücke. Der Würfel symbolisiert dabei den Sicherheitsaspekt von CUBRID, während die Brücke für eine Datenbrücke steht.
) ist einCUBRID
| |
---|---|
Basisdaten
| |
Entwickler | NHN Search Solutions |
Erscheinungsjahr | 20. November 2008 |
Aktuelle Version | 11.2.7[1] (13. September 2023) |
Betriebssystem | Linux, Windows |
Programmiersprache | C |
Kategorie | RDBMS |
Lizenz | GNU General Public License für die Server Engine und BSD-Lizenz für APIs und Benutzerschnittstellenwerkzeuge |
deutschsprachig | nein |
www.cubrid.org www.cubrid.com |
Lizenzpolitik
BearbeitenIm Gegensatz zu anderen Open-Source-DBMS existiert für CUBRID keine kommerzielle Softwarelizenz, sondern eine Open-Source-Lizenz. Es gibt dabei separate Lizenzen für die Server-Engine und die Schnittstelle. Die Engine unterliegt der Apache-Lizenz 2.0, die den Erwerb, die Verteilung und die Modifikation erlaubt. Die Programmierschnittstelle und die Grafische Benutzeroberfläche unterliegen der BSD-Lizenz. Das bedeutet, dass Programme, die binär verbreitet werden und auf CUBRID aufbauen nicht verpflichtet sind den Quellcode zu veröffentlichen. Der Grund für die Anwendung zweier verschiedener Lizenzen ist die Verminderung von Barrieren für ISVs bei der Entwicklung und Verbreitung von auf CUBRID basierende Anwendungen.[2]
Architektur
BearbeitenCUBRID ist ein objektrelationales Datenbanksystem, das sich der Drei-Schichten-Architektur zuordnen lässt.[3] Die drei Komponenten sind ein Datenbankserver, ein sogenannter Connection Broker und der CUBRID Manager.
Datenbankserver
BearbeitenDer Datenbankserver ist das Kernstück des CUBRID Datenbankmanagementsystems, da es für die Datenspeicherung und die Ausführung von Anweisungen zuständig ist. Der Server verarbeitet Abfragen, die von Anwender eingetragen werden und verwaltet die Objekte innerhalb der Datenbank. Durch Logging- und Lockingmechanismen können mehrere Benutzer die Datenbank gleichzeitig verwenden. Darüber hinaus werden Datenbank-Sicherungen unterstützt.
Connection Broker
BearbeitenDer Broker ist eine CUBRID-spezifische Middleware, die für die Übertragung der Daten von dem Datenbankserver zu externen Anwendungen zuständig ist. Die Hauptrollen dieser Dienstschicht sind:
- Verwaltung der Verbindungen von clientseitigen Anwendungen
- Zwischenspeicherung und Weiterleitung von Informationen
- Syntaxanalyse der Abfragen, Optimierungen und die Generierung von Ausführungsplänen
Da CUBRID nicht an dieselbe Maschine gebunden ist, wie der Datenbankserver, kann CUBRID Nutzen aus den Hardwareressourcen mehrerer Maschinen ziehen, während die Abfragen auf einer Datenbank durchgeführt werden.
CUBRID Manager
BearbeitenDer CUBRID Manager ist eine grafische Benutzeroberfläche, der die Datenbank und den Verbindungsbroker verwaltet. Er enthält einen Editor, der den Benutzer erlaubt SQL-Abfragen auf der Datenbank auszuführen. Die SQL-Syntax in CUBRID ist dabei sehr ähnlich zu MySQL und Oracle, da CUBRID den SQL-92-Standard einhält. Durch die 90-prozentige Deckung mit MySQL können die meisten SQL-Abfragen ohne Modifikationen ausgeführt werden.[4]
Funktionen
BearbeitenHigh Availability
BearbeitenCUBRID High Availability[5], die eingebaute Verfügbarkeitsfunktion ist eines der größten Vorteile von CUBRID. Es basiert auf Transaktionslogreplikation ermöglicht zuverlässige Failover und Failback Funktionen, basierend auf CUBRID Heartbeat.[4]
Datenbankfragmentierung
BearbeitenSeit CUBRID 8.4.3 zählt Datenbankfragmentierung zu einer in CUBRID eingebauten Funktion. Es erlaubt die Daten über mehrere Datenbankinstanzen zu verteilen. Die Fragmentierungsschnittstelle ist durch einen speziellen Broker namens CUBRID SHARD implementiert. Da die Kommunikation identisch funktioniert wie mit einem normalen Broker, kann dieselbe Programmierschnittstelle verwendet werden. Die Verteilungslogik dieser horizontalen Fragmente (auch Shards bezeichnet) liegt in CUBRID SHARD, das ermittelt, welches Fragment zum Speichern oder Laden von Daten verwendet werden soll.[6]
Performanz
BearbeitenAPI-Level Load Balancing
BearbeitenConnection Broker können vier verschiedene Modi zugeordnet werden (read-write, read-only, slave-only, preferred host read only). Die Liste der verschiedenen Hosts, die der Benutzer über die Verbindungs-URL zur Verfügung gestellt hat, kann dazu verwendet werden die Auslastung auszugleichen. Bei Einsatz dieses API-Level Load Balancing, wählt die Client-API zufällig einen der Verbindung-URLs aus, außer den zuletzt zum Verbinden genutzten. Falls der gewählte Server nicht zur Verfügung steht, wird die Wahl eines passenden Server fortgesetzt, bis alle Server als unerreichbar klassifiziert sind. In einem solchen Fall wird der Treiber eine Fehlermeldung ausgeben.[7]
Query Plan Caching
BearbeitenQuery Execution Plan Cache ist eine Implementierung am Broker, um Kompilierungsschritte bei häufig verwendeten Abfragen zu überspringen. Dieser Vorgang führt zu einer Verbesserung der Performanz, da ein gecachter Auswertungsplan zwischen Transaktionen, Sessions und sogar verschiedenen Clients nebenläufig geteilt werden kann.[8]
Einfache Entwicklung
BearbeitenZur Unterstützung bei der Entwicklung eines Projektes mit CUBRID werden viele Materialien von den Entwicklern bereitgestellt. Es existieren online und offline Anleitungen, API Dokumentationen, Freigabevermerke, Tutorials und Technologiebewertungen.[9]
Es gibt eine erweiterte Liste an Programmierschnittstellen für CUBRID.[10] Es existieren Treiber für PHP, PDO, Python, Perl, Ruby, ADO.NET, ODBC, OLE DB, JDBC, Node.js, NHibernate und das TCP/IP Kommunikationsprotokoll.
Versionen
BearbeitenVersion | Veröffentlichungsdatum | Veröffentlichkeitsdatum Betaversion | Zusätzliches |
---|---|---|---|
11.0 | Januar 2021 | Release Notes zu Version 11.0 | |
10.2 | Dezember 2019 | ||
10.1 | Juli 2017 | ||
9.3.0 | 5. Juni 2014 | ||
9.2.0 | 27. Oktober 2013 | ||
8.4.4 | 22. August 2013 | ||
9.1.0 | 15. März 2013 | ||
9.0 | Oktober 2012 | Internationalisierungsunterstützung, Funktionsindex, Filterindex, Index Skip Scan, MERGE Anweisung, Fensterfunktionen.[11] | |
8.4.3 | 20. November 2012 | Datenbankfragmentierung, API Level Load Balancing, integrierter Webmanager mit Monitoring Support[12] | |
8.4.1 | 24. Februar 2012 | 1. Februar 2012 | Performanzoptimierungen, SQL Erweiterungen, REGEXP Operator.[13] |
8.4.0 | 1. Juli 2011 | 12. Mai 2011 | High Availability Verbesserungen, CUBRID C API Verbesserung, Performanzoptimierungen, globaler Index[14][15] |
3.1 | 31. Dezember 2010 | 12. November 2010 | BLOB and CLOB support, High Availability Monitoring Support, Treiber (JDBC, ODBC und CUBRID C API) Verbesserungen[16] |
3.0 | 4. Oktober 2010 | 19. Juli 2010 | SQL Erweiterungen, High Availability Verbesserungen[17][18] |
2.2 | 30. April 2010 | High Availability Verbesserungen, CUBRID C API Verbesserungen, Performanzsteigerung[19] | |
2.1 | Dezember 2009 | ||
2.0 | August 2009 | ||
1.4 | März 2009 | ||
1.3 | Februar 2009 | ||
1.2 | Januar 2009 | ||
1.1 | November 2008 | CUBRID wird zum Open-Source-Projekt | |
1.0 | Oktober 2008 | Erste stabile Version |
Applikationen
BearbeitenFolgende Applikationen und Webseiten bauen auf CUBRID auf:
- jOOQ[20]
- SOFA Statistics[21]
- SIDU[22]
- ART[23]
- Scriptella[24]
- JWhoisServer[25]
- RedBeanPHP[26]
Siehe auch
BearbeitenWeblinks
BearbeitenEinzelnachweise
Bearbeiten- ↑ CUBRID 11.2 Patch 7.
- ↑ CUBRID License. Archiviert vom am 16. Januar 2013; abgerufen am 13. Juni 2014.
- ↑ CUBRID Architecture. In: CUBRID. Archiviert vom am 26. Juni 2014; abgerufen am 13. Juni 2014.
- ↑ a b CUBRID Wichtige Fakten über CUBRID. Archiviert vom am 26. Juni 2014; abgerufen am 13. Juni 2014.
- ↑ CUBRID HA. Archiviert vom am 17. Oktober 2014; abgerufen am 13. Juni 2014.
- ↑ CUBRID Datenbankfragmentierung. Abgerufen am 13. Juni 2014.
- ↑ CUBRID 8.4.3 API level Load Balancing. In: CUBRID Blog. 20. November 2012, archiviert vom am 22. Juni 2014; abgerufen am 13. Juni 2014.
- ↑ Shared Query Plan Caching in CUBRID. Archiviert vom am 22. Juni 2014; abgerufen am 13. Juni 2014.
- ↑ CUBRID Funktionen. Archiviert vom am 27. August 2010; abgerufen am 13. Juni 2014.
- ↑ CUBRID Wiki APIs. Archiviert vom am 26. Juni 2014; abgerufen am 13. Juni 2014.
- ↑ New CUBRID 9.0.0. CUBRID Official Blog, 30. Oktober 2012, archiviert vom am 5. November 2012; abgerufen am 8. November 2012.
- ↑ CUBRID 8.4.3 with DB Sharding and API level Load Balancing is here. CUBRID Official Blog, 20. November 2012, archiviert vom am 22. Juni 2014; abgerufen am 25. Dezember 2012.
- ↑ New CUBRID 8.4.1 is 70 % faster. CUBRID Official Blog, 1. Februar 2012, archiviert vom am 4. Februar 2012; abgerufen am 2. Februar 2012.
- ↑ CUBRID 8.4.0 has arrived w/ x2 faster database engine! CUBRID Official Blog, 13. Mai 2011, archiviert vom am 20. Mai 2011; abgerufen am 17. Mai 2011.
- ↑ CUBRID 8.4.0 GA is now available for download. CUBRID Official Blog, 4. Juli 2011, archiviert vom am 25. August 2011; abgerufen am 14. Juli 2011.
- ↑ CUBRID 3.1 Stable is now available! CUBRID Official Blog, 31. Dezember 2010, archiviert vom am 7. Januar 2011; abgerufen am 3. Januar 2011.
- ↑ CUBRID 3.0 Stable has arrived! CUBRID Official Blog, 4. Oktober 2010, archiviert vom am 8. Oktober 2010; abgerufen am 5. Oktober 2010.
- ↑ New CUBRID 2008 R3.0 Beta has been released. CUBRID Official Blog, 20. Juli 2010, archiviert vom am 27. August 2011; abgerufen am 21. Juli 2010.
- ↑ New Version Release – CUBRID 2008 R2.2. CUBRID Official Blog, archiviert vom am 25. Juli 2011; abgerufen am 7. Mai 2010.
- ↑ How to simulate MySQL INSERT statement extensions. Lukas Eder, 15. Mai 2012, abgerufen am 4. Februar 2013.
- ↑ SOFA Statistics. sofastatistics.com, 20. November 2012, abgerufen am 17. November 2010.
- ↑ SIDU Incredibly Simple Intuitive Web Based SQL Client. sidu.sourceforge.net, 25. Mai 2012, archiviert vom am 26. Januar 2013; abgerufen am 4. Februar 2013.
- ↑ ART Simple Yet Effective Open Source Reporting Tool. art.sourceforge.net, 10. Juni 2012, abgerufen am 4. Februar 2013.
- ↑ Package scriptella.driver.cubrid. Abgerufen am 11. Februar 2013.
- ↑ Run Your Own Whois Server With JWhoisServer. Klaus Zerwes, 6. Juli 2012, archiviert vom am 17. Februar 2013; abgerufen am 4. Februar 2013.
- ↑ RedBeanPHP Super Easy to Use PHP ORM. redbeanphp.com, 8. Juli 2012, archiviert vom am 29. März 2013; abgerufen am 4. Februar 2013.