2010-11-29 10 views
11

फ़ंक्शन begin_transaction एक बूलियन तर्क लेता है जो इंगित करता है कि किस प्रकार का सिंक्रनाइज़ेशन किया जाना चाहिए; गलत होने पर वास्तविक या तार्किक जब भौतिक।क्योटो कैबिनेट डेटाबेस का "भौतिक सिंक्रनाइज़ेशन" क्या है?

इसका अर्थ क्या है जब यह "भौतिक" या हार्ड, सिंक्रनाइज़ेशन को संदर्भित करता है?

उत्तर

8

मैं बिल्कुल जावा समकक्ष के बारे में निश्चित नहीं हूँ, लेकिन:

  • तार्किक तुल्यकालन मतलब यह है कि किसी भी डीबी परिवर्तन फाइल सिस्टम के लिए डीबीएमएस कैश से लिखा मिलता है। सी में आप fprintf/fwrite/write/etc का उपयोग कर ऐसा करेंगे।

  • भौतिक सिंक्रनाइज़ेशन का मतलब उपरोक्त है, ओएस से पूछने के अतिरिक्त ऑपरेशन के साथ स्थायी सिस्टम (हार्ड ड्राइव, एसएसडी, जो कुछ भी) में फाइल सिस्टम कैश में रखने के बजाय परिवर्तन में कहा गया है। यह सुनिश्चित करता है कि अगर कुछ भी अनजान होता है तो वे परिवर्तन खो नहीं जाते हैं। एक लिनक्स/POSIX सिस्टम पर जो fsync() या fdatasync() सिस्टम कॉल को कॉल करने का संकेत देगा।

संपादित करें:

जाहिर fsync के बराबर() जावा में FileDescriptor.sync() है:

http://download.oracle.com/javase/1.4.2/docs/api/java/io/FileDescriptor.html#

मुद्दा यह है कि एक DB के लिए सच एसिड अर्थ विज्ञान को प्राप्त करने के लिए है , सभी लेनदेन स्थायी भंडारण माध्यम के लिए सिंक्रनाइज़ किया जाना चाहिए। अन्यथा आपके आवेदन को चुपचाप विफल होने वाले लेनदेन से निपटने में सक्षम होना होगा - डीबीएमएस लेनदेन को फाइल सिस्टम पर धक्का देगी और सफलतापूर्वक वापस आ जाएगी, लेकिन फिर परिवर्तन अगर खो जाए तो प्रणाली खो गई शक्ति।

भौतिक सिंक्रनाइज़ेशन के साथ समस्या यह है कि इसका प्रदर्शन पर महत्वपूर्ण प्रभाव हो सकता है। हार्ड ड्राइव प्रति सेकंड सीमित लेनदेन को संभाल सकता है (एसएसडी बहुत इस पर तेज़ हैं), यही कारण है कि डीबी प्रदर्शन में सुधार करने के लिए पहली बात यह है कि बड़े लेनदेन में आवेषण को बंडल करना है।

+1

क्या कोई इस प्रश्न के लिए "kyotocabinet" टैग जोड़ सकता है? मेरे पास नए टैग बनाने के लिए 1.500 नहीं है। धन्यवाद! –

संबंधित मुद्दे