Splync ਸੰਵੇਦਨਸ਼ੀਲ IDs ਲਈ ਦੋ ਆਈਡੈਂਟੀਫਾਇਰ ਵਰਤਦਾ ਹੈ
Splync ਦੇ ਡਾਟਾਬੇਸ ਵਿੱਚ, ਹਰ ਯੂਜ਼ਰ ਅਤੇ ਹਰ ਪ੍ਰੋਜੈਕਟ ਨੂੰ ਦੋ ਵੱਖਰੇ IDs ਨਾਲ ਪਛਾਣਿਆ ਜਾਂਦਾ ਹੈ: ਇੱਕ UUID ਅਤੇ ਇੱਕ ਆਟੋ-ਇੰਕਰੀਮੈਂਟਿਡ ਇੰਟੇਜਰ। ਆਟੋ-ਇੰਕਰੀਮੈਂਟਿਡ ਇੰਟੇਜਰ ਇੱਕ ਸਾਧਾਰਣ ਗਿਣਤੀ ਹੈ: 1, 2, 3 ਅਤੇ ਇਸੇ ਤਰ੍ਹਾਂ। ਇਹ ਆਸਾਨ, ਤੇਜ਼ ਅਤੇ ਜੋੜਾਂ ਲਈ ਕੁਸ਼ਲ ਹਨ, ਇਸ ਲਈ Splync ਇਹਨਾਂ ਨੂੰ ਸਰਵਰ ਡਾਟਾਬੇਸ ਵਿੱਚ ਲਗਭਗ ਹਰ ਟੇਬਲ ਨੂੰ ਮੈਨੇਜ ਕਰਨ ਲਈ ਵਰਤਦਾ ਹੈ। ਹਾਲਾਂਕਿ, ਅਸੀਂ ਇਹ ਅੰਦਰੂਨੀ ਨੰਬਰ ਐਪ ਨੂੰ ਨਹੀਂ ਦਿਖਾਉਂਦੇ। ਉਦਾਹਰਣ ਲਈ, ਜੇ ਤੁਸੀਂ 42ਵੇਂ ਯੂਜ਼ਰ ਸਾਇਨ ਅੱਪ ਕੀਤੇ ਹੋ, ਤਾਂ ਤੁਹਾਡਾ ਅੰਦਰੂਨੀ ID ਡਾਟਾਬੇਸ ਵਿੱਚ 42 ਹੋਵੇਗਾ। ਪਰ ਤੁਹਾਡੀ iOS ਐਪ ਨੇ ਕਦੇ ਵੀ "42" ਨਹੀਂ ਵੇਖਿਆ। ਬਦਲਾ, ਐਪ ਤੁਹਾਨੂੰ ਦਰਸਾਉਣ ਲਈ ਇੱਕ UUID ਵਰਤਦਾ ਹੈ। ਅਸੀਂ ਪ੍ਰੋਜੈਕਟਾਂ ਲਈ ਵੀ ਇਹੀ ਤਰੀਕਾ ਲਾਗੂ ਕਰਦੇ ਹਾਂ—ਇੱਕ ਪ੍ਰੋਜੈਕਟ ID ਡਾਟਾਬੇਸ ਵਿੱਚ "7" ਹੋ ਸਕਦਾ ਹੈ, ਪਰ ਐਪ ਹਮੇਸ਼ਾ ਇਸਨੂੰ ਲੰਬੇ UUID ਨਾਲ ਦਰਸਾਉਂਦਾ ਹੈ।
UUID ਕੀ ਹੁੰਦਾ ਹੈ
UUID ਦਾ ਮਤਲਬ ਹੈ Universally Unique Identifier। Splync ਵਰਜਨ 4, ਵੈਰੀਅੰਟ 1 UUIDs ਵਰਤਦਾ ਹੈ, ਜੋ RFC 4122 ਨਾਲ ਅਨੁਕੂਲ ਹਨ—ਇਹ ਸਭ ਤੋਂ ਵੱਧ ਗ੍ਰਹਿਣੀਏ ਮਾਪਦੰਡਾਂ ਵਿੱਚੋਂ ਇੱਕ ਹੈ। ਇਹ ਇੱਕ ਬੈਕਰਮ ਨਾਮਵਾਲਿਸ਼ ਕੀਤਾ ਸਤਰ ਹੈ, ਜੋ ਕੁਝ ਇਸ ਤਰ੍ਹਾਂ ਦਿੱਸਦਾ ਹੈ 949ca11c-a6ed-48a3-b40a-fa9727494917। ਇੱਕ UUID ਆਮ ਤੌਰ 'ਤੇ 32 ਹੈਕਸਾ ਡੇਸੀਮਲ ਅੱਖਰਾਂ ਵਜੋਂ ਲਿਖਿਆ ਜਾਂਦਾ ਹੈ ਜੋ ਕੀ 5 ਖੰਡਾਂ ਵਿੱਚ ਵੰਡੇ ਹੋਏ ਹੁੰਦੇ ਹਨ। ਇਹ ਗਲੋਬਲੀ ਵੱਖਰਾ ਬਣਾਇਆ ਗਿਆ ਹੈ, ਮਤਲਬ ਇਹ ਵੱਖਰੇ ਸਰਵਰਾਂ ਜਾਂ ਡਾਟਾਬੇਸਾਂ ਵਿੱਚ ਵੀ ਟਕਰਾਏਗਾ ਨਹੀਂ। ਗਣਿਤੀਕ ਤੌਰ ਤੇ, ਲਗਭਗ 16^32 = 2^128 ਸੰਭਾਵੀ ਜੋੜੀਆਂ ਹਨ। ਹਾਲਾਂਕਿ, ਛੇ ਬਿਟਸ ਵੈਰੀਅੰਟ ਅਤੇ ਵਰਜਨ ਦਰਸਾਉਣ ਲਈ ਰਾਖੇ ਜਾਂਦੇ ਹਨ, ਇਸ ਲਈ ਵਰਜਨ-4, ਵੈਰੀਅੰਟ-1 UUIDs ਦੀ ਕੁੱਲ ਗਿਣਤੀ ਤਕਰੀਬਨ 2^122 ਹੈ, ਜਾਂ ਲਗਭਗ 5.3 x 10^36—ਇੱਕ ਬਹੁਤ ਵੱਡਾ ਅੰਕ ਜੋ ਅਮਲੀ ਵਿਲੱਖਣਤਾ ਨੂੰ ਯਕੀਨੀ ਬਨਾਉਂਦਾ ਹੈ।
1 / 5,300,000,000,000,000,000,000,000,000,000,000,000 ਕਿੰਨਾ ਛੋਟਾ ਹੈ
ਹਰ ਜੋੜੇ UUIDv4s ਦੇ ਮੇਲ ਖਾਣ ਦੀ ਸੰਭਾਵਨਾ ਲਗਭਗ 1 ਵਿੱਚ 5.3 × 10^36 ਹੁੰਦੀ ਹੈ। ਇਹ ਅੰਕ ਇੰਨਾ ਛੋਟਾ ਹੈ ਕਿ ਇਹ ਮਨੁੱਖੀ ਕਲਪਨਾ ਵਿੱਚ ਵੀ ਨਹੀਂ ਆਉਂਦਾ। ਇਸ ਨੂੰ ਸਮਝਣ ਲਈ, 47 ਜੂਆਂ ਨੂੰ ਇੱਕ ਵਾਰੀ ਵਿੱਚ ਸੁੱਟੋ। ਸਾਰੇ ਇੱਕ ਨਾਲ ਆਉਣ ਦੀ ਸੰਭਾਵਨਾ - ਹਰੇਕ ਜੂਆ "1" ਦਰਸਾਉਂਦਾ ਹੋਵੇ - ਕੁਝ ਇਸ ਤਰ੍ਹਾਂ ਹੁੰਦੀ ਹੈ 1 ਵਿੱਚ 6^47, ਜਾਂ ਲਗਭਗ 1 ਵਿੱਚ 3.7 × 10^36। ਇਹ UUID ਟਕਰਾਅ ਦੀ ਸਮਾਨ ਕ੍ਰਮ ਰਹਿਤਾ ਹੈ। ਹੁਣ ਸੋਚੋ ਕਿ ਧਰਤੀ ਦੇ ਹਰ ਆਦਮੀ ਨੇ—ਲਗਭਗ ਆੱਠ ਬਿਲੀਅਨ—ਉਹ 47 ਜੂਆਂ ਨੂੰ ਹਰ ਮਿਲੀਸਕਿੰਟ ਲਈ ਇੱਕ ਟ੍ਰਿਲੀਅਨ ਸਾਲਾਂ ਲਈ ਸੁੱਟਿਆ। ਇਹ ਕੁੱਲ ਲਗਭਗ 2.5 × 10^32 ਕੋਸ਼ਸ਼ਾਂ ਦਾ ਮਾਤਰਾ ਹੈ। ਇਨ੍ਹਾਂ ਸਭ ਤੋਂ ਬਾਅਦ ਵੀ, ਇੱਕ ਵਾਰ ਵਿੱਚ ਸਭ ਨੂੰ ਇੱਕ ਮਿਲਣ ਦੀ ਸੰਭਾਵਨਾ ਸਿਰਫ ਦਸ ਹਜ਼ਾਰ ਵਿੱਚ ਇੱਕ ਹੀ ਹੋਵੇਗੀ। ਇਹ ਦੋ UUIDv4s ਦੇ ਟਕਰਾਅ ਲਈ ਕਿੰਨਾ ਅਸੰਭਵ ਹੈ। ਇਹ "ਦੁਰਲੱਭ" ਨਹੀਂ ਹੈ। ਇਹ ਕਾਸਮਿਕ ਅਸੰਗਤ ਹੈ—ਇਹ ਤਰ੍ਹਾਂ ਦਾ ਇਕੱਠ ਹੋਣਾ ਜੋ ਗਣਿਤਵਿਦਾਂ ਨੂੰ ਆਪਣਾ ਕੌਫੀ ਛੱਡਣ ਅਤੇ ਬ੍ਰਹਿਮੰਡ ਵਿੱਚ ਗੜਬੜ ਚੈੱਕ ਕਰਨ ਲਈ ਪ੍ਰੇਰਿਤ ਕਰੇਗਾ।
UUID ਜਨਰੇਟ ਕਰਨਾ ਸੌਖਾ ਹੈ
ਪਹਿਲਾਂ ਵੇਖਣ ਵਿੱਚ, UUID ਜਨਰੇਟ ਕਰਨਾ ਸੌਖਾ ਲੱਗਦਾ ਹੈ—ਆਖਿਰਕਾਰ, ਇਹ ਸਿਰਫ ਇੱਕ ਬੈਕਰਮ ਨਾਮਵਾਲਿਸ਼ ਕੀਤੇ ਸਤਰ ਹਨ। ਪਰ ਇਸਨੂੰ ਕਾਗਜ਼ ਤੇ ਖੁਦ ਲਿਖ ਕੇ ਦੇਖੋ। ਤੁਸੀਂ 36 ਅੱਖਰ ਲਿਖ ਸਕਦੇ ਹੋ, ਪਰ ਜੇ ਤੁਸੀਂ ਇਹ ਕਿਰਿਆ ਹਜ਼ਾਰਾਂ ਵਾਰ ਦੁਹਰਾਉਂਦੇ ਹੋ, ਸਪਸ਼ਟ ਪੈਟਰਨ ਨਜ਼ਰ ਆਉਣਗੇ। ਹੋ ਸਕਦਾ ਹੈ ਕਿ ਤੁਸੀਂ ਕੁਝ ਅੰਕਾਂ ਨੂੰ ਪਸੰਦ ਕਰੋ ਜਿਵੇਂ ਕਿ 3 ਜਾਂ 8, ਅਤੇ ਕਦਰ ਨਾ ਕਰੋ ਅੱਖਰਾਂ ਨੂੰ ਜਿਵੇਂ ਕਿ x। ਇਹ ਪਸੰਦਾਂ ਇੱਕ ਕੰਪਿਊਟਰ ਦੁਆਰਾ ਤੁਰੰਤ ਪਤਾ ਲਗਾਈਆਂ ਜਾ ਸਕਦੀਆਂ ਹਨ। ਇੱਕ ਦੁਸ਼ਟ ਹੈਕਰ ਤੁਹਾਡੀਆਂ ਆਦਤਾਂ ਨੂੰ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰ ਸਕਦਾ ਹੈ ਅਤੇ ਇੱਕ ਦਿਨ ਵਿੱਚ ਤੁਹਾਡੀ "ਬੈਕਰਮ" ਗੁਪਤ ਸਤਰ ਨੂੰ ਤੰਗ ਕਰ ਸਕਦਾ ਹੈ। ਫਿਰ, ਜੇ ਤੁਸੀਂ ਵੀ ਇੱਕ ਕੰਪਿਊਟਰ ਦੀ ਔਰ ਫੇਰ rand() ਕਾਲ ਕਰੋ, ਕਲਾਸਿਕ ਬੈਕਰਮ ਫੰਕਸ਼ਨ, ਹਰ ਅੱਖਰ ਨੂੰ ਜਨਰੇਟ ਕਰਨ ਲਈ। ਇਹ ਬਿਹਤਰ ਹੈ—ਪਰ ਕਾਫ਼ੀ ਨਹੀਂ। ਆਮ ਪ੍ਰੋਗਰਾਮਿੰਗ ਵਾਤਾਵਰਨਾਂ ਵਿੱਚ ਕਈ "ਬੈਕਰਮ" ਨੰਬਰ ਜਨਰੇਟਰ ਪਸੂਡੋਬੈਕਰਮ ਹੁੰਦੇ ਹਨ, ਜੋ ਇੱਕ ਅੰਦਰੂਨੀ ਸੀਡ ਤੋਂ ਸ਼ੁਰੂ ਹੋਣ ਵਾਲੇ ਪੇਸ਼ਕਸ਼ ਗਣਿਤਕ ਕ੍ਰਮ ਦਾ ਪਾਲਣ ਕਰਦੇ ਹਨ, ਜੋ ਆਮ ਤੌਰ 'ਤੇ ਸਿਸਟਮ ਸਮਾਂ ਤੇ આધારਿਤ ਹੁੰਦਾ ਹੈ। ਜੇ ਕੋਈ ਇਸ ਸੀਡ ਨੂੰ ਖੋਜ ਲੈਂਦਾ ਜਾਂ ਅੰਦਾਜ਼ਾ ਲਗਾ ਲੈਂਦਾ ਹੈ, ਤਾਂ ਉਹ ਤੁਹਾਡੇ ਜਨਰੇਟਰ ਦੁਆਰਾ ਕਦੇ ਵੀ ਉਤਪਾਦਿਤ ਹੋਏ ਹਰ ਮੁੱਲ ਨੂੰ ਦੁਹਰਾ ਸਕਦਾ ਹੈ।
UUID ਕਿੰਨਾ ਪੂਰੀ ਤਰ੍ਹਾਂ ਬੈਕਰਮ ਹੈ
ਪੂਰੀ ਤਰ੍ਹਾਂ ਬੈਕਰਮ ਕੁਝ ਵੀ ਨਹੀਂ ਹੁੰਦਾ—ਜਿਵੇਂ ਕਿ ਇੱਕ ਪੂਰੀ ਤਰ੍ਹਾਂ ਬੈਕਰਮ ਜੂਆ ਨਹੀਂ ਹੁੰਦਾ, ਜਾਂ ਇੱਕ ਪੂਰੀ ਤਰ੍ਹਾਂ ਬੈਕਰਮ ਸੁੱਟ ਵੀ ਨਹੀਂ ਹੁੰਦਾ। ਹਰ ਭੌਤਿਕ ਜਾਂ ਡਿਜ਼ੀਟਲ ਪ੍ਰਕਿਰਿਆ ਕੁਝ ਅਧਾਰਭੂਤ ਨਿਯਮਾਂ ਦੀ ਪਾਲਣਾ ਕਰਦੀ ਹੈ। ਫਿਰ ਵੀ, ਗਣਿਤਵਿਦਾਂ ਅਤੇ ਇੰਜੀਨੀਅਰਾਂ ਨੇ ਸੱਚੀ ਬੈਕਰਮਤਾ ਦੇ ਨਜ਼ਦੀਕ ਆਉਣ ਲਈ ਦਹਾਕਿਆਂ ਤੱਕ ਐਲਗੋਰਿਥਮਾਂ ਨੂੰ ਵਿਕਸਿਤ ਕੀਤਾ ਹੈ। ਜਦੋਂ Splync ਇੱਕ ਨਵਾਂ ਵਰਜਨ-4 UUID ਬਣਾਉਂਦਾ ਹੈ, ਤਾਂ ਇਹ ਸਿਰਫ "ਨੰਬਰਾਂ ਨੂੰ ਬੈਕਰਮ ਰੂਪ ਵਿੱਚ ਚੁਣਦਾ" ਨਹੀਂ ਹੈ ਜਿਵੇਂ ਕਿ ਜੂਆਂ ਨੂੰ ਸੁੱਟਣਾ। ਇਹ ਖਾਸ ਅਣਯੋਜਿਤਤਾ ਦੇ ਨਿਸ਼ਾਨ ਮੰਗਦਾ ਹੈ—ਉਦਾਹਰਣ ਲਈ, ਕੁਝ ਵਖਰੀ ਲਹਿਰਾਂ ਦੀ ਆਵਾਜ਼ ਜਾਂ ਹਾਰਡਵੇਅਰ ਵਿੱਚ ਥੋੜੀ ਬਿਜਲਈ ਸ਼ੋਰ, ਜਾਂ ਮੈਮੋਰੀ ਵਿੱਚ ਵਖਰੀ ਸਮੇਂ ਦੇ ਉਪੇਖਣ। ਇਹ ਅਣਯੋਜਿਤਤਾ ਦੇ ਟੁਕੜੇ ਇਕੱਠੇ ਕਰਕੇ 128 ਬਿਟਸ ਡਾਟਾ ਵਿੱਚ ਮਿਲਾਏ ਜਾਂਦੇ ਹਨ—ਇੱਕ ਲੰਬੀ ਲੜੀ ਇੱਕਾਂ ਅਤੇ ਜ਼ੀਰੋਆਂ ਦੀ। ਨਤੀਜਾ ਇੱਕ ਅਜਿਹੀ ਕੋਡ ਹੁੰਦੀ ਹੈ ਜੋ ਕਿ ਗੈਸ ਕਰਨ ਜਾਂ ਹੈਕ ਕਰਨ ਲਈ ਮੁਸ਼ਕਲ ਹੁੰਦੀ ਹੈ।
Splync ਦਾ ਡਬਲ-ਆਈਡੈਂਟੀਫਾਇਰ ਐਪ੍ਰੋਚ
Splync ਸੰਵੇਦਨਸ਼ੀਲ ਆਈਡੈਂਟੀਫਾਇਰਾਂ ਲਈ UUIDs ਵਰਤਦਾ ਹੈ ਜਿਵੇਂ ਕਿ ਯੂਜ਼ਰ IDs ਅਤੇ ਪ੍ਰੋਜੈਕਟ IDs, ਕਿਉਂਕਿ ਇਹ ਬਹੁਤ ਹੀ ਬੈਕਰਮ ਅਤੇ ਸੁਰੱਖਿਅਤ ਹੁੰਦੇ ਹਨ। ਇਸੇ ਸਮੇਂ, ਆਪਣੇ ਸਰਵਰ ਦੇ ਅੰਦਰ, Splync ਉਹਨਾਂ UUIDs ਨੂੰ ਤੇਜ਼ ਖੋਜ ਅਤੇ ਵੱਡੇ ਡਾਟਾਸੈੱਟਾਂ 'ਤੇ ਵਿਸ਼ਲੇਸ਼ਣ ਲਈ ਆਟੋ-ਇੰਕਰੀਮੈਂਟਿਡ ਇੰਟੇਜਰਾਂ ਵਿੱਚ ਬਦਲਦਾ ਹੈ। ਇਹ ਡਬਲ-ਆਈਡੈਂਟੀਫਾਇਰ ਐਪ੍ਰੋਚ ਸੁਰੱਖਿਆ ਅਤੇ ਸੁਵਿਧਾ ਦੇ ਵਿਚਕਾਰ ਸੰਤੁਲਨ ਬਨਾਉਂਦਾ ਹੈ—ਬਾਹਰੀ ਗੋਪਨੀਯਤਾ ਅਤੇ ਅੰਦਰੂਨੀ ਪ੍ਰਦਰਸ਼ਨ। Splync ਦਾ ਲਕਸ਼ ਹੈ ਕਿ ਇਹ ਇੱਕ ਤਣਾਅ-ਰਹਿਤ, ਸਧਾਰਨ, ਅਤੇ ਸੁਰੱਖਿਅਤ ਬਜਟ-ਟਰੇਕਿੰਗ ਐਪ ਹੋਵੇ। ਦ੍ਰਿਸ਼ਮਾਨ UI ਤੋਂ ਪਿੱਛੇ, ਅਸੀਂ ਆਪਣੀ ਆਰਕੀਟੈਕਟਰ ਨੂੰ ਚੁਪਚਾਪ ਸੁਰੱਖਿਅਤ ਅਤੇ ਸਵੈਚ ਦੇ ਨਾਲ ਰੱਖਦੇ ਹਾਂ।