Architecture Decision Record

Active theme: Light

← Beispiller fir Decisiounsopzeechnungen

Zäitstempel-Format

Inhalt:

Zesummefaassung

Problem

Mir wëllen verfollege kënnen, wéini Saache geschéien, andeems mir Zäitstempel benotzen an e konsistent Zäitstempel-Format benotzen, dat gutt iwwer all eis Systemer an Drëtt-Systemer funktionéiert.

Mir interagéieren mat Systemer, déi ënnerschiddlech Zäitstempel-Formater hunn:

  • JSON-Messagen hunn kee native Zäitstempel-Format, dofir mussen mir wielen, wéi mir en Zäitstempel an e String konvertéieren, an e String an en Zäitstempel konvertéieren, dat heescht, wéi mir serialiséieren/deserialiséieren.

  • E puer Applikatioune si fir d'Lokalzäit amplaz fir d'UTC-Zäit agestallt. Dat kann praktesch si fir Projeten, déi sech un d'Lokalzäit upasse mussen, wéi Projeten, déi Evenementer ausléisen, déi op der Lokalzäit baséieren.

  • E puer Systemer hunn ënnerschiddlech Besoine a Fäegkeeten bei der Zäitgenauegkeet, wéi d'Notze vun enger Zäitopléisung vu Sekonnen vs. Millisekonnen vs. Nanosekonnen. Zum Beispill benotzt de Linux-Betribssystem-Kommando date eng Standard-Zäitgenauegkeet vu Sekonnen, während d'Nasdaq-Bourse eng Standard-Zäitgenauegkeet vu Nanosekonne wëll.

Decisioun

Mir wielen den Zäitstempel-Standardformat ISO 8601 mat Nanosekonne-Genauegkeet, konkret "YYYY-MM-DDTHH:MM:SS.NNNNNNNNNZ".

D'Format weist d'Joer, de Mount, den Dag, d'Stonn, d'Minutt, d'Sekonn, d'Nanosekonnen an d'Zulu-Zäitzon, och bekannt als UTC, GMT.

Zoustand

Decidéiert.

Detailer

Viraussetzungen

Mir mussen dës Zäitstempel-Textstrings handhaben, fir vun engem Zäitstempel an e String ze konvertéieren (och bekannt als serialiséieren) an vun engem String an en Zäitstempel ze konvertéieren (och bekannt als deserialiséieren).

Mir wëllen e Format, dat allgemeng einfach ze benotze, einfach ze konvertéieren an einfach fir e Mënsch ze liesen ass.

Mir wëllen Kompatibilitéit mat enger breeder Palette vun externe Systemer, déi mir net kontrolléiere kënnen, wéi Analytiksystemer, Datebanksystemer, Finanzsystemer.

Restriktiounen

E puer Systemer hunn Limitatioune bei der Zäitgenauegkeet. Zum Beispill kann de macOS-Betribssystem-Kommando date d'Zäitgenauegkeet a Sekonne ausdrécken, awer net a Nanosekonnen.

Positiounen

Mir hunn eng Rei vun Optiounen berécksiichtegt:

  • Unix-Epoch, dat heescht eng eenzeg opsteigend Zuel.

  • Kuerzt Textformat "YYYYMMDDTHHMMSSNNNNNNNNN".

  • Eng lokal Zäitzon vs. d'UTC-Zäitzon benotzen.

Argument

Fir typesch Notzung schätze mir einfach ze liesen/schreiwen fir Mënschen méi héich wéi réng Vitess/Gréisst.

Fir typesch Notzung wëlle mir e Format, dat gutt a Maschinnesystemer funktionéiert, a gutt och manuell funktionéiert, wéi beim Schreiwe vu Beispilldaten, Liese vu JSON-Output, Grep vun enger Logdatei, asw.

Fir atypesch Notzung, wéi High-Performance-Computing, erwaarde mir, datt mir all Textformat, dat mir wielen, optiméiere wëllen, andeems mir den Text an e méi séiert Format konvertéieren, wéi den agebaute Datum-Objekttyp vun enger Programméiersprooch. Dofir ass d'Textformat fir HPC net sou wichteg.

Implikatiounen

Eis verschidden Textsystemer a Zäitsystemer konvergéieren op dëst Format.

Verwandt

Verwandt Decisiounen

Mir wëllen eventuell e séiere/einfache Wee, och Zäitdeltas, och bekannt als Dauer, ze verfollegen. Dës si mat Unix-Epoch-Zäitstempel einfach.

Verwandt Ufuerderungen

Mir wëllen eventuell eis Decisioun upassen, z.B. wa mir eng verwandt Ufuerderung fir eng spezifesch Zort vu Logging-Message-Stempel hunn, wéi fir Splunk, Sumo, ELK, asw.

Verwandt Artefakten

Sproochformatter a Parser:

Rosetta-Code-Beispiller:

SixArm-Beispiller:

Verwandt Prinzipien

Einfach réckgängeg ze maachen. Mir kënnen zimlech einfach op e anert Format wiesselen, wéi Unix-Epoch.

Verfréite Optimiséierung opschiebe. Fir typesch Notzung ass et eis net vill drun gelegen, wéi vill e puer extra Zeechen, wéi e Format mat Bindestrécher an Doppelpunkten.

Notizen

Füügt hei Notizen derbäi.