2013-07-04 3 views
9

Google ऐप इंजन में लेनदेन अलगाव को स्नैपशॉट अलगाव कहा जाता है, जहां आप पिछले हटाए गए लेनदेन को नहीं देखते हैं या लेनदेन के भीतर ही डालते हैं, लेकिन लेनदेन शुरू होने पर केवल डेटास्टोर की स्थिति (https://developers.google.com/appengine/docs/python/datastore/transactions)। पुराने लेख में यह कहता है कि लेनदेन स्तर वास्तव में सर्जिकल है (https://developers.google.com/appengine/articles/transaction_isolation)।Google ऐप इंजन में लेनदेन अलगाव

Google टेस्ट संगतता किट (टीकेसी) दिखाता है कि यह वास्तव में स्नैपशॉट अलगाव है, लेकिन उपर्युक्त लेख में यह कहता है, "लेनदेन के अंदर, दूसरी ओर, अलगाव स्तर डिफ़ॉल्ट रूप से स्नैपशॉट होता है, जिसमें बदलने का विकल्प होता है serializable "।

मेरा सवाल यह है कि, मैं अलगाव स्तर को सरल बनाने के लिए कैसे सक्षम करूं?

+1

अच्छा सवाल, यह भी –

+0

दस्तावेज नहीं है GAE दस्तावेज़ों में कुछ दस्तावेज नहीं है? चौंका देने वाला। कम से कम यदि कोई GAE टीम सदस्य यहां प्रश्न का उत्तर देता है तो कोई इसे Google खोज के साथ ढूंढ पाएगा। –

+0

@RomanLevin मुझे यह बिल्कुल चौंकाने वाला नहीं लगता है ... btw स्वीकार किए गए उत्तर से डेटास्टोर एपीआई संदर्भ लिंक काम करना बंद कर दिया (चौंकाने वाला नहीं) – themihai

उत्तर

3

आप देख सकते हैं कि BeginTransaction API Reference में अलगाव स्तर को कैसे बदला जाए। यह वर्तमान में Google क्लाउड डेटास्टोर HTTP एपीआई में केवल कॉन्फ़िगर करने योग्य है और यह सभी ऐप इंजन एसडीके के लिए सर्जिकल में डिफ़ॉल्ट है। हालांकि मुझे नहीं लगता कि यह वही करेगा जो आप करना चाहते हैं।

स्नैपशॉट बनाम सर्जिकल नियंत्रण लेनदेन अलगाव या एक दूसरे के साथ समवर्ती लेनदेन कैसे सहभागिता करता है। यह नियंत्रित नहीं करता है कि एक लेनदेन अपने आप से कैसे बातचीत करता है (हालांकि कुछ प्रणालियों में इन दो चीजें उलझी जाती हैं)।

डेटास्टोर में, सर्जिकल सेट करने से यह ऐसा नहीं होगा कि एक लेनदेन अपने स्वयं के असामान्य उत्परिवर्तन देखेगा। इसका मतलब केवल तभी होता है जब समवर्ती लेनदेन टकराएंगे यदि उनके पढ़ने और लिखने के पैटर्न क्रमबद्ध होने पर मान्य नहीं हैं। उदाहरण के लिए, निम्न दो लेनदेन जरूरी जब serializable अलगाव का उपयोग कर भिड़ना होगा:

TX1: READ A, WRITE B' 
TX2: READ B, WRITE A' 

इन दो orderings में से कोई भी रूप में संभव हो रहे हैं:

READ A, WRITE B', READ B (conflict), WRITE A' 
READ B, WRITE A', READ A (conflict), WRITE B' 

हालांकि, इन लेनदेन जरूरी स्नैपशॉट isolation के साथ भिड़ना नहीं होंगे।

दोनों स्नैपशॉट और सर्जिकल डेटा के 'स्नैपशॉट' से पढ़े जाते हैं, जैसे कि लेनदेन चलने के दौरान लेनदेन संबंधी अलगाव गारंटी के साथ संघर्ष करने के तरीके में डेटा बदल दिया जाता है, लेनदेन नहीं किया जा सकता है।