Apakah Epoch Timestamp (Masa Unix) dan Mengapa Ia Digunakan?
Asal-usul Masa Unix
Untuk memahami epoch timestamp dengan mendalam, yang sering dirujuk sebagai masa Unix, masa POSIX, atau hanya epoch, kita perlu melihat kembali asal-usul sistem pengendalian Unix pada awal tahun 1970-an. Masa Unix ialah sistem untuk menjejaki masa sebagai jumlah terkumpul saat. Secara khusus, ia mewakili jumlah saat yang telah berlalu sejak Unix epoch. Epoch itu sendiri ditakrifkan sebagai 00:00:00 Coordinated Universal Time (UTC) pada hari Khamis, 1 Januari 1970.
Semasa Ken Thompson dan Dennis Ritchie membangunkan versi pertama Unix di Bell Labs, mereka memerlukan cara yang mudah dan cekap untuk komputer mewakili dan menyimpan tarikh serta masa. Tarikh yang boleh dibaca manusia (seperti '29 Julai 2026') sangat rumit untuk diproses oleh komputer. Ia melibatkan bulan yang tidak teratur (ada yang 28, 29, 30, atau 31 hari), tahun lompat, zon masa, dan perubahan waktu musim panas (daylight saving time). Dengan mewakili masa sebagai satu integer yang terus meningkat, pembangun Unix mencipta standard masa universal tanpa kekeliruan yang boleh disimpan, dibandingkan, dan dimanipulasi secara matematik dengan mudah.
Mengapa Pembangun Menggunakan Epoch Timestamp Hari Ini
Walaupun selepas beberapa dekad, masa epoch kekal menjadi tulang belakang infrastruktur komputer moden. Berikut ialah sebab ia diguna pakai secara universal:
- Kemas dan Cekap: Menyimpan integer 32-bit atau 64-bit menggunakan ruang cakera dan memori yang jauh lebih sedikit berbanding menyimpan rentetan tarikh terformat. Apabila pangkalan data mengandungi berbilion rekod, penjimatan beberapa bait sesaat membawa kepada pengurangan kos storan yang besar dan meningkatkan prestasi indeks pangkalan data.
- Bebas Zon Masa (Time Zone Agnostic): Timestamp epoch terikat secara teras kepada UTC. Ia tidak mengambil kira lokasi fizikal pengguna. Apabila pelayan di Tokyo berkomunikasi dengan klien di New York, menghantar integer epoch mengelakkan sebarang kekeliruan mengenai zon masa. Klien hanya perlu menukar integer tersebut ke zon masa tempatan mereka setelah menerimanya.
- Operasi Matematik Mudah: Menghitung tempoh antara dua peristiwa adalah semudah menolak satu timestamp daripada timestamp yang lain. Jika anda ingin mengetahui berapa saat yang berlalu antara dua entri log,
timestamp2 - timestamp1memberikan jawapan tepat secara serta-merta, tanpa logik penghuraian tarikh yang rumit. - Pengisihan Pangkalan Data: Pengisihan rekod mengikut urutan kronologi menggunakan lajur integer adalah jauh lebih pantas untuk enjin pangkalan data berbanding menghurai dan mengisih rentetan timestamp berasaskan teks.
Kesan Saat Lompat (Leap Seconds)
Satu nuansa teknikal masa Unix ialah cara ia mengendalikan saat lompat. Saat lompat ialah pelarasan satu saat yang sekali-sekala diimbangi pada Coordinated Universal Time (UTC) untuk memastikan masa harian kekal hampir dengan masa suria purata. Menariknya, masa Unix tidak mengambil kira saat lompat. Dalam sistem masa Unix, setiap hari dianggap tepat 86,400 saat panjangnya. Apabila saat lompat berlaku, jam Unix pada dasarnya mengulangi saat yang sama sebanyak dua kali. Pilihan reka bentuk ini menghalang timestamp daripada menjadi tidak menentu, walaupun ini bermakna masa Unix bukanlah ukuran linear yang ketat bagi masa fizikal yang berlalu sejak 1970. Bagi kebanyakan aplikasi kejuruteraan perisian, perbezaan kecil ini sepenuhnya boleh diterima.

