डीएजी = निर्देशित विश्वकोश ग्राफ; जड़ों = आने वाले किनारों के बिना शिखर।इलाके का उपयोग करने वाले ग्राफ डेटाबेस
मेरे पास उपलब्ध रैम से बड़ा डीएजी है, इसलिए मुझे इसके साथ काम करने के लिए डिस्क-आधारित ग्राफ़ डेटाबेस की आवश्यकता है।
मेरा डीएजी उथला है: मेरे पास अरबों रूट नोड्स हैं, लेकिन प्रत्येक नोड से केवल दर्जनों नोड्स पहुंच योग्य हैं।
यह भी अच्छी तरह से जुड़ा हुआ नहीं है: अधिकांश नोड्स में केवल एक आने वाला किनारा होता है। तो रूट रूट नोड्स के किसी भी जोड़े के लिए पहुंचने योग्य सबग्राफ में आम तौर पर बहुत कम नोड्स होते हैं।
तो मेरे डीएजी को बड़ी संख्या में छोटे पेड़ों के रूप में सोचा जा सकता है, जिनमें से केवल कुछ छेड़छाड़ करते हैं।
मुझे थोक संख्या में अपने डीएजी पर निम्नलिखित प्रश्नों को करने की आवश्यकता है: रूट नोड दिया गया है, सभी नोड्स इससे पहुंच योग्य हो जाएं।
इसे बैच क्वेरी के रूप में माना जा सकता है: कुछ हज़ार रूट रूट नोड्स, वहां से सभी नोड्स पहुंचने योग्य हैं।
जहां तक मुझे पता है कि ग्राफ़ के लिए डिस्क संग्रहण इलाके में सुधार करने के लिए एल्गोरिदम हैं। तीन उदाहरण हैं:
- http://ceur-ws.org/Vol-733/paper_pacher.pdf
- http://www.cs.ox.ac.uk/dan.olteanu/papers/g-store.pdf
- http://graphlab.org/files/osdi2012-kyrola-blelloch-guestrin.pdf
यह भी लगता है कि पुरानी पीढ़ी ग्राफ डेटाबेस ग्राफ इलाके का उपयोग नहीं करते हैं। उदाहरण के लिए एक लोकप्रिय Neo4j ग्राफ डेटाबेस:
http://www.ibm.com/developerworks/library/os-giraph/
Neo4j डेटा का उपयोग तरीकों पर रेखांकन के लिए डेटा इलाके पर विचार किए बिना निर्भर करता है, और रेखांकन के प्रसंस्करण ज्यादातर यादृच्छिक डेटा पहुँच जरूरत पर जोर देता। बड़े ग्राफ के लिए जिन्हें स्मृति में संग्रहीत नहीं किया जा सकता है, यादृच्छिक डिस्क पहुंच एक प्रदर्शन बाधा बन जाती है।
मेरा प्रश्न है: क्या मेरे वर्कलोड के लिए कोई ग्राफ डेटाबेस उपयुक्त है?
Win64 के लिए समर्थन और जावा से किसी अन्य चीज़ से डेटाबेस के साथ काम करने की संभावना एक प्लस है।