Architecture Decision Record

Active theme: Light

← ຕົວຢ່າງບັນທຶກການຕັດສິນໃຈ

ຮູບແບບຕາປະທັບເວລາ

ສາລະບານ:

ບົດສະຫຼຸບ

ບັນຫາ

ພວກເຮົາຢາກຕິດຕາມວ່າສິ່ງຕ່າງໆເກີດຂຶ້ນເມື່ອໃດ ໂດຍໃຊ້ຕາປະທັບເວລາ ແລະ ໃຊ້ຮູບແບບຕາປະທັບເວລາທີ່ສອດຄ່ອງ ທີ່ເຮັດວຽກໄດ້ດີທົ່ວທຸກລະບົບຂອງພວກເຮົາ ແລະ ລະບົບຂອງບຸກຄົນທີສາມ.

ພວກເຮົາໂຕ້ຕອບກັບລະບົບທີ່ມີຮູບແບບຕາປະທັບເວລາທີ່ແຕກຕ່າງກັນ:

  • ຂໍ້ຄວາມ JSON ບໍ່ມີຮູບແບບຕາປະທັບເວລາແບບເນທີຟ ດັ່ງນັ້ນພວກເຮົາຈຶ່ງຕ້ອງເລືອກວິທີແປງຕາປະທັບເວລາເປັນສະຕຣິງ ແລະ ແປງສະຕຣິງເປັນຕາປະທັບເວລາ ນັ້ນຄື ວິທີ serialize/deserialize.

  • ບາງແອັບພລິເຄຊັນຖືກຕັ້ງໃຫ້ໃຊ້ເວລາທ້ອງຖິ່ນ ແທນທີ່ຈະເປັນເວລາ UTC. ສິ່ງນີ້ສາມາດສະດວກສຳລັບໂຄງການທີ່ຕ້ອງປັບຕາມເວລາທ້ອງຖິ່ນ ເຊັ່ນ ໂຄງການທີ່ກະຕຸ້ນເຫດການທີ່ອີງໃສ່ເວລາທ້ອງຖິ່ນ.

  • ບາງລະບົບມີຄວາມຕ້ອງການ ແລະ ຄວາມສາມາດດ້ານຄວາມລະອຽດຂອງເວລາທີ່ແຕກຕ່າງກັນ ເຊັ່ນ ການໃຊ້ຄວາມລະອຽດເວລາເປັນວິນາທີ ທຽບກັບ ມິນລິວິນາທີ ທຽບກັບ ນາໂນວິນາທີ. ຕົວຢ່າງ ຄຳສັ່ງ date ຂອງລະບົບປະຕິບັດການ Linux ໃຊ້ຄວາມລະອຽດເວລາເລີ່ມຕົ້ນເປັນວິນາທີ ໃນຂະນະທີ່ຕະຫຼາດຫຼັກຊັບ Nasdaq ຕ້ອງການຄວາມລະອຽດເວລາເລີ່ມຕົ້ນເປັນນາໂນວິນາທີ.

ການຕັດສິນໃຈ

ພວກເຮົາເລືອກຮູບແບບມາດຕະຖານຕາປະທັບເວລາ ISO 8601 ທີ່ມີຄວາມລະອຽດລະດັບນາໂນວິນາທີ ໂດຍສະເພາະ "YYYY-MM-DDTHH:MM:SS.NNNNNNNNNZ".

ຮູບແບບນີ້ສະແດງປີ, ເດືອນ, ວັນ, ຊົ່ວໂມງ, ນາທີ, ວິນາທີ, ນາໂນວິນາທີ ແລະ ເຂດເວລາ Zulu ທີ່ເອີ້ນວ່າ UTC, GMT.

ສະຖານະ

ຕັດສິນໃຈແລ້ວ.

ລາຍລະອຽດ

ສົມມຸດຕິຖານ

ພວກເຮົາຕ້ອງຈັດການສະຕຣິງຂໍ້ຄວາມຕາປະທັບເວລາເຫຼົ່ານີ້ ເພື່ອແປງຈາກຕາປະທັບເວລາເປັນສະຕຣິງ (ເອີ້ນວ່າ serialize) ແລະ ແປງຈາກສະຕຣິງເປັນຕາປະທັບເວລາ (ເອີ້ນວ່າ deserialize).

ພວກເຮົາຕ້ອງການຮູບແບບທີ່ໂດຍທົ່ວໄປໃຊ້ງ່າຍ, ແປງງ່າຍ ແລະ ຄົນອ່ານງ່າຍ.

ພວກເຮົາຕ້ອງການຄວາມເຂົ້າກັນໄດ້ກັບລະບົບພາຍນອກຫຼາກຫຼາຍທີ່ພວກເຮົາຄວບຄຸມບໍ່ໄດ້ ເຊັ່ນ ລະບົບວິເຄາະ, ລະບົບຖານຂໍ້ມູນ, ລະບົບການເງິນ.

ຂໍ້ຈຳກັດ

ບາງລະບົບມີຂໍ້ຈຳກັດດ້ານຄວາມລະອຽດຂອງເວລາ. ຕົວຢ່າງ ຄຳສັ່ງ date ຂອງລະບົບປະຕິບັດການ macOS ສາມາດພິມຄວາມລະອຽດເວລາເປັນວິນາທີ ແຕ່ບໍ່ສາມາດເປັນນາໂນວິນາທີ.

ຈຸດຢືນ

ພວກເຮົາໄດ້ພິຈາລະນາທາງເລືອກຫຼາກຫຼາຍ:

  • Unix epoch ນັ້ນຄື ຕົວເລກດຽວທີ່ເພີ່ມຂຶ້ນເລື້ອຍໆ.

  • ຮູບແບບຂໍ້ຄວາມແບບກະທັດຮັດ "YYYYMMDDTHHMMSSNNNNNNNNN".

  • ການໃຊ້ເຂດເວລາທ້ອງຖິ່ນ ທຽບກັບ ເຂດເວລາ UTC.

ຂໍ້ໂຕ້ແຍ້ງ

ສຳລັບການໃຊ້ງານທົ່ວໄປ ພວກເຮົາໃຫ້ຄຸນຄ່າກັບຄວາມງ່າຍໃນການອ່ານ/ຂຽນໂດຍມະນຸດ ຫຼາຍກວ່າຄວາມໄວ/ຂະໜາດດິບ.

ສຳລັບການໃຊ້ງານທົ່ວໄປ ພວກເຮົາຕ້ອງການຮູບແບບທີ່ເຮັດວຽກໄດ້ດີໃນລະບົບເຄື່ອງຈັກ ແລະ ເຮັດວຽກໄດ້ດີດ້ວຍມືເຊັ່ນກັນ ເຊັ່ນ ການຂຽນຂໍ້ມູນຕົວຢ່າງ, ການອ່ານຜົນຜະລິດ JSON, ການ grep ໄຟລ໌ log ແລະ ອື່ນໆ.

ສຳລັບການໃຊ້ງານທີ່ບໍ່ທົ່ວໄປ ເຊັ່ນ ການຄຳນວນປະສິດທິພາບສູງ ພວກເຮົາຄາດວ່າຈະຕ້ອງການປັບປຸງຮູບແບບຂໍ້ຄວາມໃດໆທີ່ພວກເຮົາເລືອກ ໂດຍແປງຂໍ້ຄວາມເປັນຮູບແບບທີ່ໄວກວ່າ ເຊັ່ນ ປະເພດວັດຖຸວັນທີທີ່ມີໃນຕົວຂອງພາສາການຂຽນໂປຣແກຣມ. ດັ່ງນັ້ນຮູບແບບຂໍ້ຄວາມຈຶ່ງບໍ່ສຳຄັນຫຼາຍສຳລັບ HPC.

ຜົນໄດ້ຮັບ

ລະບົບຂໍ້ຄວາມ ແລະ ລະບົບເວລາຫຼາກຫຼາຍຂອງພວກເຮົາຈະລວມເຂົ້າກັນເປັນຮູບແບບນີ້.

ທີ່ກ່ຽວຂ້ອງ

ການຕັດສິນໃຈທີ່ກ່ຽວຂ້ອງ

ພວກເຮົາອາດຕ້ອງການວິທີທີ່ໄວ/ງ່າຍເພື່ອຕິດຕາມຜົນຕ່າງຂອງເວລາ ທີ່ເອີ້ນວ່າໄລຍະເວລາ (durations) ດ້ວຍ. ສິ່ງເຫຼົ່ານີ້ງ່າຍດ້ວຍຕາປະທັບເວລາ Unix epoch.

ຄວາມຕ້ອງການທີ່ກ່ຽວຂ້ອງ

ພວກເຮົາອາດຕ້ອງການປັບການຕັດສິນໃຈຂອງພວກເຮົາ ເຊັ່ນ ຖ້າພວກເຮົາມີຄວາມຕ້ອງການທີ່ກ່ຽວຂ້ອງສຳລັບຕາປະທັບຂໍ້ຄວາມ logging ປະເພດສະເພາະ ເຊັ່ນ ສຳລັບ Splunk, Sumo, ELK ແລະ ອື່ນໆ.

ຜະລິດຕະພັນທີ່ກ່ຽວຂ້ອງ

ຕົວຈັດຮູບແບບ ແລະ ຕົວວິເຄາະຂອງພາສາ:

ຕົວຢ່າງຈາກ Rosetta Code:

ຕົວຢ່າງຈາກ SixArm:

ຫຼັກການທີ່ກ່ຽວຂ້ອງ

ຍ້ອນກັບໄດ້ງ່າຍ. ພວກເຮົາສາມາດປ່ຽນເປັນຮູບແບບອື່ນໄດ້ຢ່າງງ່າຍດາຍ ເຊັ່ນ Unix epoch.

ເລື່ອນການປັບປຸງກ່ອນເວລາອັນຄວນ. ສຳລັບການໃຊ້ງານທົ່ວໄປ ພວກເຮົາບໍ່ສົນໃຈຫຼາຍກັບຕົວອັກສອນເພີ່ມເຕີມບໍ່ກີ່ຕົວ ເຊັ່ນ ຮູບແບບທີ່ໃຊ້ຂີດຕໍ່ ແລະ ຈ້ຳສອງຈຸດ.

ໝາຍເຫດ

ເພີ່ມໝາຍເຫດຢູ່ນີ້.