UUID v7 ਜਨਰੇਟਰ

ਔਨਲਾਈਨ UUID v7 ਮੁੱਲ ਜਨਰੇਟ ਕਰੋ: ਸਮੇਂ ਅਨੁਸਾਰ ਕ੍ਰਮਬੱਧ ਕਰਨ ਯੋਗ UUID, ਜਿਸ ਵਿੱਚ 48-ਬਿੱਟ ਮਿਲੀਸਕਿੰਟ ਟਾਈਮਸਟੈਂਪ ਅਤੇ 74 ਰੈਂਡਮ ਬਿੱਟ ਹੁੰਦੇ ਹਨ।

ਫਾਰਮੈਟ
ਤਿਆਰ ਕੀਤੇ ਗਏ ID
ਤਿਆਰ ਹੈ। ਆਪਣੇ ਬ੍ਰਾਊਜ਼ਰ ਵਿੱਚ UUID v7 ਮੁੱਲ ਜਨਰੇਟ ਕਰੋ।

ਇਹ ID ਕਿਵੇਂ ਬਣਦੀ ਹੈ

ਲੇਆਉਟ
48-ਬਿੱਟ Unix ਮਿਲੀਸਕਿੰਟ ਟਾਈਮਸਟੈਂਪ, ਵਰਜਨ 7 ਬਿੱਟ, RFC ਵੇਰੀਐਂਟ ਬਿੱਟ ਅਤੇ ਰੈਂਡਮ ਫਿਲ।
ਐਂਟਰੌਪੀ (Entropy)
ਇਸ ਇੰਪਲੀਮੈਂਟੇਸ਼ਨ ਵਿੱਚ 74 ਰੈਂਡਮ ਬਿੱਟ; ਕੋਈ ਮੋਨੋਟੋਨਿਕ ਕਾਊਂਟਰ ਨਹੀਂ ਹੈ।
ਸਮਾਂ
ਹਾਂ। ਪਹਿਲੇ 48 ਬਿੱਟ ਬਣਾਉਣ ਦੇ ਸਮੇਂ ਨੂੰ ਐਨਕੋਡ ਕਰਦੇ ਹਨ, ਇਸ ਲਈ ID ਵੱਖ-ਵੱਖ ਮਿਲੀਸਕਿੰਟਾਂ ਵਿੱਚ ਸਮੇਂ ਦੇ ਅਨੁਸਾਰ ਕ੍ਰਮਬੱਧ ਹੁੰਦੇ ਹਨ।
ਟਕਰਾਅ ਦਾ ਜੋਖਮ (Collision risk)
ਇੱਕ ਮਿਲੀਸਕਿੰਟ ਦੇ ਅੰਦਰ, ਟਕਰਾਅ 74 ਰੈਂਡਮ ਬਿੱਟਾਂ 'ਤੇ ਨਿਰਭਰ ਕਰਦਾ ਹੈ; ਇੱਕੋ ਮਿਲੀਸਕਿੰਟ ਵਿੱਚ ਬਹੁਤ ਜ਼ਿਆਦਾ ਮਾਤਰਾ ਲਈ ਇੱਕ ਤਾਲਮੇਲ ਵਾਲੀ ID ਸੇਵਾ ਦੀ ਵਰਤੋਂ ਕਰਨੀ ਚਾਹੀਦੀ ਹੈ।
ਉਦਾਹਰਨ
01a044bc-5db1-762b-ad06-2e68435aa0d9

ਤੁਹਾਡੇ ID ਮਜ਼ਬੂਤ ਬ੍ਰਾਊਜ਼ਰ ਰੈਂਡਮਨੈੱਸ ਨਾਲ ਸਥਾਨਕ ਤੌਰ 'ਤੇ ਤਿਆਰ ਕੀਤੇ ਜਾਂਦੇ ਹਨ। BroBroGo ਨੂੰ ਕੁਝ ਵੀ ਨਹੀਂ ਭੇਜਿਆ ਜਾਂਦਾ।

ਅਕਸਰ ਪੁੱਛੇ ਜਾਣ ਵਾਲੇ ਸਵਾਲ

ਮੈਂ UUID v4 ਦੀ ਬਜਾਏ UUID v7 ਕਿਉਂ ਚੁਣਾਂ?

UUID v7, UUID ਦੇ ਆਕਾਰ ਨੂੰ ਬਣਾਈ ਰੱਖਦਾ ਹੈ ਪਰ ਸਮੇਂ ਦੇ ਅਨੁਸਾਰ ਕ੍ਰਮਬੱਧ ਹੁੰਦਾ ਹੈ, ਜੋ ਲੌਗਸ, ਡੇਟਾਬੇਸ ਇੰਡੈਕਸਾਂ ਅਤੇ ਇਵੈਂਟ ਸਟ੍ਰੀਮਾਂ ਨੂੰ ਲਗਭਗ ਕਾਲਕ੍ਰਮ ਅਨੁਸਾਰ ਰੱਖਣ ਵਿੱਚ ਮਦਦ ਕਰ ਸਕਦਾ ਹੈ।

ਕੀ UUID v7 ਬਣਾਉਣ ਦੇ ਸਮੇਂ ਨੂੰ ਲੁਕਾਉਂਦਾ ਹੈ?

ਨਹੀਂ। ਟਾਈਮਸਟੈਂਪ ID ਦਾ ਹਿੱਸਾ ਹੁੰਦਾ ਹੈ। ਜੇਕਰ ਤੁਹਾਨੂੰ ਸਮੇਂ ਦੇ ਡੇਟਾ ਤੋਂ ਬਿਨਾਂ ਇੱਕ ਅਪਾਰਦਰਸ਼ੀ ਆਈਡੈਂਟੀਫਾਇਰ ਦੀ ਲੋੜ ਹੈ ਤਾਂ UUID v4 ਜਾਂ NanoID ਦੀ ਵਰਤੋਂ ਕਰੋ।

UUID v7 ਜਨਰੇਟਰ ਪੰਨਾ

UUID v7 ਜਨਰੇਟਰ ਪੰਨਾ ਕੀ ਕਰਦਾ ਹੈ?

ਇਹ ਪੰਨਾ ਤੁਹਾਨੂੰ 1 ਤੋਂ 100 ਤੱਕ ਕੋਈ ਵੀ ਗਿਣਤੀ ਚੁਣਨ ਦਿੰਦਾ ਹੈ, ਨਾਲ ਹੀ ਕੁਝ ਪ੍ਰਦਰਸ਼ਨੀ ਤਰਜੀਹਾਂ (display preferences) ਸੈੱਟ ਕਰਨ ਦਿੰਦਾ ਹੈ, ਅਤੇ ਫਿਰ ਤੁਰੰਤ UUID v7 ਪਛਾਣਕਰਤਾਵਾਂ (identifiers) ਦੀ ਇੱਕ ਸੂਚੀ ਤਿਆਰ ਕਰ ਦਿੰਦਾ ਹੈ। ਇਹ ਪਛਾਣਕਰਤਾ 36-ਅੱਖਰਾਂ ਵਾਲੇ ਸਟ੍ਰਿੰਗ ਹੁੰਦੇ ਹਨ, ਜੋ ਸਮੇਂ ਦੇ ਹਿਸਾਬ ਨਾਲ ਕ੍ਰਮਬੱਧ (time-sorted) ਹੁੰਦੇ ਹਨ ਅਤੇ ਅਣਅੰਦਾਜ਼ੇ (unguessable) ਹੁੰਦੇ ਹਨ। ਤੁਸੀਂ ਹਰੇਕ ID ਨੂੰ ਵੱਖਰੇ ਤੌਰ 'ਤੇ ਜਾਂ ਸਾਰੀਆਂ ਨੂੰ ਇੱਕੋ ਵਾਰ ਕਲਿੱਪਬੋਰਡ 'ਤੇ ਕਾਪੀ ਕਰ ਸਕਦੇ ਹੋ।

ਇਹ ਟੂਲ ਪੂਰੀ ਤਰ੍ਹਾਂ ਬ੍ਰਾਊਜ਼ਰ ਵਿੱਚ ਹੀ ਕੰਮ ਕਰਦਾ ਹੈ – ਕੋਈ ਵੀ ਡਾਟਾ BroBroGo ਸਰਵਰ ਨੂੰ ਨਹੀਂ ਭੇਜਿਆ ਜਾਂਦਾ। UUID v7 ID ਬਣਾਉਣ ਲਈ ਬ੍ਰਾਊਜ਼ਰ ਦੀ ਮਜ਼ਬੂਤ ਬੇਤਰਤੀਬਤਾ (strong browser randomness) ਦੀ ਵਰਤੋਂ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਜਦੋਂ ਤੁਸੀਂ ਕੋਈ ਵੀ ਵਿਕਲਪ (ਗਿਣਤੀ, ਵੱਡੇ ਅੱਖਰ, ਹਾਈਫ਼ਨ) ਬਦਲਦੇ ਹੋ, ਤਾਂ ਸਾਰੀਆਂ ID ਤੁਰੰਤ ਮੁੜ-ਜਨਰੇਟ ਹੋ ਜਾਂਦੀਆਂ ਹਨ।

UUID v7 ਨੂੰ ਕਿਹੜੀ ਚੀਜ਼ ਵੱਖਰੀ ਬਣਾਉਂਦੀ ਹੈ?

UUID v7 ਆਪਣੇ ਸ਼ੁਰੂ ਵਿੱਚ 48-ਬਿੱਟ ਦਾ Unix ਮਿਲੀਸਕਿੰਟ ਸਮਾਂ-ਚਿੰਨ੍ਹ (timestamp) ਏਮਬੈੱਡ ਕਰਦਾ ਹੈ, ਅਤੇ ਉਸ ਤੋਂ ਬਾਅਦ ਬੇਤਰਤੀਬਤਾ (randomness) ਹੁੰਦੀ ਹੈ। ਇਸੇ ਕਰਕੇ ਇਹ ID ਬਣਨ ਦੇ ਸਮੇਂ ਅਨੁਸਾਰ ਘੜੀ-ਅਨੁਸਾਰ ਕ੍ਰਮਬੱਧ (chronologically sortable) ਹੁੰਦੀਆਂ ਹਨ। ਇਹ UUID v4 ਦੀ index locality ਸਮੱਸਿਆ ਨੂੰ ਹੱਲ ਕਰਦਾ ਹੈ, ਕਿਉਂਕਿ v4 ਵਿੱਚ ID ਪੂਰੀ ਤਰ੍ਹਾਂ ਬੇਤਰਤੀਬ ਹੁੰਦੀਆਂ ਹਨ ਅਤੇ ਡਾਟਾਬੇਸ B-ਟ੍ਰੀ ਇੰਡੈਕਸਾਂ ਵਿੱਚ ਫ੍ਰੈਗਮੈਂਟੇਸ਼ਨ ਪੈਦਾ ਕਰਦੀਆਂ ਹਨ।

ਜਦਕਿ UUID v4 ਕੇਵਲ 122 ਬਿੱਟ ਬੇਤਰਤੀਬਤਾ 'ਤੇ ਨਿਰਭਰ ਕਰਦਾ ਹੈ, v7 ਸਮਾਂ-ਚਿੰਨ੍ਹ + ਬੇਤਰਤੀਬਤਾ ਦਾ ਮਿਸ਼ਰਣ ਹੈ। ਇਹ ID ਕ੍ਰਿਪਟੋਗ੍ਰਾਫਿਕ ਤੌਰ 'ਤੇ ਅਣਅੰਦਾਜ਼ੇ (cryptographically unguessable) ਰਹਿੰਦੀਆਂ ਹਨ। UUID v7, ULID, ਅਤੇ NanoID ਵਰਗੇ ਹੋਰ ਫਾਰਮੈਟਾਂ ਤੋਂ ਵੱਖਰਾ ਹੈ – v7 36-ਅੱਖਰਾਂ ਦਾ ਸਟ੍ਰਿੰਗ ਹੈ ਜਿਸਦੇ ਪਹਿਲੇ ਅੱਖਰ ਸਮਾਂ-ਚਿੰਨ੍ਹ ਨੂੰ ਦਰਸਾਉਂਦੇ ਹਨ। ਪਰ ਇਹ ਉਸੇ ਮਿਲੀਸਕਿੰਟ ਵਿੱਚ ਪੈਦਾ ਹੋਈਆਂ ID ਲਈ ਸਖ਼ਤ ਕ੍ਰਮ (strict ordering) ਦੀ ਗਾਰੰਟੀ ਨਹੀਂ ਦਿੰਦਾ।

UUID v7 ਦਾ ਢਾਂਚਾ: ਸਮਾਂ-ਅਧਾਰਿਤ ਪਛਾਣਕਰਤਾ

UUID v7 128 ਬਿੱਟ (16 ਬਾਈਟ) ਦਾ ਇੱਕ ਪਛਾਣਕਰਤਾ ਹੈ, ਜਿਸ ਨੂੰ 36-ਅੱਖਰਾਂ ਦੇ ਟੈਕਸਟ ਰੂਪ ਵਿੱਚ ਦਰਸਾਇਆ ਜਾਂਦਾ ਹੈ। ਇਸਦਾ ਢਾਂਚਾ ਇਸ ਤਰ੍ਹਾਂ ਹੈ:

  • 48 ਬਿੱਟ (6 ਬਾਈਟ): Unix ਮਿਲੀਸਕਿੰਟ ਸਮਾਂ-ਚਿੰਨ੍ਹ – ਇਹ 1 ਜਨਵਰੀ 1970 (Unix epoch) ਤੋਂ ਬੀਤੇ ਮਿਲੀਸਕਿੰਟਾਂ ਦੀ ਗਿਣਤੀ ਹੈ।
  • 74 ਬਿੱਟ (9.25 ਬਾਈਟ): ਬੇਤਰਤੀਬ ਡਾਟਾ – ਇਹ ਕ੍ਰਿਪਟੋਗ੍ਰਾਫਿਕ ਤੌਰ 'ਤੇ ਸੁਰੱਖਿਅਤ ਬੇਤਰਤੀਬ ਬਿੱਟ ਹਨ।
  • 6 ਬਿੱਟ (0.75 ਬਾਈਟ): ਵਰਜਨ ਅਤੇ ਵੇਰੀਐਂਟ – UUID v7 ਲਈ ਵਰਜਨ 7 (0111) ਅਤੇ RFC 4122 ਵੇਰੀਐਂਟ (10xx)।

ਟੈਕਸਟ ਰੂਪ ਵਿੱਚ, UUID v7 ਇਸ ਤਰ੍ਹਾਂ ਦਿਖਾਈ ਦਿੰਦਾ ਹੈ: 018f2a3b-4c5d-7e8f-9a0b-1c2d3e4f5a6b। ਪਹਿਲੇ 12 ਅੱਖਰ (ਹਾਈਫ਼ਨਾਂ ਤੋਂ ਪਹਿਲਾਂ) ਸਮਾਂ-ਚਿੰਨ੍ਹ ਨੂੰ ਹੈਕਸਾਡੈਸੀਮਲ ਵਿੱਚ ਦਰਸਾਉਂਦੇ ਹਨ। ਜੇਕਰ ਹਾਈਫ਼ਨ ਬੰਦ ਕੀਤੇ ਜਾਣ, ਤਾਂ ਸਟ੍ਰਿੰਗ 018f2a3b4c5d7e8f9a0b1c2d3e4f5a6b ਵਰਗਾ ਬਣ ਜਾਂਦਾ ਹੈ। ਵੱਡੇ ਅੱਖਰਾਂ ਦੀ ਵਰਤੋਂ ਕਰਨ 'ਤੇ 018F2A3B-4C5D-7E8F-9A0B-1C2D3E4F5A6B ਬਣਦਾ ਹੈ।

ਸਮਾਂ-ਚਿੰਨ੍ਹ ਦੇ 48 ਬਿੱਟ ਲਗਭਗ 8,925 ਸਾਲਾਂ ਤੱਕ (2^48 ਮਿਲੀਸਕਿੰਟ) ਕਾਫ਼ੀ ਹਨ। ਇਸ ਤਰ੍ਹਾਂ, UUID v7 2100 ਦੇ ਦਹਾਕੇ ਤੱਕ ਵੀ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਹੈ। ਉਸੇ ਮਿਲੀਸਕਿੰਟ ਵਿੱਚ ਕਈ ID ਪੈਦਾ ਹੋ ਸਕਦੀਆਂ ਹਨ, ਕਿਉਂਕਿ ਬੇਤਰਤੀਬ ਹਿੱਸਾ 74 ਬਿੱਟ (ਲਗਭਗ 1.9 × 10^22 ਸੰਭਾਵਨਾਵਾਂ) ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ, ਜਿਸ ਨਾਲ ਟਕਰਾਅ (collision) ਦੀ ਸੰਭਾਵਨਾ ਬਹੁਤ ਘੱਟ ਹੈ।

ਇਨਪੁਟ ਅਤੇ ਆਉਟਪੁਟ: ਸੈਟਿੰਗਾਂ ਅਤੇ ਨਤੀਜੇ

ਇਸ ਟੂਲ ਵਿੱਚ ਤਿੰਨ ਮੁੱਖ ਇਨਪੁਟ ਹਨ:

ਇਨਪੁਟ ਵੇਰਵਾ ਡੀਫਾਲਟ ਮੁੱਲ
ਫਾਰਮੈਟ UUID v7 (ਇਸ ਪੰਨੇ 'ਤੇ ਸਿਰਫ਼ v7) UUID v7
ਗਿਣਤੀ (Count) 1 ਤੋਂ 100 ਤੱਕ 1
ਵੱਡੇ ਅੱਖਰ (Uppercase) UUID ਨੂੰ ਵੱਡੇ ਅੱਖਰਾਂ ਵਿੱਚ ਦਿਖਾਉਣਾ ਹੈ? ਬੰਦ (off)
ਹਾਈਫ਼ਨ ਸ਼ਾਮਲ ਕਰੋ (Include hyphens) UUID ਵਿੱਚ ਹਾਈਫ਼ਨ (-) ਸ਼ਾਮਲ ਕਰਨੇ ਹਨ? ਚਾਲੂ (on)

ਆਉਟਪੁਟ ਵਿੱਚ ਹੇਠ ਲਿਖੀਆਂ ਚੀਜ਼ਾਂ ਸ਼ਾਮਲ ਹੁੰਦੀਆਂ ਹਨ:

  • UUID v7 ID ਦੀ ਸੂਚੀ (ਹਰੇਕ 36-ਅੱਖਰਾਂ ਦਾ ਸਟ੍ਰਿੰਗ, ਸੈਟਿੰਗਾਂ ਅਨੁਸਾਰ)
  • ID ਗਿਣਤੀ (count) – ਦੱਸਦਾ ਹੈ ਕਿ ਕਿੰਨੀਆਂ ID ਬਣਾਈਆਂ ਗਈਆਂ
  • “Ready.” (ਤਿਆਰ) – ਜਦੋਂ ਪੰਨਾ ਲੋਡ ਹੁੰਦਾ ਹੈ
  • “Generated.” (ਜਨਰੇਟ ਹੋ ਗਿਆ) – ਜਦੋਂ ID ਬਣ ਜਾਂਦੀਆਂ ਹਨ
  • “Copied all!” (ਸਾਰੀਆਂ ਕਾਪੀ) – ਜਦੋਂ ਸਾਰੀਆਂ ID ਕਲਿੱਪਬੋਰਡ 'ਤੇ ਕਾਪੀ ਹੋ ਜਾਂਦੀਆਂ ਹਨ
  • ਕਿਸੇ ਇੱਕ ID 'ਤੇ ਕਲਿੱਕ ਕਰਨ ਨਾਲ ਉਹ ਇੱਕਲੀ ID ਕਲਿੱਪਬੋਰਡ 'ਤੇ ਕਾਪੀ ਹੋ ਜਾਂਦੀ ਹੈ

ਹਰ ਵਾਰ ਜਦੋਂ ਤੁਸੀਂ ਕੋਈ ਵੀ ਵਿਕਲਪ ਬਦਲਦੇ ਹੋ (ਗਿਣਤੀ, ਵੱਡੇ ਅੱਖਰ, ਹਾਈਫ਼ਨ), ਤਾਂ ID ਤੁਰੰਤ ਮੁੜ-ਜਨਰੇਟ ਹੋ ਜਾਂਦੀਆਂ ਹਨ। ਇਹ ਸੁਨਿਸ਼ਚਿਤ ਕਰਦਾ ਹੈ ਕਿ ਤੁਹਾਨੂੰ ਹਮੇਸ਼ਾ ਤਾਜ਼ਾ ID ਮਿਲਦੀਆਂ ਹਨ।

ਨਿਯਮ ਅਤੇ ਸੀਮਾਵਾਂ: ਕੀ ਧਿਆਨ ਰੱਖਣਾ ਚਾਹੀਦਾ ਹੈ?

UUID v7 ਦੀ ਮੁੱਖ ਸੀਮਾ ਇਹ ਹੈ ਕਿ ਇਹ ਉਸੇ ਮਿਲੀਸਕਿੰਟ ਵਿੱਚ ਪੈਦਾ ਹੋਈਆਂ ID ਲਈ ਸਖ਼ਤ ਕ੍ਰਮ (strict ordering) ਦੀ ਗਾਰੰਟੀ ਨਹੀਂ ਦਿੰਦਾ। ਜੇਕਰ ਤੁਸੀਂ ਇੱਕੋ ਮਿਲੀਸਕਿੰਟ ਵਿੱਚ ਕਈ ID ਬਣਾਉਂਦੇ ਹੋ, ਤਾਂ ਉਹਨਾਂ ਦਾ ਕ੍ਰਮ ਬੇਤਰਤੀਬ ਹੋਵੇਗਾ (ਕਿਉਂਕਿ ਬਾਕੀ 74 ਬਿੱਟ ਬੇਤਰਤੀਬ ਹਨ)। ਇਹੀ ਗੱਲ ULID 'ਤੇ ਵੀ ਲਾਗੂ ਹੁੰਦੀ ਹੈ। ਦੂਜੇ ਪਾਸੇ, UUID v4 (ਜੋ ਪੂਰੀ ਤਰ੍ਹਾਂ ਬੇਤਰਤੀਬ ਹੈ) ਕੋਲ ਸਮਾਂ-ਅਨੁਸਾਰ ਕ੍ਰਮ ਦਾ ਕੋਈ ਗੁਣ ਨਹੀਂ ਹੈ।

ਕੁਝ ਹੋਰ ਮਹੱਤਵਪੂਰਨ ਨਿਯਮ:

  • ਗਿਣਤੀ 1 ਤੋਂ 100 ਤੱਕ ਹੀ ਹੋ ਸਕਦੀ ਹੈ – ਇਸ ਤੋਂ ਵੱਧ ID ਬਣਾਉਣ ਲਈ ਤੁਹਾਨੂੰ ਕਈ ਵਾਰ ਕਰਨਾ ਪਵੇਗਾ।
  • ਸਾਰੀਆਂ ID ਬ੍ਰਾਊਜ਼ਰ ਵਿੱਚ ਹੀ ਬਣਦੀਆਂ ਹਨ – ਕੋਈ ਵੀ ਡਾਟਾ ਸਰਵਰ ਨੂੰ ਨਹੀਂ ਭੇਜਿਆ ਜਾਂਦਾ, ਜੋ ਪਰਦੇਦਾਰੀ (privacy) ਲਈ ਲਾਭਦਾਇਕ ਹੈ।
  • ਹਾਈਫ਼ਨ ਬੰਦ ਕਰਨ ਨਾਲ 32-ਅੱਖਰਾਂ ਦਾ ਸਟ੍ਰਿੰਗ ਬਣਦਾ ਹੈ – ਇਹ UUID ਦਾ ਕੈਨੋਨੀਕਲ (standard) ਰੂਪ ਨਹੀਂ ਹੈ, ਪਰ ਕੁਝ ਸਿਸਟਮਾਂ ਵਿੱਚ ਸਟੋਰੇਜ ਲਈ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਹੈ।
  • ਵੱਡੇ ਅੱਖਰ (uppercase) UUID ਦਾ RFC 4122 ਮੁਤਾਬਕ ਗੈਰ-ਸਟੈਂਡਰਡ ਰੂਪ ਹੈ – ਆਮ ਤੌਰ 'ਤੇ UUID ਛੋਟੇ ਅੱਖਰਾਂ ਵਿੱਚ ਲਿਖਿਆ ਜਾਂਦਾ ਹੈ, ਪਰ ਕੁਝ ਡਾਟਾਬੇਸ ਜਾਂ API ਵੱਡੇ ਅੱਖਰਾਂ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹਨ।
  • UUID v4 vs v7: ਟਕਰਾਅ ਦੀ ਸੰਭਾਵਨਾ – v4 (122 ਬਿੱਟ ਬੇਤਰਤੀਬ) ਨਾਲੋਂ v7 (74 ਬਿੱਟ ਬੇਤਰਤੀਬ) ਵਿੱਚ ਟਕਰਾਅ ਦੀ ਸੰਭਾਵਨਾ ਥੋੜ੍ਹੀ ਜ਼ਿਆਦਾ ਹੁੰਦੀ ਹੈ, ਪਰ ਫਿਰ ਵੀ ਬਹੁਤ ਘੱਟ ਹੈ। ਉਦਾਹਰਨ ਲਈ, 2^37 ID ਬਣਾਉਣ 'ਤੇ 50% ਟਕਰਾਅ ਦੀ ਸੰਭਾਵਨਾ v4 ਲਈ 2^61 ID ਅਤੇ v7 ਲਈ 2^37 ID 'ਤੇ ਆਉਂਦੀ ਹੈ।

ਕੌਣ ਇਸ ਟੂਲ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ?

ਇਹ ਟੂਲ ਖਾਸ ਤੌਰ 'ਤੇ ਉਹਨਾਂ ਡਿਵੈਲਪਰਾਂ ਲਈ ਹੈ ਜੋ ਵਿਤਰਿਤ ਸਿਸਟਮ (distributed systems) ਬਣਾਉਂਦੇ ਹਨ, ਜਿੱਥੇ ਮੁੱਢਲੀ ਕੁੰਜੀ (primary key) ਵਜੋਂ ਸਮਾਂ-ਅਨੁਸਾਰ ਕ੍ਰਮਬੱਧ ID ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ। ਇਹ ਡਾਟਾਬੇਸ ਪ੍ਰਸ਼ਾਸਕਾਂ (DBAs) ਲਈ ਵੀ ਲਾਭਦਾਇਕ ਹੈ, ਜੋ UUID v4 ਦੇ ਕਾਰਨ B-ਟ੍ਰੀ ਇੰਡੈਕਸਾਂ ਵਿੱਚ ਹੋਣ ਵਾਲੇ ਫ੍ਰੈਗਮੈਂਟੇਸ਼ਨ ਤੋਂ ਬਚਣਾ ਚਾਹੁੰਦੇ ਹਨ।

ਕੁਝ ਖਾਸ ਵਰਤੋਂ-ਕੇਸ:

  • ਇਵੈਂਟ ਸੋਰਸਿੰਗ (Event Sourcing) – ਜਿੱਥੇ ਹਰੇਕ ਇਵੈਂਟ ਦਾ ਆਪਣਾ ID ਹੁੰਦਾ ਹੈ ਅਤੇ ਇਵੈਂਟਾਂ ਨੂੰ ਕਾਲਕ੍ਰਮ ਅਨੁਸਾਰ (chronologically) ਛਾਂਟਣਾ ਜ਼ਰੂਰੀ ਹੁੰਦਾ ਹੈ।
  • ਆਡਿਟ ਟ੍ਰੇਲ (Audit Trails) – ਸੁਰੱਖਿਆ-ਸੰਵੇਦਨਸ਼ੀਲ ਐਪਲੀਕੇਸ਼ਨਾਂ ਵਿੱਚ ਲੈਣ-ਦੇਣ (transactions) ਨੂੰ ਸਮੇਂ ਅਨੁਸਾਰ ਰਿਕਾਰਡ ਕਰਨਾ।
  • ਮੈਸੇਜਿੰਗ ਸਿਸਟਮ – ਜਿੱਥੇ ਸੁਨੇਹਿਆਂ (messages) ਨੂੰ ਪ੍ਰਾਪਤ ਕਰਨ ਦੇ ਕ੍ਰਮ ਵਿੱਚ ਪ੍ਰੋਸੈੱਸ ਕਰਨ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ।
  • ਮਾਈਗ੍ਰੇਸ਼ਨ (Migration) UUID v4 ਤੋਂ v7 – ਪੁਰਾਣੇ ਸਿਸਟਮਾਂ ਨੂੰ ਸੁਧਾਰਨ ਲਈ, ਤਾਂ ਕਿ ਡਾਟਾਬੇਸ ਪ੍ਰਦਰਸ਼ਨ ਵਿੱਚ ਸੁਧਾਰ ਹੋ ਸਕੇ।

ਸੁਰੱਖਿਆ-ਸਚੇਤ (security-conscious) ਇੰਜੀਨੀਅਰ ਇਸਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹਨ ਕਿਉਂਕਿ UUID v7 ਦਾ ਬੇਤਰਤੀਬ ਹਿੱਸਾ ਕ੍ਰਿਪਟੋਗ੍ਰਾਫਿਕ ਤੌਰ 'ਤੇ ਮਜ਼ਬੂਤ ਹੈ, ਭਾਵ ID ਦਾ ਅੰਦਾਜ਼ਾ ਲਗਾਉਣਾ ਬਹੁਤ ਮੁਸ਼ਕਲ ਹੈ। ਇਹ SQL ਇਨਜੈਕਸ਼ਨ ਜਾਂ ID-ਅਧਾਰਿਤ ਹਮਲਿਆਂ ਤੋਂ ਬਚਾਅ ਵਿੱਚ ਮਦਦ ਕਰਦਾ ਹੈ।

UUID v7 ਬਨਾਮ UUID v4: ਤੁਲਨਾ

ਇੱਥੇ UUID v7 ਅਤੇ UUID v4 ਵਿਚਕਾਰ ਮੁੱਖ ਅੰਤਰ ਦੱਸੇ ਗਏ ਹਨ:

ਵਿਸ਼ੇਸ਼ਤਾ UUID v4 UUID v7
ਬਿੱਟ ਢਾਂਚਾ 122 ਬਿੱਟ ਬੇਤਰਤੀਬ + 6 ਬਿੱਟ ਵਰਜਨ/ਵੇਰੀਐਂਟ 48 ਬਿੱਟ ਸਮਾਂ-ਚਿੰਨ੍ਹ + 74 ਬਿੱਟ ਬੇਤਰਤੀਬ + 6 ਬਿੱਟ ਵਰਜਨ/ਵੇਰੀਐਂਟ
ਕ੍ਰਮ ਪੂਰੀ ਤਰ੍ਹਾਂ ਬੇਤਰਤੀਬ ਸਮਾਂ-ਅਨੁਸਾਰ (ਉਸੇ ਮਿਲੀਸਕਿੰਟ ਵਿੱਚ ਬੇਤਰਤੀਬ)
ਇੰਡੈਕਸ ਲੋਕੈਲਿਟੀ ਮਾੜੀ – B-ਟ੍ਰੀ ਵਿੱਚ ਫ੍ਰੈਗਮੈਂਟੇਸ਼ਨ ਚੰਗੀ – ਨਵੀਆਂ ID ਇੰਡੈਕਸ ਦੇ ਸਿਰੇ 'ਤੇ ਜਾਂਦੀਆਂ ਹਨ
ਟਕਰਾਅ ਸੰਭਾਵਨਾ 2^61 ID 'ਤੇ 50% 2^37 ID 'ਤੇ 50%
ਸਟ੍ਰਿੰਗ ਲੰਬਾਈ 36 ਅੱਖਰ (ਹਾਈਫ਼ਨ ਸਮੇਤ) 36 ਅੱਖਰ (ਹਾਈਫ਼ਨ ਸਮੇਤ)
RFC ਸਟੈਂਡਰਡ RFC 4122 RFC 9562 (v7)
ਕ੍ਰਿਪਟੋਗ੍ਰਾਫਿਕ ਤਾਕਤ ਮਜ਼ਬੂਤ (122 ਬਿੱਟ) ਮਜ਼ਬੂਤ (74 ਬਿੱਟ)
ਬਣਾਉਣ ਦਾ ਤਰੀਕਾ ਪੂਰੀ ਤਰ੍ਹਾਂ ਬੇਤਰਤੀਬ ਸਮਾਂ + ਬੇਤਰਤੀਬ

ਇਸ ਤੁਲਨਾ ਤੋਂ ਸਪੱਸ਼ਟ ਹੈ ਕਿ UUID v7 ਖਾਸ ਤੌਰ 'ਤੇ ਉਦੋਂ ਲਾਭਦਾਇਕ ਹੈ ਜਦੋਂ ਤੁਹਾਨੂੰ ID ਦੀ ਅਣਅੰਦਾਜ਼ਾਪਣ (unguessability) ਦੇ ਨਾਲ-ਨਾਲ ਸਮਾਂ-ਅਨੁਸਾਰ ਕ੍ਰਮ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ। ਜੇਕਰ ਤੁਹਾਡੇ ਕੋਲ ਛੋਟਾ ਡਾਟਾਬੇਸ ਹੈ ਜਾਂ ID ਨੂੰ ਛਾਂਟਣ ਦੀ ਕੋਈ ਲੋੜ ਨਹੀਂ, ਤਾਂ UUID v4 ਕਾਫ਼ੀ ਹੋ ਸਕਦਾ ਹੈ। ਪਰ ਵੱਡੇ, ਵਿਤਰਿਤ ਸਿਸਟਮਾਂ ਲਈ v7 ਇੰਡੈਕਸ ਪ੍ਰਦਰਸ਼ਨ ਨੂੰ ਮਹੱਤਵਪੂਰਨ ਤੌਰ 'ਤੇ ਸੁਧਾਰ ਸਕਦਾ ਹੈ।

FAQ (ਆਮ ਪੁੱਛੇ ਜਾਣ ਵਾਲੇ ਸਵਾਲ)

1. ਕੀ UUID v7 ID ਕਦੇ ਟਕਰਾ ਸਕਦੀਆਂ ਹਨ? ਹਾਂ, ਪਰ ਸੰਭਾਵਨਾ ਬਹੁਤ ਘੱਟ ਹੈ। 74 ਬਿੱਟ ਬੇਤਰਤੀਬਤਾ ਨਾਲ, 2^37 ID (ਲਗਭਗ 137 ਬਿਲੀਅਨ) ਬਣਾਉਣ 'ਤੇ 50% ਸੰਭਾਵਨਾ ਹੈ ਕਿ ਇੱਕ ਟਕਰਾਅ ਹੋਵੇ। ਅਭਿਆਸ ਵਿੱਚ, ਜ਼ਿਆਦਾਤਰ ਸਿਸਟਮਾਂ ਲਈ ਇਹ ਕਾਫ਼ੀ ਸੁਰੱਖਿਅਤ ਹੈ।

2. ਕੀ UUID v7 ID ਬਣਾਉਣ ਲਈ ਇੰਟਰਨੈੱਟ ਕਨੈਕਸ਼ਨ ਦੀ ਲੋੜ ਹੈ? ਨਹੀਂ। ਸਾਰੀ ਪ੍ਰਕਿਰਿਆ ਤੁਹਾਡੇ ਬ੍ਰਾਊਜ਼ਰ ਵਿੱਚ ਹੁੰਦੀ ਹੈ। ID ਬਣਾਉਣ ਲਈ ਕੋਈ ਸਰਵਰ ਕਾਲ ਨਹੀਂ ਕੀਤੀ ਜਾਂਦੀ।

3. UUID v7 ਅਤੇ ULID ਵਿੱਚ ਕੀ ਅੰਤਰ ਹੈ? ULID 26-ਅੱਖਰਾਂ ਦਾ ਸਟ੍ਰਿੰਗ ਹੈ (Crockford Base32), ਜਦਕਿ UUID v7 36-ਅੱਖਰਾਂ ਦਾ ਹੈ। ULID ਉਸੇ ਮਿਲੀਸਕਿੰਟ ਵਿੱਚ ਵੀ ਕ੍ਰਮਬੱਧ ਹੁੰਦਾ ਹੈ (ਕਿਉਂਕਿ ਇਹ ਬੇਤਰਤੀਬ ਹਿੱਸੇ ਨੂੰ ਵਧਦੇ ਕ੍ਰਮ ਵਿੱਚ ਵਰਤਦਾ ਹੈ), ਜਦਕਿ UUID v7 ਅਜਿਹੀ ਗਾਰੰਟੀ ਨਹੀਂ ਦਿੰਦਾ। ULID ਟੈਕਸਟ ਵਿੱਚ ਛੋਟਾ ਹੁੰਦਾ ਹੈ, ਪਰ UUID v7 RFC ਸਟੈਂਡਰਡ ਹੈ ਅਤੇ ਵਧੇਰੇ ਸਿਸਟਮਾਂ ਦੁਆਰਾ ਸਮਰਥਿਤ ਹੈ।

4. ਕੀ ਮੈਂ UUID v7 ID ਨੂੰ UUID v4 ਵਾਂਗ ਵਰਤ ਸਕਦਾ/ਸਕਦੀ ਹਾਂ? ਹਾਂ, ਕਿਉਂਕਿ ਦੋਵੇਂ 128-ਬਿੱਟ ਪਛਾਣਕਰਤਾ ਹਨ ਅਤੇ 36-ਅੱਖਰਾਂ ਦੇ ਸਟ੍ਰਿੰਗ ਵਿੱਚ ਪ੍ਰਦਰਸ਼ਿਤ ਹੁੰਦੇ ਹਨ। ਜ਼ਿਆਦਾਤਰ ਡਾਟਾਬੇਸ ਅਤੇ ਪ੍ਰੋਗਰਾਮਿੰਗ ਭਾਸ਼ਾਵਾਂ UUID v7 ਨੂੰ ਬਿਨਾਂ ਕਿਸੇ ਬਦਲਾਅ ਦੇ ਸਵੀਕਾਰ ਕਰ ਲੈਂਦੀਆਂ ਹਨ।

5. UUID v7 ਵਿੱਚ ਹਾਈਫ਼ਨਾਂ ਦਾ ਕੀ ਮਹੱਤਵ ਹੈ? ਹਾਈਫ਼ਨ UUID ਦੇ ਕੈਨੋਨੀਕਲ ਰੂਪ (8-4-4-4-12) ਨੂੰ ਸੰਭਾਲਦੇ ਹਨ, ਜੋ RFC 4122 ਦੁਆਰਾ ਪਰਿਭਾਸ਼ਿਤ ਹੈ। ਇਹ ਪੜ੍ਹਨ ਅਤੇ ਪਾਰਸ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰਦੇ ਹਨ। ਜੇਕਰ ਤੁਸੀਂ ਹਾਈਫ਼ਨ ਬੰਦ ਕਰਦੇ ਹੋ, ਤਾਂ ID 32-ਅੱਖਰਾਂ ਦਾ ਸਟ੍ਰਿੰਗ ਬਣ ਜਾਂਦੀ ਹੈ, ਜੋ ਕੁਝ ਸਿਸਟਮਾਂ (ਜਿਵੇਂ MySQL) ਵਿੱਚ ਸਟੋਰ ਕਰਨਾ ਆਸਾਨ ਹੁੰਦਾ ਹੈ।

6. ਕੀ ਇਹ ਟੂਲ 100 ਤੋਂ ਵੱਧ ID ਬਣਾ ਸਕਦਾ ਹੈ? ਨਹੀਂ, ਇਸ ਪੰਨੇ 'ਤੇ ਅਧਿਕਤਮ 100 ID ਦੀ ਇਜਾਜ਼ਤ ਹੈ। ਜੇਕਰ ਤੁਹਾਨੂੰ ਵੱਧ ID ਦੀ ਲੋੜ ਹੈ, ਤਾਂ ਤੁਸੀਂ ਕਈ ਵਾਰ ID ਬਣਾ ਸਕਦੇ ਹੋ ਜਾਂ ਹੋਰ ਟੂਲ/API ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹੋ।