मैं अभी भी bigtable/nosql में डेटा मॉडलिंग के बारे में अपने सबक सीख रहा हूं और कुछ प्रतिक्रिया की सराहना करता हूं। क्या यह कहना उचित होगा कि मुझे अपने डेटा मॉडलिंग में माता-पिता से बचना चाहिए- अगर मुझे अक्सर माता-पिता में कुल मिलाकर बच्चों से निपटने की ज़रूरत होती है?अभिभावक-> एपेंगिन पायथन (bigtable) में बाल संबंध
उदाहरण के लिए, मान लीजिए कि मैं एक ब्लॉग है कि लेखकों की एक संख्या से करने के लिए योगदान किया जाएगा निर्माण कर रहा हूँ, और एक दूसरे की पोस्ट है, और प्रत्येक पोस्ट टैग नहीं है। तो मैं संभावित रूप से इस तरह कुछ स्थापित कर सकता था:
class Author(db.Model):
owner = db.UserProperty()
class Post(db.Model):
owner = db.ReferenceProperty(Author,
collection_name='posts')
tags = db.StringListProperty()
जैसा कि मैं समझता हूं कि यह लेखक अभिभावक के आधार पर एक इकाई समूह बनाएगा। क्या इससे अक्षमता का कारण बनता है यदि मुझे ज्यादातर टैग द्वारा पोस्ट के लिए पूछताछ की आवश्यकता होती है, जिसे मैं कई लेखकों में कटौती करने की उम्मीद करता हूं?
मैं समझता हूं कि सूची गुणों पर एक क्वेरी करने में अक्षम होना अक्षम हो सकता है। आइए मान लें कि प्रत्येक पोस्ट में औसतन 3 टैग होते हैं, लेकिन 7 तक सभी तरह से जा सकते हैं। और मुझे उम्मीद है कि संभावित टैग का संग्रह कम सैकड़ों में होगा। क्या इस मॉडल को इस तरह से बदलने के लिए कोई फायदा है?
class Author(db.Model):
owner = db.UserProperty()
class Post(db.Model):
owner = db.ReferenceProperty(Author,
collection_name='posts')
tags = db.ListProperty(db.Key)
class Tag(db.Model):
name = db.StringProperty()
या मैं बंद बेहतर होगा कुछ इस तरह कर रही है?
class Author(db.Model):
owner = db.UserProperty()
class Post(db.Model):
owner = db.ReferenceProperty(Author,
collection_name='posts')
class Tag(db.Model):
name = db.StringProperty()
class PostTag(db.Model):
post = db.ReferenceProperty(Post,
collection_name='posts')
tag = db.ReferenceProperty(Tag,
collection_name='tags')
और आखिरी सवाल ... क्या हुआ अगर मेरी सबसे अधिक आम उपयोग एकाधिक टैग द्वारा पदों के लिए क्वेरी कर दिया जाएगा। उदाहरण के लिए, "{'सेब', 'संतरे', 'खीरे', 'साइकिल'} में टैग के साथ सभी पोस्ट खोजें" क्या इनमें से एक दृष्टिकोण उन प्रश्नों के लिए उपयुक्त है जो टैग के संग्रह में से कोई भी पोस्ट ढूंढते हैं ?
धन्यवाद, मुझे पता है कि यह एक मुट्ठी भर था। :-)
आपके कोई भी उदाहरण इकाई समूह नहीं बनाते हैं। पहले उदाहरण में, आप एक संदर्भ प्रॉपर्टी का उपयोग कर रहे हैं, जो कि अन्य इकाई का संदर्भ बनाता है - यह उत्परिवर्तनीय है, और स्वामित्व का संकेत नहीं देता है। अभिभावक संदर्भ इकाई के लिए निर्माता के लिए 'पैरेंट' तर्क निर्दिष्ट करके बनाए जाते हैं - विवरण के लिए यह पृष्ठ देखें: http://code.google.com/appengine/docs/python/datastore/entities.html#Entity_Groups_and_Ancestor_Paths –
आह, धन्यवाद निक। मैं उस हिस्से को याद कर रहा था ... सोचा था कि यह उन संदर्भों का था जो मूल संबंध बनाते थे और गायब थे कि आपको माता-पिता को निर्माता को पास करने की आवश्यकता थी। यह अब समझ में आता है। –