क्या आपके पास हटाए जाने पर हटाए जाने की सूची है (या इसे बनाने के लिए जो भी प्रक्रिया हटा दी जाती है)?यदि ऐसा नहीं है तो आपके पास टाइमस्टैम्प के साथ "मुझे हटा दिया गया है" की एक सूची नहीं हो सकती है, और फिर इस सूची से आइटम को केवल उस चीज़ पर सिंक्रनाइज़ करने के लिए चुनें जो बदले गए हैं? स्वाभाविक रूप से, आप अभी भी सर्वर पर धीमे समय के दौरान सिंक करने के लिए किसी प्रकार का बैच नौकरी चाहते हैं, लेकिन मुझे लगता है कि लोड को कम कर सकता है।
कोड बदलने के आधार पर एक और विकल्प हो सकता है, उस प्रक्रिया को केवल डेटाबेस को अद्यतन करने के लिए (यदि आपके पास एकाधिक नोड्स हैं) सीधे हटाए जाने पर। यह सिस्टम में कुछ युग्मन पेश करेगा, लेकिन ऐसा करने का सबसे प्रभावी तरीका होगा।
मेरी राय में सबसे अच्छे तरीके मैसेजिंग के विचार पर कुछ भिन्नता है कि एक डिलीट हुई है (भले ही यह केवल एक फ़ाइल है जिसे आप हाल ही में हटाई गई फ़ाइलों की सूची के साथ लिखते हैं), या किसी प्रकार का प्रत्यक्ष कॉलबैक तंत्र, या तो कोड के माध्यम से या लगातार डेटा स्टोर को समायोजित करके एप्लिकेशन सीधे हटाने की प्रक्रिया से उपयोग करता है।
यहां तक कि इन सभी के साथ भी, आपको यह सुनिश्चित करने के लिए इंडेक्स पर किसी प्रकार का इंडेक्स सिंक्रनाइज़ेशन या आवधिक स्वच्छता जांच की आवश्यकता होगी ताकि सबकुछ ठीक से मेल हो।
आप (और यदि आपके पास फाइलों की संख्या के आधार पर आपको नहीं होना चाहिए तो फ़ाइल चौंका देने के लिए फ़ोल्डरों में विभाजित करना होगा), और कहें, प्रति फ़ोल्डर 5,000-10,000 फाइलें, और फिर बनाएं एक साधारण फ़ाइल जिसमें फ़ोल्डर में सभी फ़ाइलों के नाम हैंश है। यह हटाएगा, लेकिन मुझे अभी भी लगता है कि हटाए जाने पर कुछ रूपों का सीधा कॉलबैक एक बेहतर विचार है। यदि आपके पास इन सभी चीजों के साथ एक मोनोलिथिक फ़ोल्डर है, तो इसे अलग फ़ोल्डर्स में तोड़ने के लिए कुछ बनाते हैं (हमने मुख्य फ़ोल्डर के तहत सरल संख्या का उपयोग किया ताकि हम विज्ञापन नोडम पर जा सकें) सबकुछ तेज़ी से बढ़ाना चाहिए; भले ही आपको यह सभी नई फाइलों के लिए करना है और पुरानी फाइलों को जगह में छोड़ना है, कम से कम आप फ़ाइल पुनर्प्राप्ति पर खून बह रहा है।
मेरी राय में, चूंकि आप प्रोग्राम्सेटिक रूप से फ़ाइलों की एक अनुक्रमणिका को नियंत्रित कर रहे हैं, इसलिए आपको वास्तव में एक ही प्रोग्राम शामिल होना चाहिए (या अधिसूचित) जब अंतर्निहित फ़ाइल सिस्टम में परिवर्तन के समय परिवर्तन होता है, जैसा कि अनुमति देने के विपरीत होता है होने के लिए परिवर्तन और फिर अद्यतनों के लिए सबकुछ देख रहे हैं। स्वाभाविक रूप से, इस संचार को तोड़ने वाले आउटलाइर्स को पकड़ने के लिए, आपको वास्तव में फ़ाइल सिस्टम में क्या है और यह जांचने के लिए सिंक्रनाइज़ेशन कोड होना चाहिए और समय-समय पर इंडेक्स को अपडेट करना चाहिए (हालांकि यह संभवतः मुख्य एप्लिकेशन में प्रक्रिया से बाहर हो सकता है)।
स्रोत
2012-07-05 11:21:21
इनके रूप में हटाएं: एक सिस्टम आधारित है जिस पर आपका कोई नियंत्रण नहीं है? या एक डिलीट जो कुछ एप्लिकेशन द्वारा ट्रिगर किया गया है जिसमें आप कुछ कर सकते हैं? – Krrose27
स्कैनिंग प्रक्रिया बहुत मेमोरी का उपयोग क्यों करती है? आप मूल रूप से फ़ाइलों को एक समय में एक निर्देशिका में सूचीबद्ध कर रहे हैं, है ना? – Joni
हाँ, हालांकि, मैं निर्देशिका पर कितनी फाइलों को नियंत्रित नहीं कर सकता। एक निर्देशिका में 1 अरब फाइलें हो सकती हैं। इसके अलावा, अगर मैं तुरंत एक फ़ाइल स्कैन करता हूं तो मैं एक डेटा डालता हूं, यह बहुत मेमोरी बचाता है लेकिन वास्तव में समय लेने वाली है क्योंकि आई/ओ समस्याएं हैं। यदि मैं थोक सम्मिलन का उपयोग करता हूं, तो यह अधिक कुशल है। – s011208