Moin,
ich hab eine etwas ungewöhnliche Frage und zwar ist es möglich die Shared Memory Aufrufe auf irgendeine Art und Weise abzustellen bzw. zu umgehen?
ich antworte mal mit einer Frage: warum?
Hi @akretschmer ,
ich versuche Postgres in Intel SGX zu enklavieren. Da diese Technologie kein Shared Memory unterstützt, muss ich einen Weg finden Postgres ohne die Shared Memory aufrufe zum laufen zu bekommen.
Ich bin auf Ubuntu 20.04 und hab Postgres aus dem aktuellen github Repo gebaut.
Sollte es keine einfache Option geben, könntest du mir einen Tipp geben, an welchen Stellen ich im Source Code Anpassungen machen muss, um mein Vorhaben zu realisieren?
sorry, no. Ich bin da raus …
Vorweg: Das ist mein persönliche Meinung und ich bin kein Spezialist bei diesem Thema. Ich könnte mich also auch irren.
Ich kann mir nicht vorstellen, das dies funktioniert. Die laufende PostgreSQL Instanz sind mehrere Prozesse. Bspw. lädt der Background-Prozess einer DB-Session Daten in den Speicher (Shared Memory) und manipuliert diese. Auf Platte schreibt diese aber später der Background Writer Prozess. Der auf den selben Shared Memory zugreift und die Daten auf Platte wegschreibt.
Ohne Shared Memory wird diese Interprocess Comunication nicht funktionieren. Daher das System wird nicht arbeiten.
Und nochmal: Warum?
Ich habe auch keine Ahnung wie und ob, aber mal ein paar Gedanken.
Erstens kannst Du Dich vielleicht an irgendwelchen Plattformen orientieren, die etwas kleiner sind. Ich habe keinen Überblick, wo pg überall kompiliert werden kann, aber ich sage mal sowas wie raspberry oder kleiner, nur 1 CPU usw.
Die Idee dahinter dürfte klar sein, Du näherst Dich damit vermutlich Deiner Zielarchitektur.
Dann noch mal zu dem “warum”. Ich bin ein Postgres Fan aber welches Feature einer SQL DB brauchst Du da genau? Gibt es das auch woanders? Brauchst Du überhaupt SQL? Eine Möglichkeit der Näherung an Dein Zielsystem wäre nicht nur ein möglichst kleines Hardware Pendant zum Vergleich zu nehmen, auch eine möglichst “kleine” DB, z.B. sqlite. Und damit zum Punkt: klassische RDBMS bieten oftmals unbemerkt einen Haufen Zeug (Features), die oft nicht bewusst sind. ACID, Multiuser, … ? Brauchst Du das alles? Oder geht es am Ende nur um eine kleine SQL Engine, die nicht mal Multiuser / Concurrency, … benötigt?
Denk mal drüber nach.
Dieses Thema wurde automatisch 60 Tage nach der letzten Antwort geschlossen. Es sind keine neuen Antworten mehr erlaubt.