Nano ID ਜਨਰੇਟਰ: ਕੀ ਇਸਨੂੰ UUID ਤੋਂ ਵੱਖਰਾ ਬਣਾਉਂਦਾ ਹੈ?
Nano ID ਜਨਰੇਟਰ ਇੱਕ ਅਜਿਹਾ ਸੰਦ ਹੈ ਜੋ Nano ID ਫਾਰਮੈਟ ਵਿੱਚ ਵਿਲੱਖਣ ਪਛਾਣਕਰਤਾ (identifiers) ਪੈਦਾ ਕਰਦਾ ਹੈ, ਜਿੱਥੇ ਤੁਸੀਂ ਲੰਬਾਈ ਅਤੇ ਅਕਸ਼ਰਾਂ ਦੇ ਸੈੱਟ ਨੂੰ ਖੁਦ ਨਿਰਧਾਰਤ ਕਰ ਸਕਦੇ ਹੋ। ਇਸ ਸੰਦ ਦੀ ਸਭ ਤੋਂ ਵੱਡੀ ਵਿਸ਼ੇਸ਼ਤਾ ਇਹ ਹੈ ਕਿ ਇਹ UUID (36 ਅੱਖਰ) ਜਾਂ ULID (26 ਅੱਖਰ) ਨਾਲੋਂ ਛੋਟੇ ਅਤੇ ਜ਼ਿਆਦਾ ਅਨੁਕੂਲਿਤ IDs ਪੈਦਾ ਕਰਦਾ ਹੈ।
ਜਦੋਂ ਕਿ UUIDs ਦੀ ਡਿਫਾਲਟ ਲੰਬਾਈ 36 ਅੱਖਰ ਹੁੰਦੀ ਹੈ, Nano ID ਦੀ ਡਿਫਾਲਟ ਲੰਬਾਈ 21 ਅੱਖਰ ਹੈ। 21 ਅੱਖਰਾਂ 'ਤੇ, Nano ID UUID ਨਾਲੋਂ 42% ਛੋਟਾ ਹੈ, ਪਰ ਫਿਰ ਵੀ ਟੱਕਰ (collision) ਪ੍ਰਤੀਰੋਧਕ ਸਮਰੱਥਾ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ। ਤੁਸੀਂ ਲੰਬਾਈ ਨੂੰ 2 ਤੋਂ 36 ਅੱਖਰ ਤੱਕ ਸੈੱਟ ਕਰ ਸਕਦੇ ਹੋ, ਅਤੇ ਅਕਸ਼ਰਾਂ ਦੇ ਸੈੱਟ (alphabet) ਨੂੰ ਵੀ ਪੂਰੀ ਤਰ੍ਹਾਂ ਆਪਣੀ ਮਰਜ਼ੀ ਨਾਲ ਬਦਲ ਸਕਦੇ ਹੋ।
ਇਹ ਸੰਦ URL-ਸੁਰੱਖਿਅਤ (URL-safe) ਅੱਖਰਾਂ ਨਾਲ IDs ਪੈਦਾ ਕਰਦਾ ਹੈ, ਜਿਸਦਾ ਮਤਲਬ ਹੈ ਕਿ ਇਹਨਾਂ ਵਿੱਚ _, -, ਜਾਂ ਨੰਬਰ 0-9 ਅਤੇ ਅੰਗਰੇਜ਼ੀ ਅੱਖਰ (a-z, A-Z) ਸ਼ਾਮਿਲ ਹੁੰਦੇ ਹਨ। ਜਦੋਂ ਤੁਸੀਂ ਲੰਬਾਈ ਜਾਂ ਅਕਸ਼ਰ ਸੈੱਟ ਬਦਲਦੇ ਹੋ, IDs ਤੁਰੰਤ ਮੁੜ-ਜਨਰੇਟ ਹੋ ਜਾਂਦੀਆਂ ਹਨ।
ਮੁੱਖ ਅੰਤਰ: Nano ID vs UUID
| ਵਿਸ਼ੇਸ਼ਤਾ | Nano ID | UUID |
|---|---|---|
| ਡਿਫਾਲਟ ਲੰਬਾਈ | 21 ਅੱਖਰ | 36 ਅੱਖਰ |
| ਘੱਟੋ-ਘੱਟ ਲੰਬਾਈ | 2 ਅੱਖਰ | 36 (ਫਿਕਸ) |
| ਵੱਧ ਤੋਂ ਵੱਧ ਲੰਬਾਈ | 36 ਅੱਖਰ | 36 (ਫਿਕਸ) |
| ਅਕਸ਼ਰ ਸੈੱਟ | URL-ਸੁਰੱਖਿਅਤ (ਡਿਫਾਲਟ) | 0-9, a-f (hex) |
| ਅਨੁਕੂਲਤਾ | ਪੂਰੀ ਤਰ੍ਹਾਂ ਅਨੁਕੂਲਿਤ | ਸਿਰਫ UUID ਵਰਜ਼ਨ |
Nano ID ਦੇ ਪੈਰਾਮੀਟਰ: ਲੰਬਾਈ, ਅਕਸ਼ਰ ਸੈੱਟ ਅਤੇ ਗਿਣਤੀ
1. ਲੰਬਾਈ (Length)
ਲੰਬਾਈ ਇੱਕ ਸਲਾਈਡਰ ਦੁਆਰਾ ਕੰਟਰੋਲ ਕੀਤੀ ਜਾਂਦੀ ਹੈ, ਜਿਸਦੀ ਰੇਂਜ 2 ਤੋਂ 36 ਹੈ। ਡਿਫਾਲਟ 21 'ਤੇ ਸੈੱਟ ਹੈ। ਜਦੋਂ ਤੁਸੀਂ ਸਲਾਈਡਰ ਹਿਲਾਉਂਦੇ ਹੋ, IDs ਤੁਰੰਤ ਮੁੜ-ਜਨਰੇਟ ਹੋ ਜਾਂਦੀਆਂ ਹਨ।
ਉਦਾਹਰਨ:
- ਲੰਬਾਈ 8:
a3Bc9XyZ - ਲੰਬਾਈ 21:
V1wLk9pQrXzUv3Mn5Fg7H - ਲੰਬਾਈ 36:
aBcDeFgHiJkLmNoPqRsTuVwXyZ0123456789
2. ਅਕਸ਼ਰ ਸੈੱਟ (Alphabet)
ਅਕਸ਼ਰ ਸੈੱਟ ਇੱਕ ਸੰਪਾਦਨਯੋਗ (editable) ਟੈਕਸਟ ਫੀਲਡ ਹੈ, ਜਿੱਥੇ ਤੁਸੀਂ ਕਿਸੇ ਵੀ ਅੱਖਰ (ਅੰਗਰੇਜ਼ੀ, ਨੰਬਰ, ਜਾਂ ਚਿੰਨ੍ਹ) ਨੂੰ ਸ਼ਾਮਿਲ ਕਰ ਸਕਦੇ ਹੋ। ਡਿਫਾਲਟ URL-ਸੁਰੱਖਿਅਤ ਅੱਖਰ ਹਨ: 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-
ਨਿਯਮ:
- ਅਕਸ਼ਰ ਸੈੱਟ ਵਿੱਚ ਘੱਟੋ-ਘੱਟ 2 ਵੱਖ-ਵੱਖ ਅੱਖਰ ਹੋਣੇ ਚਾਹੀਦੇ ਹਨ।
- ਜੇਕਰ ਸੈੱਟ ਵਿੱਚ ਸਿਰਫ 1 ਅੱਖਰ ਬਚਦਾ ਹੈ, ਤਾਂ ਨਤੀਜੇ ਸਾਫ਼ ਹੋ ਜਾਂਦੇ ਹਨ, ID ਗਿਣਤੀ 0 ਹੋ ਜਾਂਦੀ ਹੈ, ਅਤੇ "Copy all" ਬਟਨ ਅਸਮਰੱਥ (disabled) ਹੋ ਜਾਂਦਾ ਹੈ।
ਉਦਾਹਰਨ:
- ਸਿਰਫ ਨੰਬਰ:
0123456789 - ਸਿਰਫ ਵੱਡੇ ਅੱਖਰ:
ABCDEFGHIJKLMNOPQRSTUVWXYZ - ਸਿਰਫ ਛੋਟੇ ਅੱਖਰ:
abcdefghijklmnopqrstuvwxyz - ਮਿਸ਼ਰਤ:
abc123 - ਗਲਤ:
a(ਸਿਰਫ 1 ਅੱਖਰ)
3. ID ਗਿਣਤੀ (Count)
ਤੁਸੀਂ 1 ਤੋਂ 100 ਤੱਕ IDs ਪੈਦਾ ਕਰ ਸਕਦੇ ਹੋ। ਜਦੋਂ ਤੁਸੀਂ "Generate" ਬਟਨ ਦਬਾਉਂਦੇ ਹੋ, IDs ਦੀ ਸੂਚੀ ਦਿਖਾਈ ਦਿੰਦੀ ਹੈ, ਅਤੇ "IDs count" ਵਿੱਚ ਗਿਣਤੀ ਦਿਖਾਈ ਦਿੰਦੀ ਹੈ।
4. ID ਕਾਪੀ ਕਰਨਾ
- ਵਿਅਕਤੀਗਤ ID: ਕਿਸੇ ਵੀ ID 'ਤੇ ਕਲਿੱਕ ਕਰਕੇ ਉਸਨੂੰ ਕਲਿੱਪਬੋਰਡ 'ਤੇ ਕਾਪੀ ਕਰ ਸਕਦੇ ਹੋ।
- ਸਾਰੀਆਂ IDs: "Copy all" ਬਟਨ ਦਬਾਉਣ ਨਾਲ ਸਾਰੀਆਂ IDs ਨੂੰ ਇੱਕ ਵਾਰ ਵਿੱਚ ਕਾਪੀ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।
ਕਿੰਝ Nano ID ਕੰਮ ਕਰਦਾ ਹੈ: ਬ੍ਰਾਊਜ਼ਰ-ਆਧਾਰਿਤ ਰੈਂਡਮਨੈਸ
Nano ID ਜਨਰੇਟਰ crypto.getRandomValues API ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ, ਜੋ ਬ੍ਰਾਊਜ਼ਰ ਵਿੱਚ ਮੌਜੂਦ ਇੱਕ ਕ੍ਰਿਪਟੋਗ੍ਰਾਫਿਕ ਤੌਰ 'ਤੇ ਸੁਰੱਖਿਅਤ ਰੈਂਡਮ ਨੰਬਰ ਜਨਰੇਟਰ (CSPRNG) ਹੈ। ਇਹ API Web Cryptography API ਦਾ ਹਿੱਸਾ ਹੈ ਅਤੇ ਬ੍ਰਾਊਜ਼ਰ ਦੀ ਸੁਰੱਖਿਆ ਪ੍ਰਣਾਲੀ (security subsystem) ਤੋਂ ਅਸਲ-ਸਮੇਂ (real-time) ਵਿੱਚ ਰੈਂਡਮ ਨੰਬਰ ਪ੍ਰਾਪਤ ਕਰਦਾ ਹੈ।
ਪ੍ਰਕਿਰਿਆ:
- ਅਕਸ਼ਰ ਸੈੱਟ (alphabet) ਨੂੰ ਪਾਰਸ ਕੀਤਾ ਜਾਂਦਾ ਹੈ: ਉਪਭੋਗਤਾ ਦੁਆਰਾ ਦਿੱਤੇ ਗਏ ਅੱਖਰ ਸੈੱਟ ਤੋਂ ਇੱਕ ਅਰੇ (array) ਬਣਾਇਆ ਜਾਂਦਾ ਹੈ।
- ਲੰਬਾਈ (length) ਨੂੰ ਪੜ੍ਹਿਆ ਜਾਂਦਾ ਹੈ: ਸਲਾਈਡਰ ਤੋਂ ਚੁਣੀ ਗਈ ਲੰਬਾਈ।
- ਰੈਂਡਮ ਨੰਬਰ ਪੈਦਾ ਕੀਤੇ ਜਾਂਦੇ ਹਨ:
crypto.getRandomValues32-ਬਿੱਟ unsigned integers ਦੀ ਇੱਕ ਅਰੇ ਪੈਦਾ ਕਰਦਾ ਹੈ। - ID ਬਣਾਈ ਜਾਂਦੀ ਹੈ: ਹਰੇਕ ਰੈਂਡਮ ਨੰਬਰ ਨੂੰ alphabet ਦੇ ਸਾਈਜ਼ (size) ਨਾਲ ਮੌਡ (modulo) ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਨਤੀਜੇ ਵਜੋਂ alphabet ਵਿੱਚੋਂ ਇੱਕ ਅੱਖਰ ਚੁਣਿਆ ਜਾਂਦਾ ਹੈ। ਇਸ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ID ਦੀ ਲੰਬਾਈ ਜਿੰਨੀ ਵਾਰ ਦੁਹਰਾਇਆ ਜਾਂਦਾ ਹੈ।
ਉਦਾਹਰਨ:
- Alphabet:
abc(3 ਅੱਖਰ) - ਰੈਂਡਮ ਨੰਬਰ:
10,25,5 - ID:
c(10 % 3 = 1 → 'b'),a(25 % 3 = 1 → 'b'),c(5 % 3 = 2 → 'c') → ID:bbc
ਟੱਕਰ (Collision) ਦੀ ਸੰਭਾਵਨਾ: ਲੰਬਾਈ ਅਤੇ ਅਕਸ਼ਰ ਸੈੱਟ ਦਾ ਗਣਿਤ
Nano ID ਦੀ ਟੱਕਰ ਪ੍ਰਤੀਰੋਧਕ ਸਮਰੱਥਾ ਦਾ ਅੰਦਾਜ਼ਾ Entropy (ਅੰਦੁਆ) ਦੁਆਰਾ ਲਗਾਇਆ ਜਾਂਦਾ ਹੈ। Entropy = length × log2(alphabet_size)।
ਉਦਾਹਰਨ:
- UUID: 36 ਅੱਖਰ × log2(16) ≈ 36 × 4 = 144 bits
- Nano ID (21 ਅੱਖਰ, 64 ਅੱਖਰਾਂ ਦਾ alphabet): 21 × log2(64) ≈ 21 × 6 = 126 bits
- Nano ID (12 ਅੱਖਰ, 64 ਅੱਖਰਾਂ ਦਾ alphabet): 12 × 6 = 72 bits
- Nano ID (36 ਅੱਖਰ, 64 ਅੱਖਰਾਂ ਦਾ alphabet): 36 × 6 = 216 bits
ਟੱਕਰ ਦੀ ਸੰਭਾਵਨਾ (birthday problem):
- 126 bits 'ਤੇ (21 ਅੱਖਰ, 64 alphabet): 1 billion IDs ਪੈਦਾ ਕਰਨ 'ਤੇ ਟੱਕਰ ਦੀ ਸੰਭਾਵਨਾ 2^-119 ≈ 10^-36 ਤੋਂ ਵੀ ਘੱਟ ਹੈ।
- 72 bits 'ਤੇ (12 ਅੱਖਰ): 1 million IDs 'ਤੇ ਟੱਕਰ ਦੀ ਸੰਭਾਵਨਾ ≈ 0.001% (10^-5)
ਪ੍ਰੈਕਟੀਕਲ ਸਿਫਾਰਿਸ਼:
- 21 ਅੱਖਰ (ਡਿਫਾਲਟ): ਜ਼ਿਆਦਾਤਰ ਵੈਬ ਐਪਲੀਕੇਸ਼ਨਾਂ ਲਈ ਕਾਫੀ।
- 12 ਅੱਖਰ: ਛੋਟੇ IDs ਲਈ (ਜਿਵੇਂ URL shorteners), ਪਰ ਟੱਕਰ ਦੀ ਸੰਭਾਵਨਾ ਵਧ ਜਾਂਦੀ ਹੈ।
- 36 ਅੱਖਰ: UUID ਨੂੰ ਬਦਲਣ ਲਈ, 216 bits entropy।
ਪ੍ਰਾਈਵੇਸੀ ਅਤੇ ਸੁਰੱਖਿਆ: ਕੁਝ ਵੀ BroBroGo ਨੂੰ ਨਹੀਂ ਭੇਜਿਆ ਜਾਂਦਾ
Nano ID ਜਨਰੇਟਰ ਪੂਰੀ ਤਰ੍ਹਾਂ ਕਲਾਇੰਟ-ਸਾਈਡ (client-side) 'ਤੇ ਕੰਮ ਕਰਦਾ ਹੈ। ਇਸਦਾ ਮਤਲਬ ਹੈ:
- IDs ਸਿਰਫ ਤੁਹਾਡੇ ਬ੍ਰਾਊਜ਼ਰ ਵਿੱਚ ਪੈਦਾ ਹੁੰਦੀਆਂ ਹਨ।
- ਕੋਈ ਵੀ ID, alphabet, ਲੰਬਾਈ, ਜਾਂ ਗਿਣਤੀ BroBroGo ਸਰਵਰ ਨੂੰ ਨਹੀਂ ਭੇਜੀ ਜਾਂਦੀ।
- ਸਰਵਰ 'ਤੇ ਕੋਈ ਲੌਗ (log) ਜਾਂ ਵਿਸ਼ਲੇਸ਼ਣ (analytics) ਨਹੀਂ ਕੀਤਾ ਜਾਂਦਾ।
ਇਹ ਮਹੱਤਵਪੂਰਨ ਕਿਉਂ ਹੈ:
- ਜੇਕਰ ਤੁਸੀਂ ਗੁਪਤ (secret) IDs (ਜਿਵੇਂ API tokens) ਪੈਦਾ ਕਰ ਰਹੇ ਹੋ, ਤਾਂ ਕਲਾਇੰਟ-ਸਾਈਡ ਜਨਰੇਸ਼ਨ ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦੀ ਹੈ ਕਿ IDs ਸਰਵਰ 'ਤੇ ਕਿਤੇ ਵੀ ਸਟੋਰ ਨਹੀਂ ਹੁੰਦੀਆਂ।
- ਸੁਰੱਖਿਆ: BroBroGo ਕਿਸੇ ਵੀ ID, alphabet, ਜਾਂ ਲੰਬਾਈ ਨੂੰ ਸਟੋਰ ਨਹੀਂ ਕਰਦਾ।
- ਪਾਰਦਰਸ਼ਿਤਾ: IDs
crypto.getRandomValuesਤੋਂ ਆਉਂਦੀਆਂ ਹਨ, ਜੋ ਬ੍ਰਾਊਜ਼ਰ ਦਾ ਸੁਰੱਖਿਅਤ ਰੈਂਡਮ ਸਰੋਤ ਹੈ।
FAQs (ਆਮ ਸਵਾਲ)
1. Nano ID vs UUID: ਕਿਹੜਾ ਵਧੀਆ ਹੈ?
Nano ID (21 ਅੱਖਰ) UUID (36 ਅੱਖਰ) ਨਾਲੋਂ 42% ਛੋਟਾ ਹੈ, ਪਰ 126 bits entropy vs UUID ਦੇ 144 bits entropy। ਜੇਕਰ ਤੁਹਾਨੂੰ 1 billion IDs ਤੋਂ ਘੱਟ ਚਾਹੀਦੀਆਂ ਹਨ, Nano ID 21 ਅੱਖਰਾਂ 'ਤੇ ਕਾਫੀ ਹੈ। UUID ਸਿਰਫ 16-ਹੈਕਸ (0-9, a-f) alphabet ਤੱਕ ਸੀਮਤ ਹੈ।
2. ਮੈਂ alphabet ਵਿੱਚ ਕਿਹੜੇ ਅੱਖਰ ਪਾ ਸਕਦਾ/ਸਕਦੀ ਹਾਂ?
ਕੋਈ ਵੀ ASCII ਅੱਖਰ (0-9, a-z, A-Z, pun:ctuation !@#$%^&*()_+-=[]{}|;':",./<>?~), ਪਰ ਘੱਟੋ-ਘੱਟ 2 ਵੱਖ-ਵੱਖ ਅੱਖਰ ਹੋਣੇ ਚਾਹੀਦੇ ਹਨ। Non-ASCII (ਯੂਨੀਕੋਡ) ਅੱਖਰ ਕੰਮ ਨਹੀਂ ਕਰਨਗੇ।
3. ਮੈਨੂੰ ਕਿਹੜੀ ਲੰਬਾਈ ਚੁਣਨੀ ਚਾਹੀਦੀ ਹੈ?
- 8 ਅੱਖਰ: ਛੋਟੇ URL shorterners, QR codes (48 bits entropy)
- 12 ਅੱਖਰ: medium-sized systems (72 bits entropy)
- 21 ਅੱਖਰ: ਡਿਫਾਲਟ, ਜ਼ਿਆਦਾਤਰ ਐਪਾਂ ਲਈ (126 bits entropy)
- 36 ਅੱਖਰ: UUID replacement (216 bits entropy)
4. ਕੀ IDs ਯੂਨੀਕ (unique) ਹਨ?
IDs probabilistically unique ਹਨ, absolute unique ਨਹੀਂ। 21 ਅੱਖਰਾਂ 'ਤੇ, 1 billion IDs 'ਤੇ collision probability ≈ 2^-119 (ਅਸਲ ਵਿੱਚ 0)।
5. ਕੀ IDs crypto.getRandomValues 'ਤੇ ਨਿਰਭਰ ਹਨ?
ਹਾਂ, IDs crypto.getRandomValues (Web Cryptography API) 'ਤੇ ਆਧਾਰਿਤ ਹਨ, ਜੋ browser-native CSPRNG ਹੈ। ਇਹ Math.random() (pseudo-random) ਨਾਲੋਂ ਬੇਹੱਦ ਸੁਰੱਖਿਅਤ ਹੈ।
6. "Alphabet needs at least 2 different characters." ਗਲਤੀ ਕਦੋਂ ਦਿਖਾਈ ਦਿੰਦੀ ਹੈ?
ਜਦੋਂ alphabet ਵਿੱਚ ਸਿਰਫ 1 ਅੱਖਰ (ਜਿਵੇਂ a ਜਾਂ 0) ਬਚਦਾ ਹੈ, IDs 0 ਹੋ ਜਾਂਦੀਆਂ ਹਨ, "Copy all" disabled ਹੋ ਜਾਂਦਾ ਹੈ, ਅਤੇ ਇਹ error message ਦਿਖਾਈ ਦਿੰਦਾ ਹੈ।