/dev/null, tüm girdileri anında yok etse de, işlemlerin ACID özelliklerini kusursuz biçimde karşılayan bir sistem olarak hicivli bir dille anlatılıyor
- Atomiklik (Atomicity) açısından veriler kısmen yazılmıyor; ya tamamen yok oluyor ya da hiç yazılmıyor
- Tutarlılık (Consistency) bakımından her zaman boş durumunu koruyor; böylece sistemin değişmez koşulları bozulmuyor
- Yalıtım (Isolation) tarafında, birden fazla süreç aynı anda erişse bile birbirini etkilemiyor; çünkü hiçbir şey saklanmadığı için çakışma oluşmuyor
- Kalıcılık (Durability) ise yeniden başlatmadan sonra da hâlâ “hiçbir şey yok” durumunu koruması bakımından kusursuz; ancak depolama kapasitesinin 0 bayt olması esprili biçimde tek sınırlama olarak anılıyor
/dev/null'ın ACID özelliklerinin analizi
/dev/null, tüm girdileri alıp anında yok eden özel bir dosya olarak Linux ve Unix benzeri sistemlerde yaygın biçimde kullanılan bir veri sink'i görevi görüyor
- Yazar bunu “Web Scale” veritabanına benzeterek, veritabanlarının temel özellikleri olan ACID'i hicivli biçimde uyguluyor
- Sonuç olarak
/dev/null, kusursuz derecede kararlı olsa da hiçbir veri saklamamasıyla uç noktada bir sadelik sergiliyor
Atomicity — Atomiklik
/dev/null'a veri yazıldığında ya tamamen yok oluyor ya da hiç yazılmıyor; kısmi yazım diye bir şey bulunmuyor
- Bu, işlemlerdeki “ya hep ya hiç (all or nothing)” ilkesiyle aynı davranış
- Bu nedenle
/dev/null, kısmi başarısızlıklar veya eksik durum geçişleri olmadan tam atomiklik garantisi sunuyor
Consistency — Tutarlılık
/dev/null her zaman boş durumunu koruyor ve hiçbir girdi bu değişmez koşulu bozamıyor
- Veri yazılsa bile anında yok edildiğinden sistem her zaman geçerli bir duruma geçiyor
- Sonuç olarak “dosyada hiçbir şey yoktur” değişmezi (invariant) sürekli doğru kalıyor
Isolation — Yalıtım
- Birden fazla süreç aynı anda
/dev/null'a veri yazsa bile çakışma veya etkileşim oluşmuyor
- Depolama yapılmadığı için işlemler arasında hiçbir etki bulunmuyor
- Bu da kusursuz paralel işleme ortamında bile tutarlı sonuçlar sağlayan ideal bir yalıtım uygulaması anlamına geliyor
Durability — Kalıcılık
/dev/null, veriyi “kalıcı olarak hiçbir şey olmayan durum”a commit ediyor
- Sistem çökse ya da yeniden başlatılsa bile
/dev/null'ın durumu değişmiyor
- Yani 'hiçlik'in kalıcılığını kusursuz biçimde garanti ediyor
Sınırlar ve esprili sonuç
- Yazar,
/dev/null'ın tek sorunu olarak “0 bayt depolama alanını” işaret ediyor
- Daha fazla alana ihtiyaç varsa “kurumsal satış ekibiyle (aslında yazarın kendisiyle)” iletişime geçilmesi gerektiği şakasıyla yazıyı bitiriyor
- Bu da veritabanı kapasitesi ve performansı etrafındaki BT sektörünün abartılı pazarlama pratiklerini hicveden bir ifade
1 yorum
Hacker News yorumu
Eski HN tartışmasını burada bulabilirsiniz
fastjsonda tanıtılıyor (GitHub bağlantısı)/dev/null, backend olarak da nocode kullanmaktır/dev/null’a taşıdıktan sonra kullanıcılarla ilgili tek bir sorun bile yaşamadım/dev/null’ın ACID’i sağlaması, DB’nin trivial çözümü gibiYine de ACID gibi kavramların vakumda var olmadığını hatırlatan güzel bir yazıydı (bağlantı)
/dev/null’ın içindeyse istisna olabilir/dev/null’ı bu amaçla kullandımÇıktının bir yere gitmesi gerektiğinde ama oranın bunu kaldırıp kaldıramayacağını dert etmek istemediğimde kullanıyorum
Dağıtım aşamasında doğrulanmış bir depoyla değiştirmen yeterli
/dev/null, depolama dünyasınıntruekomutu gibi/dev/nullvetruekesinlikle bug-free sıralamasında üstlerde yer alır diye düşünüyorum/dev/nullher zaman anında tutarlılık sunar, her zaman erişilebilirdir ve kusursuz partition tolerance’a sahiptirSonsuz düğüme ölçeklense bile tam CAP sağlayan tek DB’dir
/dev/null0ve/dev/null1’i ayrı ayrı işletirArıza durumunda sembolik bağlantıyı elle güncellerler ve sarbox denetimi geçilmezse prod’da kullanım yasaktır
/dev’in mount edilmediği bir durum yaşamamış olmalısın/dev/null, birçok akademik tanıma göre serializable’dır ama strict serializable değildirTüm okumaları 0. saniyede yapıp boş sonuç döndürebilir, yazmaları da oluştukları anda çöpe atabilirsiniz
Asıl nokta, real-time guarantee talep etmeniz gerektiğidir
/dev/nullsisteminde yalnızca tek bir durum vardır/dev/null’ın web scale olup olmadığını merak ediyorum/dev/null, zombo.com gibi siteleri bile çalıştırabilirsupersimplestorageservice.com adresinde görülebilir ve
geçmişte HN’de de birkaç kez tartışılmıştı (arama bağlantısı)
/dev/null’ın her zaman boş olduğu söylenir ama gerçekte **