MySQL

2008-11-28 2 views
7

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

डेटाबेस के बदले में मेरा सर्वोत्तम, स्केलेबल विकल्प क्या हैं?

+0

फैसले में है:।! SQLite :) –

+0

कोई भी बारे में अधिक डेटा की किस तरह एक बहुत जानने के बिना इस सवाल का एक जिम्मेदार जवाब दे सकते हैं आप किस माहौल में भंडारण कर रहे हैं, और आप इसके साथ क्या करना चाहते हैं। –

उत्तर

1

आप वास्तव में कुछ स्केलेबल चाहते हैं, मैं एक फ्लैट या एक्सएमएल फ़ाइल के लिए चुनते नहीं होता। जैसे ही आपका डेटा बढ़ता है, यह आपके प्रदर्शन को मार सकता है।

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

13

वहाँ हमेशा SQLite, एक डेटाबेस है कि एक फ़ाइल में संग्रहीत है। SQLite में पहले से ही अंतर्निहित समरूपता है, इसलिए आपको फ़ाइल लॉकिंग जैसी चीजों के बारे में चिंता करने की ज़रूरत नहीं है, और यह पढ़ने के लिए वास्तव में तेज़ है।

अगर, हालांकि, आप डेटाबेस परिवर्तन की बहुत सारी कर रहे हैं, यह सबसे अच्छा उन सभी को एक एक transaction अंदर करना है। यह केवल एक बार फ़ाइल में परिवर्तन लिख देगा, क्योंकि हर बार एक परिवर्तन क्वेरी जारी की जाती है। यह नाटकीय रूप से कई परिवर्तन करने की गति को बढ़ाता है।

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

+0

SQLite एक आवेदन में एकीकृत करने के लिए शानदार और आसान है। सबसे अच्छा, इसका उपयोग करने के लिए कोई क्लाइंट-साइड इंस्टॉलेशन आवश्यक नहीं है, यह सब एप्लिकेशन में एम्बेड किया गया है। –

+0

हालांकि, यह संगामिति मुद्दों है –

1

मुझे सच में यकीन नहीं है कि होना चाहिए, लेकिन क्या आपने वास्तव में उस प्रकाश की जानकारी को एक्सएमएल दस्तावेज़ में संग्रहीत किया है? और यदि आपने SQLite पर विचार नहीं किया है?

2

आप scalability की जरूरत है, तो एक आरडीबीएमएस आपका सर्वश्रेष्ठ दांव है। सबसे बुनियादी स्तर पर, आप फ़ाइलों में डेटा संरचनाओं को क्रमबद्ध कर सकते हैं - हालांकि, आपको फ़ाइल लॉकिंग समस्याओं के लिए खाते की आवश्यकता होगी जो समरूपता को सीमित कर देगी।

SQLite एक SQL फ़ाइल-आधारित डेटाबेस इंजन है, जो एक सतत डेटाबेस डिमन के बिना चला सकता है (उदाहरण के लिए PHP में, यह एक एक्सटेंशन के रूप में चलता है), हालांकि इसमें भी समवर्ती समस्याएं हैं (this question के उत्तर पढ़ें जो मदद कर सकता है आप तय करते हैं कि SQLite आपके लिए सही है या नहीं)।

जब तक कि आपके पास असली डीआरबीएमएस का उपयोग न करने का वास्तव में अच्छा कारण नहीं है, तो मैं सुझाव दूंगा कि आप MySQL या अन्य "पूर्ण उड़ा" इंजनों के साथ चिपके रहें।

1

यदि आपका जावा प्रोग्राम लिखना चाहता है जो एक एम्बेडेड डेटाबेस चाहता है तो hsqldb पर देखें क्योंकि यह जावा में लिखा गया है और जावा प्रोग्राम से बुलाए जाने पर एसक्लाइट को बेहतर बनाता है।

1

आप जावा में लिख रहे हैं, तो जावा डेटाबेस कार्यान्वयन (जारेड HSQLDB का उल्लेख है, वहाँ दूसरों रहे हैं) है कि आप में शामिल सीधे कर सकते हैं।

SQLite स्थिर शामिल करने के लिए ठीक है, लेकिन आप भी आप इस तरह के सी

के रूप में एक संगत भाषा का प्रयोग कर रहे हैं तो मुझे लगता है कि आप के रूप में अच्छी एसक्यूएल उपलब्ध होने की सराहना करेंगे आपके आवेदन के भीतर MySQL शामिल कर सकते हैं।एक्सएमएल फाइलें अब पीडीए सॉफ़्टवेयर लिखते समय कुछ साल पहले इसे काट नहीं सकतीं, लेकिन आईफोन और एंड्रॉइड में अब भी SQLite शामिल है।

1

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

http://hsqldb.org/images/imola_retrieve.jpg http://hsqldb.org/images/imola_retrieve.jpg

6

, और पहले से ही memcached उपयोग करते हैं, की जाँच memcachedb: इस प्रदर्शन की तुलना की जाँच करें। यह memcached प्रोटोकॉल, एक नए ग्राहक के लिए कोई जरूरत नहीं है (लेकिन एक नए डेमॉन)

1

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

बाद में anythig को पैमाने यही कारण है कि कर सकते हैं, बस लोड बदलकर और डाटाबेस के साथ काम करने की प्रक्रियाओं को बचाने के।

1

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

3

मैं हाल ही में similar question से पूछता हूं। यहां कुछ विकल्प दिए गए हैं:

+0

ESE एक कैश डेटा की बड़ी मात्रा में है, जरूरी नहीं के रूप में के लिए अच्छा है। यह ई के लिए महान काम करता है, एक्सचेंज, जीत, एफआरएस, और अन्य प्रौद्योगिकियों। – Simara