2013-03-09 6 views
5

मुझे हाल ही में ग्राफ डेटाबेस की दुनिया के संपर्क में लाया गया है। मेरे जैसे पुराने संबंधपरक कुत्ते के लिए यह काफी दिलचस्प बदलाव है।ग्राफ डेटाबेस के लिए प्रबंधन बदलें?

इसके अलावा हाल ही में, मैं तरल पदार्थ के साथ झुका रहा हूं और यह डाटाबेस के प्रबंधन में काफी साफ उपकरण रहा है।

तो, दो दुनिया टकराते हैं और मैं बस सोच रहा था कि वहां कोई उपकरण हैं जो ग्राफ़ डेटाबेस के लिए परिवर्तन प्रबंधन जैसे तरल पदार्थ करता है। मैं विशेष रूप से neo4j और orientdb में रुचि रखते हैं।

उत्तर

2

प्रमोद सदालेज और 2003 से Evolutionary Database Design पर मार्टिन फाउलर के प्रभावशाली आलेख का एक बड़ा प्रभाव पड़ा कि मैंने डेटाबेस में स्कीमा परिवर्तनों के प्रबंधन से कैसे संपर्क किया। मैं DbDeploy और जावा और .NET पारिस्थितिक तंत्र में DbDeploy.net का उपयोग करने के लिए चला गया, और अब ActiveRecord migrations का उपयोग करें। यदि आपको तरल पदार्थ दिलचस्प लगता है, तो मैं इन उपकरणों को देखने की सलाह देता हूं।

Neo4j.rb documentation नियो 4j के खिलाफ इस प्रकार के माइग्रेशन पर चर्चा करता है।

मैंने व्यक्तिगत रूप से नियो 4j में माइग्रेशन प्रबंधित करने के लिए एक उपकरण का उपयोग नहीं किया है, लेकिन मैंने माइग्रेशन स्क्रिप्ट लिखी हैं जो गुणों का नाम बदलने, किनारे के लेबल बदलने या इंडेक्स बनाने जैसी चीजें कर चुके हैं। एक उदाहरण के उपयोग के मामले के रूप में, यहाँ एक दुष्टात्मा ग्रूवी स्क्रिप्ट से एक टुकड़ा मैं कुछ विदेशी एक Neo4j ग्राफ में संग्रहीत कुंजी को पुन: मैप और एक सूचकांक को अद्यतन करने के लिए प्रयोग किया जाता है:

try { 
    projects.each { node -> 
    old_id = node.ref_id 
    new_id = old_to_new_ids[old_id] 
    index.remove('project', old_id, node) 
    node.ref_id = new_id 
    index.put('project', new_id, node) 
    } 
} catch (Throwable e) { 
    println(e) 
} finally { 
    g.shutdown() 
} 

Neo4j संस्करण 1.8 के रूप में, एक PropertyContainer कर सकते हैं वह यह है कि ग्राफ मेटाडेटा के लिए इस्तेमाल किया जाना चाहिए। 'Schema_version' प्रॉपर्टी को अपडेट करने के लिए इस कंटेनर का उपयोग करना आसान होगा। कोड लगेगा कुछ की तरह:

EmbeddedGraphDatabase db = new EmbeddedGraphDatabase(dbFilename);   
Transaction tx = db.beginTx(); 
PropertyContainer properties = db.getNodeManager().getGraphProperties(); 
properties.setProperty("schema_version", 3); 
tx.success(); 
tx.finish(); 
+0

डीबी डिप्लॉय के लिए अतिरिक्त क्रेडिट! – critium

8

Liquigraph अब मौजूद है और हालांकि अभी भी काफी नया, लेखक प्रतिक्रिया करने के लिए बहुत ग्रहणशील है और सक्रिय रूप से परियोजना पर काम कर रहा है।

+0

जागरूकता बढ़ाने और उस पर काम करने के लिए लेखक प्रोत्साहन देने के लिए उत्साहित। – critium

0

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

संबंधित मुद्दे