C++ OODB



  • Hallo,
    ich habe früher gerne mit C++ und der objektorientierten Datenbank POET (später umbenannt in FastObjects) gearbeitet. Nun war diese OODB nicht so einfach zu erstehen (sehr teuer und POET gibt es auch nicht mehr).

    Ich habe mich hingesetzt und eine ähnliche OODB für C++ neu entwickelt; ich habe sie GlobalObjects genannt und diese als open source veröffentlicht .

    GlobalObjects ist ein System um C++ Objekte einfach speichern zu können. Es ist Single- und Multiuserbetrieb (über einen Server) möglich.

    Mittels GlobalObjects können auch komplexe Objekte einfachst gespeichert, geladen und auch wieder gelöscht werden. Dieses kann auch in Transaktionen stattfinden, welche bestätigt (Aktionen werden ausgeführt) oder abgebrochen (Aktionen werden nicht ausgeführt) werden können. Es existiert ein umfangreicher Sperrmechanismus um gespeicherte Objekte zu schützen. Um Änderungen am Objektbestand "mitzubekommen", kann ein einfaches Benachrichtigungssystem genutzt werden.

    GlobalObjects wurde bislang mit Microsoft Visual C++ 2010, Microsoft Visual C++ 2015 (32-Bit),Microsoft Visual C++ 2017 (32-Bit), und MinGW 32 Version 5.3.0 unter MS-Windows kompiliert und getestet. Erste Versuche mit gcc 5.4.0 unter LINUX (Mint 18.1 32-Bit) verlaufen sehr vielversprechend.
    Als nächstes steht die Umstellung auf 64-Bit und von Pthread auf std::thread an.

    Nun mein Anliegen:
    Hat jemand Lust sich das mal anzusehen und ggf. Kritik zu üben, evtl. sogar mitzugestalten?

    Für Interessierte habe ich eine Seite ins Netz gestellt ...

    EDIT: Habe die vorher hier stehenden URLs erstmal wegen Überarbeiten entfernt!
    EDIT 23.11.2021: Ist jetzt überarbeitet wieder hier verfügbar.

    Helmut Jakoby
    PS. Für Fragen stehe ich gerne zur Verfügung.



  • Ich hab mir das ganz oberflächlich angeschaut und geb nur eine kaum begründete Meinung 😉
    Sorry, macht aber keinen guten Eindruck auf mich. Sieht alles sehr umständlich und altertümlich aus. Das will man eigentlich nicht haben. Weder eine Datenbank in der Form (wenn schon, dann eine moderne NoSql Datenbank und nicht etwas selbstgebasteltes, was nichts kann), noch will man heutzutage solchen Code und solche Abhängigkeiten sehen. Selbst wenn man sowas ähnliches haben wollen würde, könnte man das mit modernen C++ Mitteln auf jeden Fall anders und eleganter lösen.



  • Ich hab mir nur mal kurz das "Los geht’s..." angesehen, und muss sagen, das wirkt ziemlich abschreckend. Führt bei mir nicht zu dem Wunsch mir die Sache näher anzusehen.

    Es mag sein dass was du da erstellt hast in bestimmten Projekten sehr nützlich sein kann, aber ich denke dein Zielpublikum wird sich ziemlich auf Leute beschränken die bereits mit FastObjects gearbeitet haben und das gut fanden.

    Aber bitte nicht falsch verstehen. Du hast da definitiv viel Zeit und Arbeit reingesteckt, und das respektiere ich zutiefst. Was dabei rausgekommen ist ist aber auf den ersten Blick nichts mit dem ich etwas anfangen könnte.



  • Hallo Mechanics, hallo hustebaer,

    danke! das ihr euch das angesehen habt.

    Werde das alles wohl noch mal überarbeiten.

    Das Kapitel "Los geht’s..." ist mit einigem Abstand wirklich nicht überzeugend geschrieben. Viel zu komplex und wirr. Bin wohl auch zu tief drin um einen klaren Blick zu haben (das was ich da "zu Fuß" beschrieben habe will auch keiner machen; mach ich ja selbst nicht mehr ;-).

    Ich nehme in ca. 1 Std. den Auftritt aus dem Netz und stelle ihn nach Überarbeitung wieder rein.



  • Falls hier nochmal reinschaut, siehe hier.



  • Habs gestern gesehen, das schaut schon besser aus. Auch der Designer an sich schaut schon recht profesionell aus. Genau hab ich mir das nicht angeschaut, aber den "hässlichen" Code hast du wohl hinter einem Codegenerator versteckt.
    Mich reizt es aber immer noch nicht, mich intensiver damit zu beschäftigen. Auch, dass ich eine zusätzliche Anwendung brauche, die für mich den Code generiert, finde ich suboptimal, auch wenn sie einen echt guten Eindruck macht.
    Wenn, würde ich eher eine IDL Datei und ein Kommandozeilentool bevorzugen, so in etwa wie bei protobuf. Allerdings finde ich auch das nicht toll, versteh mich nicht falsch 😉
    Etwas wirklich "cooles" hab ich in C++ einfach noch nicht gesehen.



  • Hallo Mechanics,
    ich hab mich mit dem 'verstecken des hässlichen? Codes' an Qt orientiert (siehe moc). Aber wie soll man solche Problematiken angehen? Kein Tool, aber selber implementieren ist auch nicht schick!

    Ich bin da etwas leidenschaftsloser und benutze ja auch eine IDE mit all ihren Hilfs-Tools. Jedenfalls schreibe ich schon seit Uhrzeiten keine MAKE mehr selbst.

    Schönes Wochende noch...



  • @Helmut-Jakoby sagte in C++ OODB:

    aber selber implementieren ist auch nicht schick!

    Hast du doch gemacht 🙂 Und hast es anscheinend auch ganz gut gemacht, an deiner Stelle würde ich das auch benutzen.

    Auf die Frage, wie man sowas angehen soll, habe ich natürlich auch keine Antwort. Wir haben bei uns im Code natürlich auch schon zig verschiedene kleine Lösungen, um hässlichen Datenbank Boilerplate zu verstecken (zum Glück ist das bei uns nicht so zentral).
    Hoffentlich wird das mit C++20 und static reflection deutlich komfortabler.


Anmelden zum Antworten