मैं google-app-engine और google datastore (bigtable) में नया हूं और मुझे कुछ संदेह हैं जिसके लिए आवश्यक डेटा मॉडल को डिज़ाइन करने का सबसे अच्छा तरीका हो सकता है।मॉडलिंग पदानुक्रमित डेटा - GAE
मैं एक पदानुक्रम मॉडल, एक उत्पाद सूची की तरह कुछ बनाने की आवश्यकता, प्रत्येक डोमेन गहरे में कुछ उप डोमेन है। फिलहाल उत्पादों की संरचना पढ़ने की आवश्यकताओं से कम बदलती है। शराब उदाहरण:
- ओरिजिन (Toscana, Priorat, Alsacian)
- वाइनरी (संबंध रखता है केवल एक उत्पत्ति के लिए)
- शराब (केवल एक वाइनरी से संबंध रखता है)
सभी संबंधों संबंध तोड़ना हैं और अपूर्ण।
- पूर्वज प्रबंधन: इसके अतिरिक्त आवश्यकताओं के क्रम में शायद हम लगता है विभिन्न संभावित समाधानों वहाँ हो (लेन-देन की आवश्यकता हो सकती)
हर शराब के लिए उपयोग की काउंटरों स्टोर करने के लिए दस्तावेज के आदेश में की जरूरत है। अभिभावक संबंधों और लेनदेन का उपयोग
- छद्म-पूर्ववर्ती प्रबंधन। एक डीबी के साथ पूर्वजों को सिमुलेट करना। लिस्टप्रोपर्टी (डीबी.के)
- संदर्भप्रोपर्टी। explicitelly कक्षाएं
लेकिन उम्मीद अनुरोधों का आदेश मदिरा, मूल के आधार पर, विभिन्न प्रकार से प्राप्त करने के लिए ... कभी कभी कभी कभी कभी कभी वाइनरी द्वारा में के बीच संबंध को निर्दिष्ट करना ... मैं प्रश्नों के व्यवहार के बारे में चिंतित हूँ इन संरचनाओं का उपयोग करना (जैसे कि एक रिलेशनल मॉडल में एकाधिक शामिल होते हैं। यदि आप किसी परिवार के उत्पादों के लिए पूछते हैं ... आपको उत्पादों के पेड़ में अंतिम गहरे क्वालीफायर के लिए शामिल होने और परिवार के बाद शामिल होने की आवश्यकता है)
शायद कुछ डुप्लीकेट जानकारी बनाने के लिए बेहतर है (Google टीम की सिफारिशों के क्रम में: संचालन महंगा है, लेकिन भंडारण नहीं है, इसलिए डुप्लिकेट सामग्री को मुख्य समस्या नहीं देखी जानी चाहिए)
अन्य इसी तरह के सवालों के कुछ प्रतिक्रियाओं का सुझाव:
- स्टोर सभी पैरेंट आईडी एक स्ट्रिंग में एक पदानुक्रम के रूप ...
- एक रास्ता संपत्ति की तरह पी इकाई के बीच संबंधों को डुप्लिकेट एक सब में माता-पिता पेड़ ...
कोई सुझाव?
हाय विल,
हमारे मामले अधिक एक सख्त पदानुक्रमित दृष्टिकोण के रूप में आप दूसरे उदाहरण में प्रतिनिधित्व है। और प्रश्न उत्पादों की सूची को पुनर्प्राप्त करने के लिए है, केवल एक प्राप्त करना सामान्य नहीं है।
हम एक उत्पत्ति से सभी मदिरा, एक वाइनरी से या एक किस्म से पुनः प्राप्त करने की जरूरत है
एक ही रास्ता (यदि हम supose कि विविधता सख्त श्रेणीबद्ध पेड़ का एक और नोड है, केवल एक उदाहरण है) कर सकते थे एक रास्ता संपत्ति में शामिल हो, के रूप में आपका उल्लेख किया:
- /मूल/{आईडी}/वाइनरी/{आईडी}/विविधता/{आईडी}
मुझ से वाइन की एक सूची प्राप्त करने की अनुमति देने के इस तरह की एक क्वेरी लागू करने वाली विविधता:
wines_query = Wine.all()
wines_query.filter('key_name >','/origin/toscana/winery/latoscana/variety/merlot/')
wines_query.filter('key_name <','/origin/toscana/winery/latoscana/variety/merlot/zzzzzzzz')
या एक उत्पत्ति से इस तरह:
wines_query = Wine.all()
wines_query.filter('key_name >','/origin/toscana/')
wines_query.filter('key_name <','/origin/toscana/zzzzzz')
धन्यवाद!
मुझे आपके अपडेट किए गए प्रश्न को समझ में नहीं आया है। पदानुक्रम में 'विविधता' कैसे फिट होगा? अलग-अलग उत्पत्ति और/या वाइनरी से वाइन नहीं होगा? यदि ऐसा है, तो मुझे लगता है कि विविधता को केवल 'वाइन' मॉडल पर एक संपत्ति होना होगा। मैं यह भी नहीं समझता कि आपके प्रश्न क्या पूरा कर रहे हैं कि मेरे अपने उदाहरण प्रश्न नहीं थे। –