Why?
UUID1์ ์๊ฐ์ ์ฃผ๊ธด ํ์ง๋ง, ์คํํ๋ ์ฅ๋น์ mac ์ฃผ์๊ฐ ๋
ธ์ถ๋๋ค๋ ์ & Multiprocessing ์ฌ์ฉ์ UUID ์์๊ฐ ์ค์ time ์์์ ๊ฐ์ง ์์์ ์๋ค๋ ์ ์ด ์ด์๊ฐ ์๋ค.
Ordered UUID๋ ๊ธฐ๋ณธ์ ์ผ๋ก random mac ์ฃผ์ ๊ธฐ๋ฐ์ UUID1์ ์ฌ์ฉํ๊ณ , ๋์ค๋ ํ์์ UUID4 ํ์์ผ๋ก ๋์ Django์ UUID Field์ ๊ถํฉ์ด ๋ง๊ฒ ์ฌ์ฉํ ์ ์๋ค.
ํนํ, ์ด๋ ๊ฒ Time-๊ธฐ๋ฐ Ordered UUID๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ์, Primary Key๋ก ํด๋น Column์ ์ฌ์ฉํด์ฃผ๋ฉด ๋ณ๋ค๋ฅธ 1,2,3..์ ๊ฐ์ ordered pk ์์ด๋ ์๊ฐ์์ผ๋ก ์ ๋ ฌ์ด ๊ฐ๋ฅํ๋ค๋ ์ ์์ ์๋ฏธ๊ฐ ์๋ค.
ย
๋ค๋ง, ์ด๋ฌํ Time based UUID๋ ์๊ฐ์ด ๊ฒน์น๋ ๋ถ๋ถ์์ ๊ณตํต์ธ ๋ถ๋ถ์ด ์์ด์, API Key๋ฑ์ผ๋ก ์ฌ์ฉํ๋ฉด ์๋๋ค.
ย
OrderedUUID
์ค์น
pip install ordereduuid
์ฌ์ฉ
from ordereduuid import OrderedUUID uuid = OrderedUUID()
from ordereduuid import OrderedUUID uid = OrderedUUID() uid = "-".join(str(uid).split("-")[:2]) print(f"{uid=}") # ์๊ฐ๋ถ๋ถ+UID์ผ๋ถ
Django ์์์ ์ฌ์ฉ
from django.db import models from ordereduuid import OrderedUUID class Subscriber(models.Model): uid = models.UUIDField( primary_key=True, default=OrderedUUID, editable=False )
ย
TimeFlake
timeflake
anthonynsimon โข Updated Sep 15, 2022
์ค์น
pip install timeflake
์ฌ์ฉ
import timeflake # Create a random Timeflake flake = timeflake.random() >>> Timeflake(base62='00mx79Rjxvfgr8qat2CeQDs') # Get the base62, int, hex or bytes representation flake.base62 >>> '00mx79Rjxvfgr8qat2CeQDs' flake.hex >>> '016fa936bff0997a0a3c428548fee8c9' flake.int >>> 1909005012028578488143182045514754249 flake.bytes >>> b'\x01o\xa96\xbf\xf0\x99z\n<B\x85H\xfe\xe8\xc9' # Convert to the standard library's UUID type flake.uuid >>> UUID('016fa936-bff0-997a-0a3c-428548fee8c9')
Django์์์ ์ฌ์ฉ
from timeflake.extensions.django import TimeflakePrimaryKeyBinary class Item(models.Model): item_id = TimeflakePrimaryKeyBinary() # ...
ย