Epoch Zaman Damgası (Unix Zamanı) Nedir ve Neden Kullanılır?
Unix Zamanının Kökeni
Unix zamanı, POSIX zamanı veya sadece epoch olarak bilinen epoch zaman damgasını tam olarak anlamak için 1970'lerin başındaki Unix işletim sisteminin kökenlerine bakmamız gerekir. Unix zamanı, zamanı saniyelerin toplamı olarak izleyen bir sistemdir. Özel olarak, Unix epoch'undan bu yana geçen saniye sayısını temsil eder. Epoch'un kendisi, 1 Ocak 1970 Perşembe günü 00:00:00 Eşgüdümlü Evrensel Zaman (UTC) olarak tanımlanır.
Ken Thompson ve Dennis Ritchie, Bell Labs'ta Unix'in ilk sürümlerini geliştirirken, bilgisayarların tarih ve saatleri temsil etmesi ve saklaması için basit ve verimli bir yola ihtiyaç duydular. İnsan tarafından okunabilir tarihler ('29 Temmuz 2026' gibi) bilgisayarlar için işlenmesi oldukça karmaşıktır. Düzensiz aylar (28, 29, 30 veya 31 gün), artık yıllar, saat dilimleri ve yaz saati uygulaması geçişlerini içerir. Zamanı sürekli artan tek bir tamsayı olarak temsil eden Unix geliştiricileri, kolayca saklanabilen, karşılaştırılabilen ve matematiksel olarak işlenebilen evrensel, net bir zaman standardı oluşturdular.
Geliştiriciler Neden Bugün Epoch Zaman Damgalarını Kullanıyor?
On yıllar sonra bile epoch zamanı, modern bilişim altyapısının temeli olmaya devam etmektedir. Evrensel olarak kabul görmesinin nedenleri şunlardır:
- Basitlik ve Verimlilik: 32-bit veya 64-bit bir tamsayı saklamak, biçimlendirilmiş bir tarih dizesi saklamaktan önemli ölçüde daha az disk alanı ve bellek kaplar. Veritabanları milyarlarca kayıt içerdiğinde, satır başına birkaç bayt tasarruf etmek, devasa depolama maliyeti indirimlerine ve gelişmiş veritabanı dizin performansına dönüşür.
- Saat Diliminden Bağımsız: Bir epoch zaman damgası doğası gereği UTC'ye bağlıdır. Kullanıcının fiziksel olarak nerede bulunduğuyla ilgilenmez. Tokyo'daki bir sunucu New York'taki bir istemciyle iletişim kurduğunda, bir epoch tamsayısı iletmek saat dilimleriyle ilgili kafa karışıklığını önler. İstemci, tamsayıyı aldıktan sonra kendi yerel saat dilimine dönüştürür.
- Kolay Matematiksel İşlemler: İki olay arasındaki süreyi hesaplamak, bir zaman damgasını diğerinden çıkarmak kadar basittir. İki günlük girdisi arasında kaç saniye geçtiğini bilmek istiyorsanız,
timestamp2 - timestamp1karmaşık tarih ayrıştırma mantığına ihtiyaç duymadan size anında kesin cevabı verir. - Veritabanı Sıralama: Kayıtları tamsayı bir sütuna göre kronolojik olarak sıralamak, veritabanı motorları için metin tabanlı zaman damgası dizelerini ayrıştırmaktan ve sıralamaktan çok daha hızlıdır.
Artık Saniyelerin Etkisi
Unix zamanının teknik bir detayı, artık saniyeleri nasıl ele aldığıdır. Artık saniye, günün saatini ortalama güneş saatine yakın tutmak için Eşgüdümlü Evrensel Zaman'a (UTC) uygulanan bir saniyelik bir ayarlamadır. İlginç bir şekilde, Unix zamanı artık saniyeleri dikkate almaz. Unix zaman sisteminde her bir gün tam olarak 86.400 saniye uzunluğunda kabul edilir. Bir artık saniye gerçekleştiğinde, Unix saati aynı saniyeyi iki kez tekrarlar. Bu kasıtlı tasarım tercihi, zaman damgalarının öngörülemez hale gelmesini önler, ancak Unix zamanının 1970'ten bu yana geçen fiziksel zamanın tam, doğrusal bir ölçümü olmadığı anlamına gelir. Yazılım mühendisliği uygulamalarının büyük çoğunluğu için bu küçük tutarsızlık tamamen kabul edilebilirdir ve her geçmiş artık saniyeyi izlemenin karmaşıklığına tercih edilir.

