को देखते हुए इस तरह के RavenDB के रूप में है कि दस्तावेज़ डेटाबेस,, गैर संबंधपरक हैं, तो आप डेटा है कि एक से अधिक दस्तावेज़ में क्या समानता है डुप्लिकेट कैसे से बचने के हैं? यदि आप डुप्लिकेट करना ठीक है तो आप उस डेटा को कैसे बनाए रखें?मैं RavenDB जैसे दस्तावेज़ डेटाबेस में डुप्लिकेट डेटा से कैसे बच सकता हूं?
उत्तर
। वह डिग्री क्या है आपके सिस्टम पर निर्भर करेगी और मामलों का उपयोग करेगी।
उदाहरण के लिए हम उन्हें सेट कर सकते हैं अगर हम एक सामान्य ब्लॉग और उपयोगकर्ता समुच्चय है अप के रूप में:
public class User
{
public string Id { get; set; }
public string Name { get; set; }
public string Username { get; set; }
public string Password { get; set; }
}
public class Blog
{
public string Id { get; set; }
public string Title { get; set; }
public class BlogUser
{
public string Id { get; set; }
public string Name { get; set; }
}
}
इस उदाहरण में मैं की आईडी और नाम गुणों के साथ ब्लॉग वर्ग के भीतर एक BlogUser वर्ग नेस्ट है ब्लॉग के साथ जुड़े उपयोगकर्ता कुल। मैं इन क्षेत्रों को शामिल किया है के रूप में वे केवल क्षेत्रों ब्लॉग वर्ग में रुचि रखता है हैं, यह पता करने के लिए उपयोगकर्ताओं को उपयोगकर्ता नाम या पासवर्ड जब ब्लॉग प्रदर्शित किया जा रहा है की जरूरत नहीं है।
ये घोंसले वाले वर्ग आपके सिस्टम के मामलों पर निर्भर होने जा रहे हैं, इसलिए आपको उन्हें सावधानी से डिजाइन करना होगा, लेकिन सामान्य विचार एग्रीगेट्स को आजमाने और डिजाइन करना है जिसे डेटाबेस से एक ही पढ़ने के साथ लोड किया जा सकता है और उनमें शामिल होगा उन सभी डेटा को प्रदर्शित या कुशल बनाने के लिए आवश्यक है।
यह तो क्या होता है जब User.Name अद्यतन हो जाता है का सवाल होता है।
अधिकांश दस्तावेज़ डेटाबेस के साथ आपको ब्लॉग के सभी उदाहरण लोड करना होगा जो अद्यतन उपयोगकर्ता से संबंधित हैं और Blog.BlogUser.Name फ़ील्ड को अपडेट करें और उन्हें वापस डेटाबेस में सहेजें।
रैवेन थोड़ा अलग है क्योंकि यह अद्यतनों के लिए सेट फ़ंक्शंस का समर्थन करता है, इसलिए आप RavenDB के खिलाफ एक भी अपडेट चलाने में सक्षम हैं, जो कि ब्लॉग यूज़र की तारीख होगी। बिना ब्लॉग के उपयोगकर्ताओं की संपत्ति को उन्हें लोड करना होगा और उन्हें अपडेट करना होगा व्यक्तिगत रूप से।
सभी ब्लॉग के लिए RavenDB भीतर अद्यतन (मैनुअल तरीका) कर रही हो जाएगा के लिए कोड:
public void UpdateBlogUser(User user)
{
var blogs = session.Query<Blog>("blogsByUserId")
.Where(b.BlogUser.Id == user.Id)
.ToList();
foreach(var blog in blogs)
blog.BlogUser.Name == user.Name;
session.SaveChanges()
}
मैं सिर्फ एक उदाहरण के रूप SaveChanges में जोड़ दिया है। रावेनडीबी क्लाइंट वर्क पैटर्न की इकाई का उपयोग करता है और इसलिए यह वास्तव में इस विधि के बाहर कहीं भी होना चाहिए।
अपने प्रश्न IMHO के लिए कोई नहीं "सही" जवाब नहीं है। यह वास्तव में इस बात पर निर्भर करता है कि आप जिस डेटा को डुप्लिकेट कर रहे हैं वह म्यूटेबल है।
दस्तावेज़ डीबी डिजाइन बनाम संबंधपरक के बारे में उत्तर के बहुत सारे के लिए RavenDB documentation पर एक नजर डालें, लेकिन विशेष रूप से Document Structure Design Considerations दस्तावेज़ के "संघों प्रबंधन" अनुभाग में देखें। संक्षेप में, दस्तावेज़ डीबी आईडी द्वारा संदर्भ की अवधारणाओं का उपयोग करते हैं जब वे किसी दस्तावेज़ में साझा डेटा एम्बेड नहीं करना चाहते हैं। ये आईडी एफके की तरह नहीं हैं, वे पूरी तरह से आवेदन करने के लिए आवेदन कर रहे हैं ताकि वे ईमानदारी और समाधान सुनिश्चित कर सकें।
- 1. मैं डेटा को मॉडल कैसे करूँगा जो कि हेरार्कल और रिलेशनल है जैसे दस्तावेज़-उन्मुख डेटाबेस सिस्टम जैसे RavenDB?
- 2. मैं वीआई में स्लैश चरित्र से कैसे बच सकता हूं?
- 3. मैं वाईएएमएल में% वर्णों से कैसे बच सकता हूं?
- 4. मैं चींटी में डबल-कोट्स से कैसे बच सकता हूं?
- 5. मैं गेटटेक्स्ट स्ट्रिंग में '%' वर्ण से कैसे बच सकता हूं?
- 6. मैं एनएसएसटींग में यूनिकोड वर्णों से कैसे बच सकता हूं?
- 7. मैं व्यूमोडेल में कमांड क्लटर से कैसे बच सकता हूं?
- 8. मैं AlassetLibrary से स्थान सेवा से कैसे बच सकता हूं?
- 9. क्या मैं परिवर्तनीय नामों में वर्णों से बच सकता हूं?
- 10. मैं वैश्विक स्थिति से कैसे बच सकता हूं?
- 11. मैं नाम उलझन से कैसे बच सकता हूं?
- 12. एक Ravendb दस्तावेज़
- 13. मैं साझा होस्टिंग वातावरण में RavenDB कैसे चला सकता हूं?
- 14. क्या मैं जावा संदेशफॉर्मैट में ब्रेसिज़ से बच सकता हूं?
- 15. मैं RavenDB
- 16. मैं SQL सर्वर तालिका में डुप्लिकेट डेटा डालने से कैसे रोक सकता हूं?
- 17. मैं SQL सर्वर से डेटा कैसे निर्यात कर सकता हूं?
- 18. रूबी रेगेक्स में मैं बच निकलने वाला चरित्र ("बच निकला नहीं" चरित्र कैसे लगा सकता हूं?
- 19. मैं कैसे ज़ेडग्राफ से बच सकता हूं, मेरे वाईएक्सिस को 1000 से विभाजित करता है?
- 20. मैं बहिष्कृत तरीकों से कैसे बच सकता हूं और पीछे की संगतता को कैसे बनाए रख सकता हूं?
- 21. RavenDb
- 22. मैं जावा में ResultSet बंद अपवाद से कैसे बच सकता हूं?
- 23. आप RavenDB में रिकेंसी द्वारा दस्तावेज़ कैसे बढ़ा सकते हैं?
- 24. मैं RavenDb इंडेक्स प्रतिकृति
- 25. मैं एक्सएसडी फाइलों से डेटाबेस टेबल कैसे बना सकता हूं?
- 26. मैं एक ही इंटरफेस को लागू करने वाले वर्गों के लिए डुप्लिकेट यूनिट टेस्ट लिखने से कैसे बच सकता हूं?
- 27. मैं सी ++ में 'सिस्टम' कमांड में भेजे गए चर से कैसे बच सकता हूं?
- 28. मैं Python3 में एक MySQL डीबी में इनपुट से कैसे बच सकता हूं?
- 29. मैं एक शाब्दिक स्ट्रिंग से कैसे बच सकता हूं जिसे मैं नियमित अभिव्यक्ति में जोड़ना चाहता हूं?
- 30. मैं इस यूनिट परीक्षण में एकाधिक आवेषणों से कैसे बच सकता हूं?
यह वास्तव में सेट काम करता है, का समर्थन करता है वैसे भी –
अद्यतन करने के लिए तो यह कहना है कि आप किसी भी डेटा आप अन्यथा दूसरे दस्तावेज से पुनः प्राप्त करेगा और अद्यतन करने के लिए/डुप्लिकेट किए गए डेटा को बनाए रखने के सेट कार्यों का उपयोग करने की आवश्यकता होगी दोहराने चाहिए सुरक्षित है? वह अपडेट कैसा दिखता है (यह आपके उत्तर को इतना बेहतर बना देगा!)। धन्यवाद! –
@ जोन मैंने इसे लंबे समय से करने का एक उदाहरण जोड़ा है, मैंने अभी तक Ravens सेट ऑपरेशंस में नहीं देखा है। मैं इसे देख लूंगा और एक उदाहरण जोड़ूंगा। –