मैं एक खोज प्रणाली के लिए एक बैक एंड एप्लिकेशन विकसित कर रहा हूं। खोज प्रणाली फ़ाइलों को एक अस्थायी निर्देशिका में प्रतिलिपि बनाता है और उन्हें यादृच्छिक नाम देता है। फिर यह मेरे आवेदन में अस्थायी फ़ाइलों के नाम पास करता है। मेरे आवेदन को प्रत्येक फ़ाइल को सीमित अवधि के भीतर संसाधित करना होगा, अन्यथा यह बंद हो गया है - यह एक निगरानी-जैसी सुरक्षा उपाय है। प्रसंस्करण फाइलों में अधिक समय लग सकता है इसलिए मुझे इस परिदृश्य को संभालने में सक्षम एप्लिकेशन को डिजाइन करने की आवश्यकता है। अगर अगली बार सर्च सिस्टम उसी फाइल को इंडेक्स करना चाहता है तो मेरा एप्लिकेशन बंद हो जाता है, तो यह संभवतः इसे एक अलग अस्थायी नाम देगा।मैं हैश टकराव की संभावना का आकलन कैसे करूं?
स्पष्ट समाधान खोज प्रणाली और बैकएंड के बीच एक मध्यवर्ती परत प्रदान करना है। यह बैकएंड के अनुरोध को कतार देगा और परिणाम आने की प्रतीक्षा करेगा। यदि इंटरमीडिएट परत में अनुरोध का समय - कोई समस्या नहीं है, बैकएंड काम करना जारी रखेगा, केवल इंटरमीडिएट परत को पुनरारंभ किया जाएगा और जब अनुरोध को बाद में खोज प्रणाली द्वारा अनुरोध किया जाता है तो यह बैकएंड से परिणाम पुनर्प्राप्त कर सकता है।
समस्या यह है कि फ़ाइलों की पहचान कैसे करें। उनके नाम यादृच्छिक रूप से बदलते हैं। मैं एक हैश फ़ंक्शन का उपयोग करना चाहता हूं जैसे MD5 फ़ाइल सामग्री को हैश करने के लिए। मुझे birthday paradox के बारे में अच्छी तरह से पता है और संभावना की गणना करने के लिए लिंक किए गए आलेख से अनुमान लगाया गया है। अगर मुझे लगता है कि मेरे पास 100 से अधिक 000 फ़ाइलें नहीं हैं, तो एक ही एमडी 5 (128 बिट) वाली दो फाइलों की संभावना 1,47x10 -29 है।
क्या मुझे ऐसी टकराव की संभावना का ख्याल रखना चाहिए या बस मान लें कि बराबर हैश मानों का मतलब बराबर फ़ाइल सामग्री है?
इस फ़ाइल नाम की सामग्री पर एक हैश है? –
सामग्री धोया गया है। फाइलनामों को हैश करने में कोई बात नहीं है - वे यादृच्छिक रूप से बदलते हैं। – sharptooth
यदि आप टकराव के बारे में चिंतित हैं, तो फ़ाइल आकार और हैश दोनों पर विचार करें। –