मैं एक जेवीएम डेटा स्ट्रक्चर (जावा/स्कैला) डिज़ाइन करना चाहता हूं जिसका उपयोग मनमाने ढंग से संबंधित डेटाबेस टेबल की सामग्री का प्रतिनिधित्व और स्टोर करने के लिए किया जा सकता है। डेटा संरचना तेज होनी चाहिए (बहुत जीसी-गहन, कैश-अनुकूल नहीं) और मेमोरी कुशल है, इसलिए बड़ी टेबल रैम में फिट हो सकती है।मनमाने ढंग से डेटाबेस टेबल्स स्टोर करने के लिए डेटा संरचना
एक मेमोरी-कुशल समाधान प्रत्येक कॉलम को एक आदिम सरणी में अलग से स्टोर करना है, लेकिन मैं कैश मित्रता के बारे में चिंतित हूं क्योंकि एक ही पंक्ति में आइटम एक साथ संग्रहीत नहीं होते हैं। एन कॉलम वाली एक पंक्ति एन कैश मिस लेती है, भले ही कॉलम कितनी संकीर्ण हों।
एक और समाधान प्रत्येक पंक्ति को किसी ऑब्जेक्ट सरणी में संग्रहीत करना है जहां प्रत्येक तत्व फ़ील्ड का प्रतिनिधित्व करता है और पुनर्प्राप्ति पर सही प्रकार पर डाला जाता है, लेकिन इसके लिए उनके बॉक्स वाले रूप में संख्यात्मक प्रकारों को संग्रहीत करने की आवश्यकता होती है, इसलिए यह बहुत स्मृति-कुशल नहीं है। और शायद यह नहीं है कि कैश भी कुशल है।
एक और समाधान प्रत्येक पंक्ति के डेटा को बाइट सरणी में लेआउट करना है, वैसे ही वास्तविक डेटाबेस केवल अपनी बायों को क्रमबद्ध करते हैं, केवल आवश्यक बाइट्स का उपयोग करते हुए। यह कैश-अनुकूल और मेमोरी कुशल है, लेकिन मैं हर एक्सेस पर क्रमबद्धता/डी-क्रमबद्धता की लागत के बारे में चिंतित हूं।
सबसे अच्छा तरीका क्या है?
यह मुख्य मेमोरी डेटाबेस साइड-प्रोजेक्ट के लिए है। –