/dev/null verwirft 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/null ist 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/null ein Höchstmaß an Stabilität, bei gleichzeitiger extremer Einfachheit, da es überhaupt keine Daten speichert
Atomicity — Atomarität
- Wenn Daten nach
/dev/null geschrieben 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/null eine vollständige Atomarität ohne partielle Fehler oder unvollständige Zustandsübergänge
Consistency — Konsistenz
/dev/null bleibt 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/null schreiben, 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/null committet Daten gewissermaßen „dauerhaft in den Zustand des Nichts“
- Selbst bei einem Systemabsturz oder nach einem Neustart ändert sich der Zustand von
/dev/null nicht
- Anders gesagt: Die Dauerhaftigkeit des Nichts ist perfekt gewährleistet
Grenzen und humorvolles Fazit
- Als einziges Problem von
/dev/null nennt 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 **