જણવાઈ દૃશ્યાઓ માટે Splync બે આઈડેન્ટિફિયર્સનો ઉપયોગ કરે છે
Splyncના ડેટાબેઝમાં, દરેક યુઝર અને દરેક પ્રોજેક્ટને બે જુદા જુદા આઈડીએસથી ઓળખવામાં આવે છે: UUID અને ઓટો-ઇન્ક્રિમેન્ટેડ ઇન્ટેજર.
ઓટો-ઇન્ક્રિમેન્ટેડ ઇન્ટેજર તે છે જેને મોટા ભાગના લોકો ઓળખે છે — તે માત્ર એક કાઉન્ટર છે: 1, 2, 3, અને આગળ. Splync આ સંખ્યાઓનો ઉપયોગ સર્વર ડેટાબેઝમાં લગભગ દરેક ટેબલને ગોઠવવા માટે કરે છે કારણ કે તે સરળ, ઝડપી અને જોડાઈ માટે કાર્યક્ષમ છે. જોકે, અમે આ આંતરિક સંખ્યાઓને ઍપમાં ક્યારેય દાખલ કરતા નથી. ઉદાહરણ તરીકે, જો તમે 42માં યુઝર તરીકે સાઇન અપ કર્યો હોય, તો તમારા આંતરિક આઈડી ડેટાબેઝમાં 42 હશે. પરંતુ તમારું iOS ઍપ ક્યારેય “42” નહીં જુએ. બલકે, ઍપ તમને UUIDથી રજૂ કરે છે. અમે પ્રોજેક્ટ્સ માટે આ જ ઢાંચો લાગુ કરીએ છીએ — ડેટાબેઝમાં પ્રોજેક્ટ આઈડી "7" હોઈ શકે છે, પરંતુ ઍપ હંમેશાં તેને લાંબા UUIDથી સંબોધે છે.
UUID શું છે
UUID એટલે Universally Unique Identifier. Splync વર્ઝન 4, વેરિઅન્ટ 1 UUIDs નો ઉપયોગ કરે છે, જે RFC 4122 સાથે સુસંગત છે — સૌથી વધુ અપનાવાયેલા ધોરણો પૈકીનું એક. તે એક રેન્ડમલી જનરેટ થયેલી સ્ટ્રિંગ છે, જે 949ca11c-a6ed-48a3-b40a-fa9727494917 જેવી દેખાય છે. UUID સામાન્ય રીતે 32 હેક્સાડેસિમલ અક્ષરોથી લખાય છે જે હાયફનથી અલગ થયેલા પાંચ વિભાગોમાં વિભાજિત હોય છે. તે વૈશ્વિક રીતે અનોખું હોવા માટે ડિઝાઇન કરવામાં આવ્યું છે, એટલે કે તે વિવિધ સર્વર્સ અથવા ડેટાબેસમાં પણ ટકરાશે નહીં. ગણિતીય રીતે, લગભગ 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 કુલ પ્રયાસો છે. આ બધાની પછી પણ, ક્યાંક કોઈને 47 એક સાથે મળવા જેવી ઘટના થવાની સંભાવના માત્ર 10,000 માં એક હશે. તે કેવી રીતે અશક્ય છે કે બે UUIDv4s ટકરાય. તે “દુર્લભ” નથી. તે વૈશ્વિક રીતે અસ્માન્ય છે — તે જીવનમાં એવી સંયોગ છે કે જે ગણિતજ્ઞોને તેમની કોકિંગ છોડવા માટે સર્જન કરે અને વિશ્વમાં ખામીઓ તપાસવા માટે તૈયાર કરે.
UUID જનરેટ કરવું સરળ છે
પહેલા નજરે, UUID જનરેટ કરવું સરળ લાગે છે — આખરે, તે માત્ર એક રેન્ડમ-દેખાતી અલ્ફાન્યુમેરિક સ્ટ્રિંગ છે. પરંતુ પેન અને પેપરથી એક જાતે જ લખવાનો પ્રયત્ન કરો. તમે ચોક્કસ 36 અક્ષર લખી શકશો, હા, પણ જો તમે આ કસરત હજારો વખત પુનરાવૃત્ત કરો, તો સ્પષ્ટ નમુનાઓ સામે આવશે. કદાચ તમે 3 અથવા 8 જેવા ચોક્કસ અંક પસંદ કરો છો, અને x જેવા અક્ષરો ઓછા વાપરો છો. કમ્પ્યુટર તે પૂર્વગ્રહોને તરત ઓળખી શકે છે. એક ખતરનાક હૅકર તમારી આદતોનું વિશ્લેષણ કરી શકે અને તમારા “રેન્ડમ” ગુપ્ત સ્ટ્રિંગને એક દિવસમાં સંકોચી શકે. ત્યાર પછી, જો તમે પણ કમ્પ્યુટર તરફ વળો અને રૅન્ડ(), ક્લાસિક રેન્ડમ ફંક્શનને કૉલ કરો, તો દરેક ડિજિટ જનરેટ કરવા માટે. તે વધુ સારું છે — પણ પૂરતું સારું નથી. સામાન્ય પ્રોગ્રામિંગ વાતાવરણમાં ઘણા "રેન્ડમ" નંબર જનરેટર્સ કૂડાઠીક છે, જે એક અંદાજી ગણિતીય ક્રમને અનુસરતા હોય છે જે આંતરિક બીજથી શરૂ થાય છે, જે સામાન્ય રીતે સિસ્ટમ સમય પર આધારિત હોય છે. જો કોઈ વ્યક્તિ તે બીજને શોધી કાઢે અથવા અનુમાન કરે, તો તેઓ તમારી જનરેટરના દરેક મૂલ્યને પુનઃઉત્પાદન કરી શકે.
એક UUID કેટલો સંપૂર્ણ રેન્ડમ છે
સંપૂર્ણ રેન્ડમને સર્જવું હકીકતમાં અશક્ય છે — જેમ કે એક સંપૂર્ણ ડાઈ હોવું અશક્ય છે, અથવા ડાઈસના સંપૂર્ણ રેન્ડમ થ્રો અશક્ય છે. દરેક ભૌતિક અથવા ડિજિટલ પ્રક્રિયા કેટલીક મૂળભૂત નિયમોનું પાલન કરે છે. તેમ છતાં, ગણિતજ્ઞો અને ઇજનેરોની દાયકાઓથી અલ્ગોરિધમ્સની ડિઝાઇન કરવામાં આવી છે જે સાચા રેન્ડમને શક્ય તેટલી નજીક આવે છે. જ્યારે Splync નવા વર્ઝન-4 UUID બનાવે છે, તે ફક્ત "સંક્યા પસંદ" કરે છે જે ડાઈસ ફેંકવા જેમ નથી. તે ઓપરેટિંગ સિસ્ટમને અમુક અણસાર માટે પૂછે છે — ઉદાહરણ તરીકે, તમારા CPU કોઈ કાર્ય પૂર્ણ કરતી ચોક્કસ ક્ષણ, હાર્ડવેરની અંદર નબળો વિદ્યુત શોર, અથવા મેમરીમાં પૃષ્ઠભૂમિ સમયની ફેરફારો. આ એન્ટ્રોપી ના ટુકડાઓ એકત્રિત અને 128 બિટ્સ ડેટામાં મિક્સ કરવામાં આવે છે — એક લાંબી ક્રમ જે વન અને ઝીરો ની છે. પરિણામે એક કોડ થાય છે જે ઍપ યુઝર્સ અથવા સંભવિત ખતરનાક હૅકર્સ માટે અંદાજ લગાવવું અથવા પુનરાવૃત્ત કરવું અશક્ય છે.
Splyncની ડ્યુઅલ-આઈડેન્ટિફાયર ઍપ્રોચ
Splync સંવેદનશીલ આઈડેન્ટિફાયર્સ માટે UUIDs નો ઉપયોગ કરે છે જેમ કે યુઝર આઈડી અને પ્રોજેક્ટ આઈડી, કારણ કે તે અત્યંત રેન્ડમ અને સુરક્ષિત છે.
સાથે સાથે, તેની સર્વરની અંદર, Splync તે UUIDs ને ઓટો-ઇન્ક્રિમેન્ટેડ ઇન્ટેજરમાં રૂપાંતરિત કરે છે જેથી મોટા ડેટાસેટ્સ પર ફાસ્ટર સર્ચ અને વિશ્લેષણ કરી શકાય. આ ડ્યુઅલ-આઈડેન્ટિફાયર ઍપ્રોચ સલામતી અને સુવિધા વચ્ચે સંતુલન સ્થાપિત કરે છે — બાહ્ય ગોપનીયતા સાથે આંતરિક પ્રદર્શન. Splyncનો હેતુ એક તણાવમુક્ત, સરળ અને સુરક્ષિત બજેટ-ટ્રેકિંગ ઍપ બની રહેવાનો છે. દૃશ્ય UI પાછળ, અમે અમારા આર્કિટેક્ચરને પરિષ્કૃત કરવાનું ચાલુ રાખીએ છીએ જેથી બધું સરળ, સુરક્ષિત અને શાંતિપૂર્ણ બૌદ્ધિક બની રહે.