GlobalObjects
GlobalObjects ist eine C++ objektorientierte Datenbank (OODB, ODBMS, NoSQL) um C++ Objekte persisten zu halten. Es ist Single- und Multiuserbetrieb über einen Server möglich.
Es können C++ Objekte gespeichert, geladen und auch wieder gelöscht werden. Dieses kann auch in Transaktionen stattfinden, welche bestätigt (Aktionen werden ausgeführt) oder abgebrochen werden können (Aktionen werden nicht ausgeführt). Das ACID-Prinzips wird konsequent eingehalten.
GlobalObjects versteht C++-Klassendeklarationen mit Unterstützung für Kapselung, Vererbung, Polymorphismus, Objektidentität und Objektreferenzen.
Es existiert ein umfangreicher Sperrmechanismus um gespeicherte Objekte zu schützen.
Um Änderungen am Objektbestand "mitzubekommen", kann ein einfaches Benachrichtigungssystem, realisiert durch Übergabe einer Callback-Funktion, genutzt werden.
Das Hauptaugenmerk liegt im einfachen Abspeichern und Laden von auch komplexen C++ Objekten mit deren Referenzen und der Aktualisierung von geladenen Objekten im Speicher, wenn diese in der Datenbank geändert werden.
Wer die Objektdatenbank FastObjects kennt (ursprünglich entwickelt von der Firma Poet), wird viele Konzepte dieses Systems bei GlobalObjects wiederfinden.
GlobalObjects ist daher keine geschwindigkeitsoptimierte Datenbank. Jede Klasse besitzt ihre Tabelle (eine einfache Textdatei) mit mindestens einem Objekt-ID-Index. Objekte einer Klasse mit vielen Superklassen werden durch Einlesen der jeweiligen Datensätze „zusammengebaut“ bzw. beim Speichern „zerlegt“. Komplexe Objekte mit Referenzen auf andere Objekte, die ebenfalls gespeichert oder gelöscht werden müssen, können sich daher negativ auf das Timing auswirken. Indizes werden aus dem Dateisystem in Objekte vom Typ std::map<T> eingelesen bzw. beim Schließen der Anwendung wieder ins Dateisystem zurückgeschrieben.
Die Bezeichnung GlobalObjects wurde gewählt, weil es den Entwickler dabei unterstützt, Objekte auf mehreren Clients automatisch zu synchronisieren. Die mit GlobalObjects entwickelte Applikation funktioniert dennoch ohne Änderung auch im Einzelplatzbetrieb.
Die aktuelle Version GlobalObjects 1.1.2 ist in der Programmiersprache C++ realisiert und wurde bislang kompiliert und getestet mit:
- Microsoft Visual Studio 2010 C++ 98 (32 Bit)
- Microsoft Visual Studio 2015 C++ 98 (32 und 64 Bit)
- Microsoft Visual Studio 2017 C++ 14/C++ 17 (32 und 64 Bit)
- Microsoft Visual Studio 2019 C++ 14/C++ 17/C++ 20 (32 und 64 Bit)
- Microsoft Visual Studio 2022 C++ 14/C++ 17/C++ 20 (32 und 64 Bit)
- MinGW Version 5.3.0 (32 Bit)
- MinGW Version 7.3.0 (32 und 64 Bit)
- MinGW Version 8.x (Fehler beim kompilieren in "filesystem", siehe hier)
- MinGW Version 9.0.0 (64 Bit)
- MinGW Version 11.2.20 (64 bit)
- gcc 4.8.3 (32 Bit)
- gcc 5.4.0 (32 Bit)
- gcc 7.4.40 (64 Bit)
- gcc 9.3.30 (64 Bit)
- gcc 11.3.30 (64 Bit)
- clang 6.0.0 (64 Bit)
- clang 10.0.0 (64 bit)
- clang 14.0.0 (64 bit)
Windows
Linux
Man kann z.B. einen GloServer auf irgendein unterstütztes Betriebssystem installieren und auf diesen von allen unterstützten Betriebssystemen zugreifen.
Die GUI-Tools wurden mit der C++ Bibliothek Qt realisiert.
GlobalObjects Anleitungen (online)GlobalObjects Videos (online)
Download GlobalObjects