यो वेबसाइट Kohei Koyanagi द्वारा विकास गरिएको सफ्टवेयर प्रयोग गरी धेरै भाषामा स्वतः अनुवाद गरिएको छ। अझै सहीका लागि मूल अंग्रेजी हेर्नुहोस्।

Splync को दुई पहिचानकर्ता दृष्टिकोण: UUID र स्वत: वृद्धि हुने पूर्णांक

Splync ले संवेदनशील आईडीको लागि दुई पहिचानकर्ता प्रयोग गर्दछ

Splync को डेटाबेसमा, प्रत्येक प्रयोगकर्ता — र प्रत्येक परियोजना — दुई फरक आईडीद्वारा पहिचान गरिन्छ: UUID र स्वत: वृद्धि हुने पूर्णांक। स्वत: वृद्धि हुने पूर्णांक प्रायः मानिसहरूलाई परिचित हुन्छ — यो मात्र एक गणक हो: १, २, ३, आदि। Splync ले सर्भरको डेटाबेस भित्र प्रायः प्रत्येक तालिकालाई व्यवस्थित गर्न यी पूर्णांक प्रयोग गर्दछ किनभने यो सरल, छिटो, र जोइनको लागि प्रभावकारी हुन्छ। यद्यपि, हामीले यी आन्तरिक नम्बरहरूलाई एपमा कहिल्यै खुलाउँदैनौं। उदाहरणका लागि, यदि तपाईं ४२औं प्रयोगकर्ता हुनुहुन्छ भने, तपाईंको डेटाबेसमा आन्तरिक आईडी ४२ हुनेछ। तर तपाईंको iOS एपले "४२" देख्दैन। बरु, एपले तपाईलाई प्रतिनिधित्व गर्न UUID प्रयोग गर्दछ। हामी परियोजनाहरूमा पनि यही दृष्टिकोण लागू गर्छौं — परियोजना आईडी डेटाबेस भित्र "७" हुन सक्छ, तर एपले सधैं लामो UUID प्रयोग गरेर यसलाई उल्लेख गर्दछ।

UUID के हो

UUID को अर्थ हो Universally Unique Identifier। Splync ले संस्करण ४, भेरियन्ट १ UUIDs प्रयोग गर्दछ, RFC 4122 अनुरूप — सबैभन्दा धेरै अपनाइएका मापदण्डहरू मध्ये एक। यो एउटा अनियमित रूपमा उत्पन्न गरिएको स्ट्रिङ हो, जुन 949ca11c-a6ed-48a3-b40a-fa9727494917 जस्तो देखिन्छ। UUID प्रायः ३२ हेक्साडेसिमल वर्णहरूमा लेखिएको हुन्छ जुन हाइफनद्वारा छुट्टिएका पाँच भागमा विभाजित हुन्छ। यो विश्वव्यापी रूपमा अद्वितीय हुन डिजाइन गरिएको छ, जसको अर्थ यो विभिन्न सर्भरहरू वा डेटाबेसहरूमा पनि ठोक्किँदैन। गणितीय रूपमा, करिब 16^32 = 2^128 सम्भावित संयोजनहरू छन्। यद्यपि, भेरियन्ट र संस्करण संकेत गर्नका लागि छ बिटहरू आरक्षित भएकोले, संस्करण-४, भेरियन्ट-१ UUIDs को कुल संख्या लगभग 2^122, वा करिब 5.3 x 10^36 हो — एक ज्यादै ठूलो संख्या जसले व्यावहारिक अद्वितीयताको सुनिश्चितता गर्दछ।

१ / ५,३००,०००,०००,०००,०००,०००,०००,०००,०००,०००,००० कति सानो छ

प्रत्येक UUIDv4 को जोडीले करिब १ मा 5.3 × 10^36 को मिल्ने सम्भावना दिन्छ। यो संख्या यति सानो छ कि यो मानवीय कल्पनामा लगभग अस्वीकार हुने गर्दछ। यसलाई चित्रण गर्न, एकै पटक ४७ पासा फ्याँक्ने कल्पना गर्नुहोस्। सबै पासा "१" देखाउने — सबै पासाले एकैसाथ "१" देखाउने सम्भावना ६^४७ मा १ हो, वा लगभग ३.७ × 10^36 मा १। यो UUID ठोक्किनेको समान परिमाण हो। अब, पृथ्वीमा हरेक व्यक्ति — लगभग आठ अर्ब हामीमध्येका — ती ४७ पासालाई प्रत्येक मिलिसेकन्डमा एक ट्रिलियन वर्षसम्म फ्याँक्ने कल्पना गर्नुहोस्। त्यो करिब 2.5 × 10^32 कुल प्रयास हो। त्यो सबै भए पनि, कसैले, कतै, एकैचोटि ४७ वटा "१" प्राप्त गर्ने सम्भावना अझै पनि मात्र दश हजारमा एक हुन्छ। त्यति असम्भव छ कि दुई UUIDv4 ठोकिने। यो "दुर्लभ" होइन। यो ब्रह्माण्डीय रूपमा हास्यास्पद छ — यस्तो संयोग हो जसले गणितज्ञहरुलाई आफ्नो कफी छोड्न र ब्रह्माण्डमा त्रुटिहरू जाँच्न लगाउँछ।

UUID उत्पन्न गर्नु सजिलो छ

पहिलो नजरमा, UUID उत्पन्न गर्नु सरल लाग्न सक्छ — सबै पछि, यो मात्र एक अनियमित देखिने अल्फान्यूमेरिक स्ट्रिङ हो। तर यो आफैँ कलम र कागजले लेख्ने प्रयास गर्नुहोस्। तपाईं ३६ वर्णहरू लेख्न सक्नुहुन्छ, पक्कै, तर यदि तपाईंले यो अभ्यास हजारौं पटक दोहोर्याउनुभयो भने, स्पष्ट ढाँचा देखा पर्नेछ। शायद तपाईंलाई केही अंकहरू जस्तै ३ वा ८ मनपर्छ, र x जस्तो अक्षर शायद नै प्रयोग गर्नुहुन्छ। कम्प्युटरले ती पूर्वाग्रहहरू तुरुन्तै पत्ता लगाउन सक्छ। एक दुष्ट ह्याकरले तपाईंको बानीलाई विश्लेषण गरेर तपाईंको "अनियमित" गोप्य स्ट्रिङलाई एक दिनभित्र पृथक गर्न सक्छ। त्यसपछि, के तपाईं पनि कम्प्युटरको सहारा लिनुहुन्छ र प्रत्येक अंक उत्पन्न गर्न rand() कल गर्नुहुन्छ, क्लासिक अनियमित प्रकार्य। त्यो राम्रो छ — तर पर्याप्त राम्रो छैन। सामान्य प्रोग्रामिङ वातावरणमा धेरै "अनियमित" नम्बर जेनेरेटरहरू छद्म-र्यान्डम हुन्छन्, जसको अर्थ तिनीहरू आन्तरिक बीजबाट सुरु हुने पूर्वानुमेय गणितीय अनुक्रम अनुसरण गर्छन्, जुन प्रायः सिस्टम समयमा आधारित हुन्छ। यदि कसैले त्यो बीज पत्ता लगायो वा अनुमान गर्यो भने, तिनीहरूले तपाईंको जेनेरेटरले उत्पन्न गरेको सबै मूल्य पुन: उत्पादन गर्न सक्छन्।

UUID कत्तिको पूर्णतया अनियमित हुन्छ

पूर्ण अनियमितता वास्तवमा अस्तित्वमा छैन — जसरी एक पूर्ण पासा अस्तित्वमा छैन, वा पासा फ्याँक्ने पूर्ण अनियमित तरिका अस्तित्वमा छैन। प्रत्येक भौतिक वा डिजिटल प्रक्रिया केहि आधारभूत नियमहरू अनुसरण गर्दछ। तैपनि, गणितज्ञहरू र ईन्जिनियरहरूले दशकौं खर्च गरेका छन्, अनि यथासम्भव साँचो अनियमितता नजिक ल्याउन एल्गोरिदमहरू डिजाइन गर्दै। जब Splync ले नयाँ संस्करण-४ UUID सिर्जना गर्छ, यो पासा जस्तै संख्याहरू अनियमित रूपमा छनोट गर्दैन। यो अपरेटिङ सिस्टमसँग अप्रत्याशितताको स-साना अंशहरू सोध्छ — उदाहरणका लागि, तपाईंको CPU ले कार्य पूरा गरेको सटीक क्षण, हार्डवेयर भित्रको हल्का विद्युत शोर, वा मेमोरीमा ब्याकग्राउन्ड टाइमिङ उतारचढाव। यी अनिश्चितताको टुक्राहरू सङ्कलन गरिन्छ र १२८ बिट्सको डेटा — एक लामो अनुक्रमको शून्य र एकहरूमा मिसाइएको हुन्छ। परिणामस्वरूप कोड प्रयोगकर्ता वा सम्भावित दुष्ट आक्रमणकारीहरूको लागि अनुमान गर्न वा दोहोर्याउन लगभग असम्भव हुन्छ।

Splync को दुई-पहिचानकर्ता दृष्टिकोण

Splync ले संवेदनशील पहिचानकर्ताहरू जस्तै प्रयोगकर्ता आईडी र परियोजना आईडीको लागि UUIDs प्रयोग गर्दछ, किनभने ती अत्यन्त अनियमित र सुरक्षित हुन्छन्। त्यसै समयमा, यसको सर्भर भित्र, Splync ले ती UUIDs लाई ठूला डाटासेटमा छिटो खोजी र विश्लेषणको लागि स्वत: वृद्धि हुने पूर्णांकमा रूपान्तरण गर्दछ। यो दुई-पहिचानकर्ता दृष्टिकोणले सुरक्षा र सुविधा बीच सन्तुलन कायम राख्छ — बाह्य गोपनीयता र आन्तरिक प्रदर्शन। Splync को लक्ष्य तनावमुक्त, सरल, र सुरक्षित बजेट ट्र्याकिङ एप हुनु हो। दृश्य UI को पछाडि, हामी निरन्तर रूपमा हाम्रो वास्तुकलाको परिष्कार गर्दैछौं, चीजहरूलाई सहज, सुरक्षित, र शान्त रूपमा स्मार्ट राख्न।