![Seite ist in deutsch](img/Flagge-Deutschland.png)
![Page in English available](img/Flag-GreatBritain.png)
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.
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.0 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
Lizenzen
Für GlobalObjects wurde ein duales Lizenzmodel gewählt.
Open Source Lizenz
GlobalObjects ist freie Software.
GNU Affero General Public Lizenz Nutzung:
Sie können das Programm unter den Bedingungen der GNU Affero General Public License, wie von der Free Software Foundation veröffentlicht, weitergeben und/oder modifizieren, entweder gemäß Version 3 der Lizenz oder (nach Belieben) jeder späteren Version.
Details finden Sie in der GNU Affero General Public License:
https://www.gnu.org/licenses/agpl-3.0
Die Veröffentlichung dieses Programms erfolgt in der Hoffnung, daß es Ihnen von Nutzen sein wird, aber OHNE IRGENDEINE GARANTIE, sogar ohne die implizite Garantie der MARKTREIFE oder der VERWENDBARKEIT FÜR EINEN BESTIMMTEN ZWECK.
Kommerzielle Lizenz
Soll GlobalObjects in proprietärer Software eingesetzt werden, ist eine kommerzielle Lizenz erhältlich.