/dev/nullverwirft jede Eingabe sofort, wird hier aber satirisch als System beschrieben, das die ACID-Eigenschaften von Transaktionen perfekt erfüllt- In Bezug auf Atomarität (Atomicity) werden Daten nie teilweise geschrieben, sondern verschwinden entweder vollständig oder werden gar nicht geschrieben
- Bei der Konsistenz (Consistency) bleibt der Zustand stets leer, sodass die Invarianten des Systems nie verletzt werden
- Bei der Isolation (Isolation) können mehrere Prozesse gleichzeitig darauf zugreifen, ohne sich gegenseitig zu beeinflussen, und weil nichts gespeichert wird, entstehen auch keine Konflikte
- Die Dauerhaftigkeit (Durability) ist insofern perfekt, als auch nach einem Neustart weiterhin „nichts“ erhalten bleibt; einzig die Speicherkapazität von 0 Byte wird humorvoll als Grenze erwähnt
Analyse der ACID-Eigenschaften von /dev/null
/dev/nullist eine spezielle Datei, die jede Eingabe entgegennimmt und sofort verwirft, und dient auf Linux- und Unix-artigen Systemen häufig als Datensenke (sink)- Der Autor vergleicht sie scherzhaft mit einer „Web-Scale“-Datenbank und wendet die zentralen ACID-Eigenschaften einer Datenbank satirisch darauf an
- Dadurch zeigt
/dev/nullein Höchstmaß an Stabilität, bei gleichzeitiger extremer Einfachheit, da es überhaupt keine Daten speichert
Atomicity — Atomarität
- Wenn Daten nach
/dev/nullgeschrieben werden, verschwinden sie entweder vollständig oder werden gar nicht geschrieben; teilweise Schreibvorgänge gibt es nicht- Das entspricht exakt dem „all or nothing“-Prinzip von Transaktionen
- Damit garantiert
/dev/nulleine vollständige Atomarität ohne partielle Fehler oder unvollständige Zustandsübergänge
Consistency — Konsistenz
/dev/nullbleibt immer im leeren Zustand, und keine Eingabe kann diese Invariante verletzen- Selbst wenn Daten geschrieben werden, werden sie sofort verworfen, sodass das System stets in einen gültigen Zustand übergeht
- Dadurch bleibt die Invariante, dass „die Datei nichts enthält“, jederzeit wahr
Isolation — Isolation
- Auch wenn mehrere Prozesse gleichzeitig Daten nach
/dev/nullschreiben, entstehen weder Konflikte noch Interferenzen- Da nichts gespeichert wird, gibt es keinerlei Auswirkungen zwischen Transaktionen
- Das ist eine ideale Umsetzung von Isolation, die selbst in einer perfekten Parallelverarbeitungsumgebung konsistente Ergebnisse garantiert
Durability — Dauerhaftigkeit
/dev/nullcommittet Daten gewissermaßen „dauerhaft in den Zustand des Nichts“- Selbst bei einem Systemabsturz oder nach einem Neustart ändert sich der Zustand von
/dev/nullnicht - Anders gesagt: Die Dauerhaftigkeit des Nichts ist perfekt gewährleistet
- Selbst bei einem Systemabsturz oder nach einem Neustart ändert sich der Zustand von
Grenzen und humorvolles Fazit
- Als einziges Problem von
/dev/nullnennt der Autor den „Speicherplatz von 0 Byte“- Wer mehr Platz braucht, solle sich an das „Enterprise-Vertriebsteam“ wenden (also faktisch an den Autor selbst), heißt es zum Abschluss augenzwinkernd
- Das ist eine satirische Anspielung auf die übertriebenen Marketingpraktiken der IT-Branche rund um Datenbankkapazität und Performance
1 Kommentare
Hacker-News-Kommentare
Die damalige HN-Diskussion gibt es hier
fastjsonvorgestellt, ein ultraschneller JSON-Parser (GitHub-Link)/dev/nullals DB und nocode als Backend zu verwenden/dev/nullverschoben habe, hatte ich kein einziges Problem mehr mit BenutzernDass
/dev/nullACID erfüllt, ist wie die triviale Lösung einer DBTrotzdem war es eine gute Lektüre, die daran erinnert, dass Konzepte wie ACID nicht im Vakuum existieren (Referenzlink)
/dev/nullvielleicht eine Ausnahme sein könnte/dev/nulltatsächlich schon einmal genau für so einen Zweck verwendetWenn eine Ausgabe irgendwohin muss, ich mich aber nicht darum kümmern will, ob dieser Ort damit klarkommt
In der Deployment-Phase wechselt man dann einfach zu einem validierten Speicher
/dev/nullist so etwas wie dertrue-Befehl unter den Speichern/dev/nullundtruegehören klar zur bugfreien Spitzengruppe/dev/nullist immer sofort konsistent, immer verfügbar und vollständig partitionstolerantEs ist die einzige DB, die selbst bei Skalierung auf unendlich viele Knoten ein vollständiges CAP beibehält
/dev/null0und/dev/null1Im Störungsfall wird der symbolische Link manuell aktualisiert, und ohne bestandene sarbox-Prüfung ist der Einsatz in Produktion verboten
/devnicht gemountet ist/dev/nullist nach vielen akademischen Definitionen serialisierbar, aber nicht strikt serialisierbarMan kann alle Lesevorgänge zum Zeitpunkt 0 ausführen und leere Ergebnisse zurückgeben, und Schreibvorgänge bei ihrem Auftreten einfach verwerfen
Der Punkt ist, dass man eine Echtzeitgarantie verlangen muss
Das
/dev/null-System hat genau einen Zustand/dev/nullweb-scale ist/dev/nullkann man sogar Seiten wie zombo.com betreibenZu sehen auf supersimplestorageservice.com,
und auch auf HN wurde er früher mehrfach diskutiert (Suchlink)
/dev/nullsei immer leer, aber tatsächlich ist **