Vylepšení a třídění UUID ve verzi 7

Automaticky přeloženo z Deepl

Počínaje verzí 4D 20 R10 jsou nyní identifikátory UUID generovány přímo pomocí interního algoritmu a nespoléhají se na systémové funkce, což umožňuje lepší kontrolu nad jejich formátem a chováním. A díky této aktualizaci se nyní můžete rozhodnout pro UUID verze 7, které podporují chronologické řazení. Pojďme prozkoumat, co to znamená pro vaše aplikace.

Porozumění verzím UUID

Všechny identifikátory UUID mají stejný formát: 128 bitů reprezentovaných 32 hexadecimálními znaky (0-9 + A-F). Mohou však kódovat různé typy informací. RFC 9562 v současné době definuje osm verzí UUID. Interně je UUID uložen ve dvou 64bitových celých číslech, což umožňuje mimořádně efektivní porovnávání, dotazování a třídění na 64bitových procesorech. Šestnáctkové znaky jsou pouze zobrazovacím formátem, interně se vůbec nepoužívají.
Až dosud se 4D při generování UUID spoléhalo na systémové funkce. Tyto funkce neumožňovaly zvolit nebo dokonce zjistit, která verze byla použita. V praxi obvykle vytvářely UUID verze 4 – zcela náhodně.
S nedávným vývojem RFC byla zavedena verze 7. Ta obsahuje časové razítko a umožňuje třídit UUID podle času vytvoření. Mnozí z vás požadovali podporu UUIDv7 na fóru 4D Feature Request a my jsme rádi, že ji můžeme poskytnout ve 4D 20 R10!

Verze 4 stále ve výchozím nastavení

Pro zajištění konzistence a kompatibility používá 4D i nadále ve výchozím nastavení UUID verze 4. 4D se však již nespoléhá na systémové funkce pro generování UUID, ale nyní je vypočítává interně. To pomáhá předcházet neočekávaným změnám v důsledku budoucích aktualizací systému.
A pokud chcete využít chronologické řazení verze 7, můžete jej nyní povolit – buď prostřednictvím nastavení, nebo kódu.

Čím je verze 7 výjimečná?

Identifikátory UUID verze 7 začínají časovým razítkem Unix Epoch, což umožňuje jejich chronologické řazení. To je užitečné zejména při vývoji nebo ladění, kdy chcete, aby se nově vytvořené záznamy zobrazovaly na začátku (nebo na konci) pole seznamu.
Protože verze 7 používá mikrosekundovou přesnost, nabízí jemnější granularitu než tradiční Timestamp příkaz, který je omezen na milisekundy.
Poznámka: Pokud je v rámci jedné mikrosekundy vytvořeno více záznamů, budou mít stejnou část časového razítka. Jejich identifikátory UUID však budou stále jedinečné díky dalším náhodným bajtům. Řazení těchto konkrétních záznamů nemusí mít smysl, ale jejich řazení vedle ostatních zůstává užitečné. V praxi trvá vytvoření záznamu obvykle déle než mikrosekundu, takže tento okrajový případ je vzácný.

Nové nastavení pro automatické identifikátory UUID verze 7

Aktivace verze 7 pro automaticky generované UUID je jednoduchá. Stačí otevřít dialogové okno Nastavení struktury, přejít na stránku Databáze > Úložiště dat a vybrat požadovanou verzi UUID.

Po nastavení verze 7 budou všechny automaticky generované UUID – například ty, které se používají pro primární klíče – dodržovat nový formát.
Stávající UUID v databázi zůstanou nedotčeny, aby byla zachována konzistence. A protože rozdíl mezi verzí 4 a 7 je interní (nikoli strukturální), mohou oba formáty bez problémů existovat současně.

Generování UUID verze 7 v kódu

Na adrese Generate UUID byl rovněž aktualizován tak, aby podporoval verzi 7. Stačí zadat verzi jako parametr! Velmi jednoduché, že?
A pokud parametr chybí, použije se ve výchozím nastavení stále verze 4, aby byl váš kód konzistentní.

var $uuid : Text
$uuid :=Generate UUID // v4: 578BFEC987BD4C11AE8AB9CD3DC12DD0
$uuid :=Generate UUID(4) // v4: C2BE4B6723634DBE9F4387B1226A4B4F

$uuid :=Generate UUID(7) // v7: 0198C7A4E41A7B6CB39F460873165D30
$uuid :=Generate UUID(7) // v7: 0198C7A543557F89AA7D83563AB5C97E

Zde je rychlé srovnání výše uvedených výsledků:

  • UUID verze 4 jsou plně náhodné.
  • Identifikátory UUID verze 7 mají společný prefix (časovou značku), na jehož konci je náhodnost.

Doufáme, že vám tato nová funkce poskytne větší flexibilitu a kontrolu nad vaším vývojem. Jako vždy nasloucháme vaší zpětné vazbě a vyvíjíme 4D podle vašich potřeb.
Šťastné kódování!

Avatar
• Product Owner • Damien Fuzeau se připojil k týmu 4D Product v únoru 2019. Jako Product Owner má na starosti psaní uživatelských příběhů a jejich následný převod do funkčních specifikací. Jeho úkolem je také zajistit, aby dodávané implementace funkcí vyhovovaly potřebám zákazníků. Damien vystudoval softwarové inženýrství na University of Nantes. Ve své bývalé společnosti strávil více než 23 let, nejprve jako vývojář (objevil 4D v roce 1997) a později jako technický manažer a softwarový architekt. Tato společnost je partnerem 4D OEM a nasadila obchodní software založený na 4D pro tisíce uživatelů na stovkách serverů. Damien je tedy zvyklý na 4D vývoj a nasazení ve vícejazyčném kontextu.