2013-07-10 14 views
8

मैं ग्राफ के लिए नया हूं और यह बहुत दिलचस्प है। यह प्रश्न नोब हो सकता है लेकिन कृपया कुछ अच्छी सामग्री साइट करें।डेटाबेस में ग्राफ डेटा कैसे स्टोर करें?

मैं एक छोटा सोशल नेटवर्क बनाने की कोशिश कर रहा हूं जहां प्रत्येक उपयोगकर्ता नोड है और उसके मित्र के साथ अप्रत्यक्ष कनेक्शन है।

यह ठीक काम कर रहा है लेकिन अब मैं इसे डेटाबेस में संग्रहीत करना चाहता हूं।

मैं डेटा कैसे स्टोर कर सकता हूं? किसी नोड के सभी जुड़े नोड्स (पॉइंटर) को कैसे स्टोर करें।

क्या उपयोगकर्ता लॉग आउट करने के बाद मेमोरी को हटाना बेहतर है और जब वह लॉग इन करता है या लॉग इन करना चाहिए और लॉग आउट करना चाहिए तो नोड पर कोई प्रभाव नहीं पड़ता है?

मुझे इसकी सैद्धांतिक जानकारी है। कोई संदर्भ वास्तव में सहायक होगा।

उत्तर

2

मैं नीचे से शुरू करता हूं।

क्या उपयोगकर्ता लॉग आउट करने के बाद मेमोरी को हटाना बेहतर होता है और लॉग इन करते समय लॉग इन करना चाहिए और लॉग आउट करना चाहिए, नोड पर कोई प्रभाव नहीं होना चाहिए?

आपको किसी प्रकार का स्थायी भंडारण की आवश्यकता होगी, या आप अपने पहले क्रैश/पुनरारंभ पर प्राप्त किए गए सभी डेटा को खो देंगे जो आपके उपयोगकर्ताओं को थोड़ा परेशान कर सकता है।

मैं डेटा कैसे स्टोर कर सकता हूं? इस बारे में अधिक जानने के बिना यह मुश्किल है हालांकि यह मानना ​​है कि आपके पास उपयोगकर्ताओं की एक सूची है और प्रत्येक उपयोगकर्ता के पास 0 या अधिक दोस्त हो सकते हैं, तो मैं 2 टेबल के साथ जाऊंगा। दुकान सभी रिश्तों एक UserID में - -> UserID फैशन *

उदाहरण

इस तरह के उपयोगकर्ता नाम और पासवर्ड
  • UsersFriends * के रूप में भंडार अपने सभी उपयोगकर्ता जानकारी -

    • उपयोगकर्ता

      उपयोगकर्ता तालिका

      UserID Username 
      1  user2511713 
      2  abstracthchaos 
      3  anotheruser 
      

      UsersFriends

      UserID FriendUserID 
      1   3 
      2   3 
      1   2 
      

      मतलब user2511713 मित्र anotheruser & abstracthchaos और abstracthchaos मित्र anotheruser, अपने व्यवसाय तर्क पर निर्भर के साथ साथ यह भी दूसरी तरह के आसपास मतलब के लिए उपयोगी हो सकता है इस तरह के 3 1 is the same as 1 3

      कि
    +1

    अगर मैं ऐसा कर रहा हूँ (दूसरी तालिका) तो क्या graph.It के उपयोग के सभी फिर नीचे फोड़े मेरे डेटाबेस की efficiecny नहीं मैं डेटा संरचना का उपयोग कर रहा हूँ – user2511713

    8

    अपना डेटा स्टोर करने के लिए एक वास्तविक ग्राफ डेटाबेस का उपयोग करें।

    http://www.neo4j.org/

    आप एक नोड में कुंजी/मान जोड़े स्टोर कर सकते हैं और आप भी किनारों कि नोड्स कनेक्ट स्टोर कर सकते हैं।

    फिर आप ग्रेमलिन की तरह कुछ ग्राफ/https://github.com/tinkerpop/gremlin क्वेरी/ट्रैवर्स के लिए उपयोग कर सकते हैं। https://github.com/tinkerpop/gremlin/wiki/Getting-Started

    वाक्य रचना की एक विचार: उदाहरण डाउनलोड करने और नमूना प्रश्नों चलाने के लिए अपने दस्तावेज़ देखें

    gremlin> // lets only take 'knows' labeled edges 
    gremlin> v.out('knows') 
    ==>v[2] 
    ==>v[4] 
    gremlin> // lets do a traversal from the '1' marko vertex to its outgoing edges. 
    gremlin> // in the property graph world, edges are first class citizens that can be traversed to. 
    gremlin> v.outE 
    ==>e[7][1-knows->2] 
    ==>e[9][1-created->3] 
    ==>e[8][1-knows->4] 
    
    संबंधित मुद्दे