2010-04-16 11 views
26

.NET में मोंगोडीबी और नोआरएम के साथ खेलना।मोंगोडीबी लेनदेन?

चीज जो मुझे भ्रमित करती है - कोई लेनदेन नहीं है
(केवल MongoConnection.Begin/EndTransaction या ऐसा कुछ नहीं बता सकता)।

मैं कुछ विफल होने के मामले में कार्य पैटर्न और रोलबैक परिवर्तनों का यूनिट का उपयोग करना चाहता हूं।

क्या अभी भी एक साफ तरीका है कि आईट्रांसैक्शन के साथ मेरे भंडार को कैसे समृद्ध किया जाए?

उत्तर

28

मोंगोडीबी जटिल बहु-दस्तावेज़ लेनदेन का समर्थन नहीं करता है। अगर ऐसा कुछ है तो आपको इसकी ज़रूरत है शायद यह आपके लिए बहुत अच्छा नहीं है।

ज्यादातर मामलों में, हमने पाया है कि जटिल लेनदेन की आवश्यकता नहीं है। मोंगोडीबी में सभी परिचालन एक ही दस्तावेज़ पर परमाणु हैं, और हम अच्छे update modifiers का समर्थन करते हैं, जो बहुत से संचालन करते हैं जिन्हें लेनदेन को आसान बनाने (और तेज़) की आवश्यकता होती है।

+0

मुझे लगता है कि 'अद्यतन modifiers' हिस्सा नहीं मिला। वे वास्तव में कैसे मदद कर सकते हैं? (ध्यान रखें कि मैं इस पर पूरी नौसिखिया हूं) :) –

+1

अद्यतन संशोधक आपको एक ही ऑपरेशन के साथ परमाणु रूप से कुछ जटिल संचालन करने की अनुमति देते हैं - ऐसा लगता है जैसे "इस क्षेत्र के मान को x द्वारा बढ़ाएं" या "नया मान जोड़ें यह सरणी "। – mdirolf

+0

@mdirolf अगर एक परिदृश्य में आता है तो वह एक रिफैक्टर होना चाहिए जहां वह ट्रांज़ेक्शन पर निर्भर है? – Tushar

17

यह सच है कि मोंगोडीबी बॉक्स के बाहर लेनदेन का समर्थन नहीं करता है, लेकिन आप अपने आप पर आशावादी लेनदेन लागू कर सकते हैं। वे काम की इकाई ठीक फिट बैठते हैं। मैंने एक जावा उदाहरण और GitHub पर कुछ स्पष्टीकरण लिखा ताकि आप आसानी से सी # में दोहरा सकें।

+2

यह वास्तव में अच्छा उदाहरण है। मोंगोडीबी के अंदर इस तरह लागू नहीं किया गया है, यहां तक ​​कि स्विच करने योग्य अमूर्त/प्लगइन के रूप में भी। – gertas

+1

बहुत बढ़िया लिखो, ऐसा करने के लिए धन्यवाद। +10 अगर मैं कर सकता था। – jcollum

+0

यदि आपको मोंगोडब में लेन-देन की आवश्यकता है, तो आपको केवल अपने लिंक डिज़ाइन के बजाय अपने सॉफ़्टवेयर डिज़ाइन/आर्किटेक्चर – dit

1

रिकॉर्ड के लिए कुछ नोट्स।

MongoDB लेनदेन समर्थन नहीं है, वहीं यह atomicity on a single document समर्थन करता है:

MongoDB एक एकल दस्तावेज़ के भीतर परमाणु संचालन के लिए समर्थन करता है। नेस्टेड दस्तावेजों द्वारा प्रदान की गई संभावनाओं को देखते हुए, यह सुविधा बड़ी संख्या में उपयोग-मामलों के लिए समर्थन प्रदान करती है।

इसके अलावा, "Isolate Sequence of Operations" के बारे में मैन्युअल प्रविष्टि दिलचस्प हो सकती है। उदा .:

हालांकि, आप एकल लेखन ऑपरेशन को अलग कर सकते हैं जो अलगाव ऑपरेटर का उपयोग करके कई दस्तावेज़ों को प्रभावित करता है।

0

आप इसके बजाय MongoDb TokuMX का उपयोग कर सकते हैं।

http://www.tokutek.com/products/tokumx-for-mongodb/

TokuMXTM है एक खुला स्रोत, MongoDB के उच्च प्रदर्शन वितरण जो नाटकीय रूप से सुधार हुआ है प्रदर्शन और संचालन क्षमता बुनियादी MongoDB की तुलना में। TokuMX MongoDB के लिए एक ड्रॉप-इन प्रतिस्थापन है, और 20X प्रदर्शन सुधार, डेटाबेस आकार में 90% की कमी, और एमवीसीसी के साथ एसीआईडी ​​लेनदेन के लिए समर्थन प्रदान करता है।

1

v4.0 (ग्रीष्मकालीन 2018 में आने) के रूप में, मोंगोडीबी बहु-दस्तावेज़ एसीआईडी ​​लेनदेन का समर्थन करेगा। स्नैपशॉट अलगाव के माध्यम से, लेन-देन डेटा के वैश्विक रूप से लगातार दृश्य प्रदान करेगा, और डेटा अखंडता को बनाए रखने के लिए सभी या कुछ भी निष्पादन लागू नहीं करेगा। अधिक जानकारी और बीटा के लिए, https://www.mongodb.com/transactions

इस blog post में, यदि आप इतिहास और हमारे तर्क में रुचि रखते हैं, तो भी मैं बहु-दस्तावेज़ एसीआईडी ​​लेनदेन की हमारी यात्रा की रूपरेखा तैयार करता हूं।

1

MongoDB 4।0 बहु-दस्तावेज़ लेनदेन के लिए समर्थन जोड़ देगा।

https://www.mongodb.com/transactions

+0

पर पुनर्विचार करना चाहिए, कृपया अपने उत्तर में मुख्य टेक्स्ट डालें। अन्यथा यदि लिंक नीचे चला जाता है तो हम जवाब खो देंगे! :) – sniperd