मेरे पास लगभग 500 मिलियन 128-बिट पूर्णांक हैं, जो प्रति वर्ष लगभग 100 मीटर जोड़ते हैं। कुछ भी कभी नहीं हटाया जाता है। संख्याएं एक समान वितरण, पैमाने पर और समय-समय पर आती हैं।128-बिट पूर्णांक के बड़े सेट को स्टोर करने के लिए ऑन-डिस्क संरचना?
असल में, मुझे केवल एक ऐड ऑपरेशन चाहिए जो यह भी लौटाता है कि डीबी में पहले से मौजूद नंबर मौजूद है या नहीं। इसके अलावा, मैं इस प्रणाली के लिए बहुत अधिक रैम का उपयोग नहीं करना चाहता, इसलिए बस स्मृति में सबकुछ संग्रह करना वह नहीं है जिसे मैं ढूंढ रहा हूं।
अब तक हम प्राथमिक कुंजी के रूप में दो bigints का उपयोग करके, MySQL पर कई MyISAM तालिकाओं का उपयोग कर रहे हैं। यह हमें ठीक प्रदर्शन देता है, लेकिन मुझे संदेह है कि यह इस नौकरी के लिए सही उपकरण नहीं है। टेबल को विभाजित करने से पहले हमें कुछ प्रदर्शन समस्याएं आई हैं, और हमारे पास बिजली के आक्रमण पर भ्रष्टाचार है। इसके अलावा, एक डीबी हमें कई और फीचर देता है जिसकी हमें आवश्यकता नहीं है।
मैं लिनक्स पर पायथन का उपयोग कर रहा हूं, लेकिन मैं सुझावों के लिए खुला हूं।
अद्यतन: मार्सेलो की टिप्पणी का उल्लेख Bloom Filter है, जो वास्तव में मेरे लिए वादा करता है। चूंकि मैं हैश के साथ काम कर रहा हूं, इसलिए मैंने पूरी तरह से पूर्ण सटीकता को छोड़ दिया है, इसलिए यह एक महान सटीकता/प्रदर्शन व्यापार हो सकता है।
आप संख्याओं के वितरण के बारे में क्या बता सकते हैं? प्रत्येक वर्ष जोड़ों के बारे में? –
यह (होना चाहिए) वर्दी, संख्याएं हैंश हैं। स्थिर गति, तो प्रति सेकंड लगभग 3 जोड़ ऑपरेशन। – itsadok