Takie pytanko, czy korzystacie w waszych komercyjnych projektach z globalnych identyfikatorów? Używacie standardowych UUID? Jakiej wersji? Czy użycie może czegoś customowego? Jeżeli generujecie własny identyfikator to o co go opieracie? Jakiego jest rozmiaru i czy ma sumę kontrolną? Może używacie jakichś gotowych rozwiązań typu twitterowy Snowflake? W jaki sposób potem przechowujecie je w bazie? Jako text, binary czy konwertujecie do typów numerycznych? Chodzi mi głównie sql
Chętnie poznam jakieś triki zastosowane przy tworzeniu globalnych IDków
@Priya: Można jako PK, można w innych polach. To powyżej to tylko przykład. UUID to typ danych, bezpieczna implementacja wymaga wielu rzeczy (choćby powyższe porównanie lc/uc). Ale jako typ uuid może być indeksowany. Wyświetla literki, ale to uuid.
test=> insert into foo(foo_id, val) values('not uuid', 'baz'); ERROR: invalid input syntax for type uuid: "not uuid" LINE 1: insert into foo(foo_id, val) values('not uuid', 'baz'); Np. w Python też
@codeasap-pl: dzięki za info, ale ja to wiem xD Pytam o komercyjne przykłady rozwiązań dla wydajnego generowania i wykorzystania globalnych ID w dużych systemach rozproszonych, a nie czym jest uuid i gdzie go można zastosować.
@codeasap-pl: Tak, ale na pytałem o realne zastosowania z komercyjnych projektów. Np skrócone uuid można przechowywać jako bigint, niektóre identyfikatory konwertowane do base32 warto przechowywać jako binary. Chodzi mi o sprawdzone rozwiązania dużych systemów, a nie postawy sql.
Używacie standardowych UUID? Jakiej wersji?
Czy użycie może czegoś customowego? Jeżeli generujecie własny identyfikator to o co go opieracie? Jakiego jest rozmiaru i czy ma sumę kontrolną?
Może używacie jakichś gotowych rozwiązań typu twitterowy Snowflake?
W jaki sposób potem przechowujecie je w bazie? Jako text, binary czy konwertujecie do typów numerycznych? Chodzi mi głównie sql
Chętnie poznam jakieś triki zastosowane przy tworzeniu globalnych IDków
#programowanie #programista15k
$ psql --version
psql (PostgreSQL)
Z tego co widzę to jest UUIDv4. Nie macie problemów z fragmentacją indeksów?
test=> insert into foo(foo_id, val) values('not uuid', 'baz');
ERROR: invalid input syntax for type uuid: "not uuid"
LINE 1: insert into foo(foo_id, val) values('not uuid', 'baz');
Np. w Python też
Pytam o komercyjne przykłady rozwiązań dla wydajnego generowania i wykorzystania globalnych ID w dużych systemach rozproszonych, a nie czym jest uuid i gdzie go można zastosować.
Dzięki za chęci tak czy inaczej.
https://www.percona.com/blog/2019/11/22/uuids-are-popular-but-bad-for-performance-lets-discuss/
I tam w jednym z komentarzy jest też link do 2ndquadrant:
https://www.2ndquadrant.com/en/blog/sequential-uuid-generators/