25

मैं था बस लगता है कि अब यह पर्याप्त रैम अपने डेटाबेस सर्वर पर आपके पूरा डेटाबेस कैश क्यों memory database में विशेषज्ञ (जैसे TimesTen, यह भी Wikipedia page देखें) कर रहे हैं कि थे सब क्रोध कुछ साल पहले नहीं किया है आम है अधिक इस्तेमाल किया जा रहा है?मुझे मेमोरी डेटाबेस में उपयोग करने पर विचार करना चाहिए और इसके लिए क्या समस्या है?

ऐसा लगता है कि जैसे ही समय चल रहा है, डिस्क आधारित डेटाबेस का उपयोग कम नहीं किया जा रहा है, उदाहरण के लिए अधिकांश एप्लिकेशन पारंपरिक तर्कसंगत डेटाबेस पर बनाए जाते हैं। मैं विपरीत की उम्मीद करता क्योंकि रैम बहुत सारे सर्वरों के लिए स्वतंत्र होने के करीब आ रहा है।

मैं इस पूछ रहा हूँ, के रूप में मैं सिर्फ ढेर-अतिप्रवाह-संरचना पर पढ़ने और पेज का कहना है

यह महत्वपूर्ण है क्योंकि ढेर ओवरफ्लो के डेटाबेस रैम में लगभग पूरी तरह से है और अभी भी मिलती है सटीक बहुत अधिक लागत।

लेकिन मुझे नहीं लगता कि यह सामान्य समस्या के बजाय "पॉइंटर्स" और "संग्रह" का उपयोग किया जाने पर यह एक समस्या होगी। डिस्क एक्सेस गति पर गोल सीमा प्राप्त करने के लिए Btree बहुत चालाक हैं, उदाहरण के लिए वे डिस्क उपयोग को कम करने के लिए CPU उपयोग का व्यापार करते हैं। हालांकि अब हमारे पास रैम मैच है।

लेकिन हम अभी भी, डेटाबेस की जरूरत है अपने स्वयं के

  • कर के रूप में लॉक करना
  • डेडलॉक का पता लगाने
  • प्रवेश करने
  • लेन-देन पुन: प्राप्त करना
  • आदि

बहुत कठिन है।

@ एसएलओटी, यह देखते हुए कि हम सभी इंडेक्स चुनने में लंबे समय तक खर्च करते हैं, जुड़ने से बचते हैं और डेटाबेस प्रदर्शन समस्याओं की जांच करते हैं। इसके लिए अवश्य ही एक बेहतर तरीका होना चाहिए। ' कुछ साल पहले हमें बताया गया था कि "मेमोरी डेटाबेस में" बेहतर तरीका था। तो इससे पहले कि मैं एक आदि का उपयोग करने में कूदूं, मैं जानना चाहता हूं कि अन्य लोग उनका उपयोग क्यों नहीं कर रहे हैं।

(मैं, TimesTen अपने आप का उपयोग करने की संभावना नहीं कर रहा हूँ के रूप में यह उच्च कीमत है ($41,500.00/Processor) और मैं ओरेकल की बिक्री लोगों से बात कर रहा पसंद नहीं है - मैं नहीं बल्कि कोड लिखने मेरा समय खर्च करते हैं।)

भी देखें:

अद्यतन:

मैं इस प्रश्न पूछा एक लंबी समय पहले, इन दिनों Microsoft SQL सर्वर है "In-Memory OLTP" एक स्मृति-अनुकूलित डेटाबेस SQL ​​सर्वर इंजन में एकीकृत इंजन है। यह सस्ता नहीं है, लेकिन कुछ वर्कलोड के लिए बहुत तेजी से लगता है।

+0

"नहीं अधिक प्रयोग किया जा रहा?" क्या से अधिक? क्या आपके पास कुछ मीट्रिक या संख्याएं या सर्वेक्षण हैं? मैं सवाल समझ में नहीं आता। क्या आपके पास एक विशिष्ट उदाहरण है जहां इसका उपयोग किया जाना चाहिए लेकिन नहीं है? या यह सिर्फ एक चर्चा विषय है? आपको क्या जानने की जरूरत है? आप क्या प्रोग्रामिंग समस्या क्या है? –

+0

पर्याप्त स्मृति?यहां तक ​​कि छोटे अनुप्रयोग भी आसानी से 100 जीबी डिस्क स्पेस का उपयोग करते हैं। मैं शायद ही कभी उन सर्वरों के साथ काम करता हूं जिनके पास एक ही ऐप के लिए बहुत अधिक स्मृति उपलब्ध है। –

उत्तर

5

शायद अधिकतर मेमोरी डेटाबेस के परिपक्व उत्पाद नहीं हैं जिन्हें क्लासिक डेटाबेस के लिए पूर्ण प्रतिस्थापन के रूप में उपयोग किया जा सकता है।

रिलेशनल डेटाबेस एक बहुत पुरानी अवधारणा है। यद्यपि आगे बढ़ने और नई प्रौद्योगिकियों को विकसित करने के लिए कई दृष्टिकोण थे, उदाहरण के लिए। ऑब्जेक्ट उन्मुख डेटाबेस, रिलेशनल डेटाबेस वास्तव में उनकी अवधारणाओं को नहीं बदलते थे। चीजों को तेजी से बदलने की उम्मीद न करें, क्योंकि पिछले दस या पंद्रह वर्ष या उससे भी अधिक समय में डेटाबेस में ज्यादा बदलाव नहीं आया है।

मुझे लगता है कि प्रौद्योगिकियों का विकास जितना तेज़ हो सकता है उतना तेज़ नहीं है। नए अवधारणाओं को परिपक्व और स्थापित करने में दशकों लगते हैं। सबसे पहले डेटाबेस प्रौद्योगिकियों में, जहां परिपक्वता कुछ और महत्वपूर्ण है तो कुछ भी।

दस या बीस वर्षों में, डेटाबेस शायद आज के समान नहीं हैं। यदि इन-मेमोरी डेटाबेस भविष्य हैं - कोई भी आज इसे नहीं बता सकता है - उन्हें बस विकसित करने के लिए कुछ और समय चाहिए।

5

प्रवृत्ति आक्रामक रूप से कैश करने और कैश को पॉप्युलेट करने के लिए डेटाबेस का उपयोग करने लगती है। चाहे डेटाबेस कहां रहता है, इसमें शामिल होने के बावजूद अभी भी महंगा है इसलिए प्राथमिकता एक बार में शामिल होने लगती है और परिणाम Memcached या Velocity जैसे परिणाम को कैश करता है।

अभी भी इन-मेमोरी डेटाबेस हैं और उनका उपयोग किया जाता है, लेकिन यह उस संदर्भ पर निर्भर करता है जिसका आप उपयोग करना चाहते हैं। उदाहरण के लिए SQLite डेटा परतों का परीक्षण करते समय अक्सर इन-मेमोरी डेटाबेस के रूप में उपयोग किया जाता है।

2

खैर, इन-स्मृति डेटाबेस आम तौर पर DACID (Atomicity, संगतता, अलगाव, स्थायित्व) में (स्थायित्व) अपने स्वभाव से ही कमी है। यह "हाइब्रिड" दृष्टिकोण के साथ एक हद तक दूर किया जा सकता है, हालांकि, कुछ बिंदु पर (या तो डेटा स्वयं, या एक लेनदेन लॉग) को स्थायित्व पहलू प्रदान करने के लिए कहीं जारी रखा जाना चाहिए। यह आमतौर पर प्रदर्शन को धीमा कर सकता है या अन्य गैर-वांछनीय गुणों को इन-मेमोरी डेटाबेस समाधान

इसके विपरीत, आजकल अधिकांश आरडीबीएमएस के पास एसीआईडी ​​का पूर्ण पूरक है, साथ ही उनके पीछे कई दशकों का विकास भी हो सकता है। इसके परिणामस्वरूप डिस्क-आधारित डेटाबेस सिस्टम बहुत लोकप्रिय हैं, विशेष रूप से कई वर्षों के सुधार और अनुकूलन के साथ जो आधुनिक दिन आरडीबीएमएस सिस्टम ने देखा है (आपका BTree उदाहरण केवल कई में से एक है)।

एक और पहलू एप्लिकेशन डेवलपर के रूप में हमारी क्षमता caching के रूप में इस तरह के तंत्र द्वारा डेटाबेस पर भार को कम करने के लिए, जिससे एक आवेदन के डेटा स्तर से भी बहुत कुछ कथित प्रदर्शन फैलाएंगे है। दरअसल, हाल ही के वर्षों में कैशिंग ने हाल ही के वर्षों में व्यापक विकास देखा है, उदाहरण के लिए वितरित कैशिंग सामान्य है (उदाहरण के लिए users of memcached की संख्या देखें)।

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

+0

टाइम 10 स्थायित्व प्रदान करने के लिए एक लेनदेन लॉग का उपयोग करता है, मुझे लगता है कि यह पुनः लोड करने के लिए चेकपॉइंट भी बचाता है। इसलिए अपना खुद का लेखन कठिन है। –

+0

"माइक्रोसॉफ्ट जल्द ही इन-मेमोरी डेटाबेस बाजार में आने की सोच रहा है" - क्या आपके पास इसके लिए एक लिंक है? –

+0

एरलांग में मेनेसिया अंतर्निर्मित डेटाबेस है जो केवल नोड्स (और डिस्क-केवल या मिश्रित) ऑपरेशन के लिए सक्षम है, जिसमें कई नोड्स पर प्रतिकृति द्वारा प्रदान की गई स्थायित्व है। एक चेक के लायक, शायद आप इसे बाद में उपयोग कर सकते हैं। – ron

4

कार्गो संस्कृति का सबसे महत्वपूर्ण कारण है, और आईटी में बहुत कम ज्ञान स्तर है।अधिकांश अनुप्रयोग पर्याप्त रूप से अच्छी तरह से काम करते हैं जो दृढ़ता समाधान का उपयोग करता है, और जैसे ही कंप्यूटर हर साल तेजी से बढ़ रहे हैं, पर्याप्त लोग दर्द महसूस नहीं करते हैं और समस्या को इंगित करने में सक्षम हैं।

माइक्रोसॉफ्ट और ओरेकल यह (राजनीतिक रूप से) संभव बनाने के लिए उन्हें बेहतर दृष्टिकोण के साथ आने के लिए अपने डाटाबेस उत्पादों के साथ बहुत अधिक पैसा बनाते हैं।

एक संबंधपरक डेटाबेस का उपयोग करने के विकास की लागत पारदर्शी तो प्रबंधन विचार कोई समस्या नहीं है कि वहाँ एक समाधान है, अकेले नहीं बना रहे हैं।

10

कोई भी वास्तव में सवाल का जवाब "जब मैं स्मृति डेटाबेस में एक प्रयोग करने पर विचार करना चाहिए कि क्या इस मुद्दे के लिए बाहर देखने के लिए कर रहे हैं?" तो मैं इसे जाने दूंगा।

आप एक में स्मृति डेटाबेस पर विचार करना चाहिए, यदि: 1. लक्ष्य प्रणाली के प्रबंधन के लिए डेटा है, लेकिन कोई मीडिया की लगातार 2. प्रदर्शन आवश्यकता बस एक लगातार डेटाबेस

के साथ मुलाकात नहीं किया जा सकता # 1 के लिए है , अपने सेट-टॉप बॉक्स (एसटीबी) में टीवी गाइड के बारे में सोचें। लो-एंड एसटीबी (यानी जिनके पास कोई डीवीआर क्षमता नहीं है) में कोई लगातार भंडारण नहीं है, और लगातार निरंतर भंडारण की आवश्यकता नहीं है। लेकिन एक 400-चैनल, 14-दिन टीवी गाइड के लिए डेटाबेस गैर-तुच्छ है। यहां एक प्रदर्शन आवश्यकता भी है, क्योंकि डेटा ट्रांसपोंडर कैरोसेल से उच्च गति पर आता है और यह 'कैप्चर होने तक प्रतीक्षा करें या इंतजार करें' का मामला है। लेकिन दृढ़ता की कोई आवश्यकता नहीं है। हमने यह सब देखा है; जब आप अपने घर पर बिजली खो देते हैं, जब टीवी गाइड पर वापस आता है तो "जल्द ही उपलब्ध होगा" क्योंकि यह ट्रांसपोंडर या केबल हेड-एंड से खुद को प्रावधान कर रहा है। नेटवर्क राउटर समान विशेषताएं साझा करते हैं: कोई निरंतर भंडारण नहीं, तेज़ होने की आवश्यकता है, और डेटाबेस को बाहरी स्रोत (नेटवर्क पर सहकर्मी राउटर, इस मामले में, रूटिंग तालिका को दोबारा बदलने के लिए) से प्रावधान किया जा सकता है। सैन्य प्रणालियों, उच्च आवृत्ति व्यापार प्रणाली, और अधिक में लक्ष्यीकरण वास्तविक समय:

# 2 की अंतहीन उदाहरण हैं।

प्रश्न के दूसरे भाग के बारे में, "देखने के लिए जारी करें": बहुत सारे हैं।

सुनिश्चित करें कि आप एक सच्चे में स्मृति डेटाबेस का मूल्यांकन कर रहे है, तो आप प्रदर्शन है कि केवल एक में स्मृति डेटाबेस वितरित कर सकते हैं की जरूरत है सुनिश्चित करें। एक सतत डेटाबेस कैशिंग समान नहीं है। एक रैम ड्राइव में एक सतत डेटाबेस फेंकना एक जैसा नहीं है। इन-मेमोरी डेटाबेस का उपयोग करना जो स्वाभाविक रूप से लेनदेन लॉगिंग करता है (जैसे टाइम्सटेन) समान नहीं है (भले ही आप/dev/null पर लॉग इन करें)।

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

एसीआईडी ​​के बारे में: मेमोरी डेटाबेस सिस्टम में 'डी' (स्थायित्व) की कमी नहीं है। इसे बस संदर्भ में लिया जाना है। एक सतत डेटाबेस में लेन-देन केवल तब तक टिकाऊ होते हैं जब तक यह संग्रहीत मीडिया टिकाऊ होता है। इन-मेमोरी डेटाबेस के लिए भी यही बात सच है। किसी भी मामले में, यदि आप स्थायित्व की परवाह करते हैं, तो आपके पास बैकअप बेहतर होगा।

1

यह भी एक विकल्प है: http://www.memsql.com/

मैं इसे व्यक्तिगत रूप से उपयोग नहीं किया है, लेकिन यह इन-स्मृति MySQL के लिए एक ड्रॉप में प्रतिस्थापन की तर्ज पर होना चाहिए है।

0

एसक्यूएल के विभिन्न पोर्टेबल संस्करण, जो मुख्य रूप से मोबाइल उपकरणों के लिए डिज़ाइन किए गए समान दक्षता के साथ काम करेंगे।

SQLite

SQL Server Compact Edition

ये सिर्फ बड़े खिलाड़ियों अन्य विकल्प हो सकता है, लेकिन बड़े खिलाड़ियों यह के रिलीज के साथ न्यूनतम आवश्यकताओं को संभाल .. :)

और स्मृति डेटाबेस में, आपके पास अगर उतार-चढ़ाव या पावरकट उत्पन्न होता है तो आप डेटा को लगातार बैक अप लेते हैं, जिससे आप पूरे समूह को नुकसान पहुंचा सकते हैं। जैसा कि दूसरे में इसे माध्यमिक मेमोरी (एचडीडी) में संभाला जाएगा और हानि की संभावना 10% स्मृति डीबी की तुलना में होगी।

मैं इस मदद मिल सकती है आशा :)

0

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

इस क्षेत्र में लोकप्रिय विकल्प जावा डेवलपर्स के लिए .NET डेवलपर और ओरिएंट डीबी के लिए RavenDB लगता है। दोनों में स्मृति डेटाबेस के रूप में कार्य क्योंकि सकते हैं, और "कुछ और" कॉन्फ़िगरेशन के आधार पर है, तो आप (जावा में नेट, Maven या चींटी सेटिंग्स में app.config) एक या दूसरे आपके कॉन्फ़िगरेशन के आधार पर उपयोग कर सकते हैं।

-1

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

पारंपरिक आरडीबीएमएस: आपका MySQL क्लस्टर पर्याप्त तेज़, बनाए रखने के लिए पर्याप्त आसान है, और आपको एसीआईडी-अनुपालन की विश्वसनीयता होना पसंद है।

में स्मृति वितरित cahce: आपका आवेदन तेजी से करने के लिए पढ़ता है की जरूरत है और स्थिरता या जटिल लेनदेन के बारे में बहुत ज्यादा चिंता किए बिना लिखता है।

में स्मृति आरडीबीएमएस:

  1. (स्पीड): आपका आवेदन तेजी से अपनी डिस्क आधारित डेटाबेस कर सकते हैं की तुलना में डेटा/अनुरोधों को संसाधित करने की जरूरत है।
  2. (जटिलता): आप और जटिल व्यवहार पढ़ता है बनाने की जरूरत है जुड़ जाता है और एकत्रित साथ लिखते हैं और एसक्यूएल की शक्ति का उपयोग करना पसंद है।
  3. (अनुमापकता): आप डाउनटाइम बिना क्षैतिज अपने डेटाबेस पैमाने पर करने की जरूरत है।
  4. (रखरखाव): आपको अपने रखरखाव के कामों को जोड़ने के बिना उच्च उपलब्धता, प्रतिकृति, भार संतुलन और आपदा पुनर्प्राप्ति प्रदान करने के लिए डेटाबेस की आवश्यकता है।
  5. (चेतावनी): आपका डेटा स्मृति में फिट करना चाहिए (आमतौर पर टेराबाइट्स में)।
संबंधित मुद्दे

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