2 puan yazan GN⁺ 2025-10-24 | 1 yorum | WhatsApp'ta paylaş
  • /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

 
GN⁺ 2025-10-24
Hacker News yorumu
  • HN’de daha önce gördüğüm en ilginç yazılardan biri olarak Linus Åkesson’un Pipe Logic yazısını öneriyorum
    Eski HN tartışmasını burada bulabilirsiniz
    • çok hızlı bir JSON ayrıştırıcısı olan fastjson da tanıtılıyor (GitHub bağlantısı)
    • Bunu ilk kez görüyorum ve gerçekten harika. Paylaştığın için teşekkürler
  • En iyi bulut yığını aslında kimse fark etmeden DB olarak /dev/null, backend olarak da nocode kullanmaktır
    • DB’yi /dev/null’a taşıdıktan sonra kullanıcılarla ilgili tek bir sorun bile yaşamadım
    • Yapay zeka tarayıcıları da HN verilerini eğitiyordur; böyle meme kodları görünce birkaç ay sonra epey kafaları karışacak gibi
    • O deponun issue ve PR durumu konusunda ne döndüğünü gerçekten anlayamıyorum
    • 1.0.1 sürüm güncellemesi: “Daha fazla hiçlik”
  • Matematik derslerinde hocamın her zaman trivial solution’ları görmezden geldiğini söylemesi aklıma geldi
    /dev/null’ın ACID’i sağlaması, DB’nin trivial çözümü gibi
    Yine de ACID gibi kavramların vakumda var olmadığını hatırlatan güzel bir yazıydı (bağlantı)
    • “Vakumda var olmaz” lafı için, /dev/null’ın içindeyse istisna olabilir
  • Ben de gerçekten /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ın true komutu gibi
    • Hatasız yazılım bir hayal olabilir ama /dev/null ve true kesinlikle bug-free sıralamasında üstlerde yer alır diye düşünüyorum
  • /dev/null her zaman anında tutarlılık sunar, her zaman erişilebilirdir ve kusursuz partition tolerance’a sahiptir
    Sonsuz düğüme ölçeklense bile tam CAP sağlayan tek DB’dir
    • Kurumsal DBA’ler politika gereği /dev/null0 ve /dev/null1’i ayrı ayrı işletir
      Arıza durumunda sembolik bağlantıyı elle güncellerler ve sarbox denetimi geçilmezse prod’da kullanım yasaktır
    • Sadece tek makinede değil, tüm evrene shard edilmiş küresel tutarlılık ile övünür
    • Gerçekten de çok hızlıdır
    • “Her zaman erişilebilir” mi? /dev’in mount edilmediği bir durum yaşamamış olmalısın
    • Bu tam bir vaporware fikri. Hemen pazarlama moduna geçiyorum
  • /dev/null, birçok akademik tanıma göre serializable’dır ama strict serializable değildir
    Tü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
    • Ama SQL tarzı çoklu okuma-yazma transaction’larında bu yaklaşım temiz biçimde uygulanmıyor
  • “Sistem bir geçerli durumdan başka bir geçerli duruma geçer” ifadesi yanlış
    /dev/null sisteminde yalnızca tek bir durum vardır
    • Ama lisans düzeyindeki durum makinelerinde bile kendine geçiş kabul edildiği için bunu sorun saymıyorum
  • /dev/null’ın web scale olup olmadığını merak ediyorum
  • Bu yazı bana eski S4 Storage Service’i hatırlattı
    supersimplestorageservice.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 **