Architecture Decision Record

Active theme: Light

← Mifano ya rekodi za maamuzi

Muundo wa muhuri wa muda

Yaliyomo:

Muhtasari

Suala

Tunataka kuweza kufuatilia mambo yanapotokea kwa kutumia mihuri ya muda na kwa kutumia muundo thabiti wa muhuri wa muda unaofanya kazi vizuri katika mifumo yetu yote na mifumo ya wahusika wa tatu.

Tunaingiliana na mifumo yenye miundo tofauti ya mihuri ya muda:

  • Ujumbe wa JSON hauna muundo asilia wa muhuri wa muda, kwa hivyo tunahitaji kuchagua jinsi ya kubadilisha muhuri wa muda kuwa mfuatano wa herufi, na kubadilisha mfuatano wa herufi kuwa muhuri wa muda, yaani jinsi ya kuserialisha/kuondoa userialishaji.

  • Baadhi ya programu zimewekwa kutumia saa ya mahali, badala ya saa ya UTC. Hii inaweza kuwa rahisi kwa miradi inayopaswa kurekebisha kulingana na saa ya mahali, kama miradi inayoanzisha matukio yanayotegemea saa ya mahali.

  • Baadhi ya mifumo ina mahitaji na uwezo tofauti wa usahihi wa muda, kama kutumia azimio la muda la sekunde dhidi ya milisekunde dhidi ya nanosekunde. Kwa mfano, amri ya date ya mfumo wa uendeshaji wa Linux hutumia usahihi wa muda chaguomsingi wa sekunde, ilhali soko la hisa la Nasdaq linataka usahihi wa muda chaguomsingi wa nanosekunde.

Uamuzi

Tunachagua muundo sanifu wa muhuri wa muda ISO 8601 wenye usahihi wa nanosekunde, hasa "YYYY-MM-DDTHH:MM:SS.NNNNNNNNNZ".

Muundo unaonyesha mwaka, mwezi, siku, saa, dakika, sekunde, nanosekunde, na ukanda wa saa wa Zulu a.k.a. UTC, GMT.

Hali

Imeamuliwa.

Undani

Dhana

Tunahitaji kushughulikia mifuatano hii ya maandishi ya mihuri ya muda, kubadilisha kutoka muhuri wa muda kuwa mfuatano wa herufi (a.k.a. kuserialisha) na kubadilisha kutoka mfuatano wa herufi kuwa muhuri wa muda (a.k.a. kuondoa userialishaji).

Tunataka muundo ambao kwa ujumla ni rahisi kutumia, rahisi kubadilisha, na rahisi kwa mtu kusoma.

Tunataka upatanifu na anuwai pana ya mifumo ya nje ambayo hatuwezi kuidhibiti, kama mifumo ya uchanganuzi, mifumo ya hifadhidata, mifumo ya kifedha.

Vikwazo

Baadhi ya mifumo ina mapungufu ya usahihi wa muda. Kwa mfano, amri ya date ya mfumo wa uendeshaji wa macOS inaweza kuchapisha usahihi wa muda kwa sekunde, lakini si kwa nanosekunde.

Misimamo

Tulizingatia anuwai ya chaguo:

  • Unix epoch yaani nambari moja inayoongezeka.

  • Muundo mfupi wa maandishi "YYYYMMDDTHHMMSSNNNNNNNNN".

  • Kutumia ukanda wa saa wa mahali dhidi ya ukanda wa saa wa UTC.

Hoja

Kwa matumizi ya kawaida, tunathamini urahisi wa kusoma/kuandika kwa binadamu, zaidi ya kasi/ukubwa ghafi.

Kwa matumizi ya kawaida, tunataka muundo unaofanya kazi vizuri katika mifumo ya mashine, na pia unafanya kazi vizuri kwa mkono, kama kuandika data ya sampuli, kusoma pato la JSON, kutafuta kwa grep kwenye faili ya kumbukumbu, n.k.

Kwa matumizi yasiyo ya kawaida, kama kompyuta ya utendaji wa juu, tunatarajia tutataka kuboresha muundo wowote wa maandishi tunaochagua kwa kubadilisha maandishi kuwa muundo wa haraka zaidi, kama aina ya kitu cha tarehe iliyojengewa ndani ya lugha ya programu. Kwa hivyo muundo wa maandishi hauna umuhimu mkubwa kwa HPC.

Athari

Mifumo yetu mbalimbali ya maandishi na mifumo ya muda itakusanyika kwenye muundo huu.

Yanayohusiana

Maamuzi yanayohusiana

Tunaweza kutaka njia ya haraka/rahisi pia ya kufuatilia tofauti za muda a.k.a. vipindi. Hivi ni rahisi kwa mihuri ya muda ya Unix epoch.

Mahitaji yanayohusiana

Tunaweza kutaka kurekebisha uamuzi wetu mf. ikiwa tuna hitaji linalohusiana la aina mahsusi ya muhuri wa ujumbe wa kumbukumbu, kama kwa Splunk, Sumo, ELK, n.k.

Vielelezo vinavyohusiana

Wapangaji muundo na wachanganuzi wa lugha:

Mifano ya Rosetta Code:

Mifano ya SixArm:

Kanuni zinazohusiana

Inayoweza kurudishwa kwa urahisi. Tunaweza kubadilisha kwa urahisi kabisa kwenda muundo tofauti, kama Unix epoch.

Ahirisha uboreshaji wa mapema. Kwa matumizi ya kawaida hatujali sana herufi chache za ziada kama muundo unaotumia vistari na nukta mbili.

Maelezo ya ziada

Ongeza maelezo hapa.