2010-10-19 11 views
10

एक छोटे PHP एप के लिए मैं लिख रहा हूं, हमें बड़ी संख्या में रिकॉर्ड्स स्टोर करना होगा जिसमें हैश कुंजी है, और कुछ सरल फ़ील्ड मान ('होस्ट', 'पथ') हैं। उदाहरण:कुंजी-> मूल्य डेटा के लिए कुछ अच्छे, तेज़ लगातार स्टोरेज विकल्प क्या हैं?

'4420ffb32a' => array(
    'host' => '127.0.0.1', 
    'path' => 'path/to/resource', 
); 

इस तरह के डेटा के लिए सबसे अच्छा निरंतर भंडारण क्या है? क्या MySQL सबसे अच्छा विकल्प होगा, या यह इस तरह के सरल डेटा के लिए overkill होगा? सबसे अच्छा प्रदर्शन क्या होगा?

उत्तर

10

लघु जवाब:Membase


लांग जवाब:
आप मूल रूप से तीन विकल्प हैं: एक संबंधपरक डेटाबेस, फ़ाइल भंडारण, या कुछ और।

जैसा कि आपने कहा था, एक रिलेशनल डेटाबेस निश्चित रूप से अधिक हो सकता है। उस ने कहा, अगर यह किसी ऐसे एप्लिकेशन का हिस्सा है जिसमें पहले से ही एक MySQL या अन्य डेटाबेस है, तो मैं उसके साथ जाऊंगा। इसी प्रकार, फाइल स्टोरेज कभी-कभी आसान हो सकता है (उदाहरण के लिए एक्सएमएल फाइलों के समूह को लिखना), लेकिन डिस्क I/O धीमा हो सकता है।

अब अन्य श्रेणी में, आप CouchDB या Memcached जैसी कुछ बढ़िया NoSQL विकल्प हैं।

यदि आप अपने डेटा की दृढ़ता के बारे में बहुत चिंतित नहीं हैं, तो मैं memcache की अनुशंसा करता हूं। यह हल्का वजन, चलने में आसान है, और Memcache PHP extension है जो इसे आसान बनाता है। यह इस तरह की महत्वपूर्ण मूल्य भंडारण के लिए बनाया गया है।

एक दोष मेलकैच यह है कि आपका सभी डेटा दूसरा खो गया है जो memcache सेवा बंद हो जाता है। यह वह जगह है जहां Membase आता है। यह ज्ञापन का ओपन-सोर्स कांटा है जो प्रोटोकॉल-संगत है, जिसका अर्थ है कि यह सभी मौजूदा क्लाइंट पुस्तकालयों के साथ काम करेगा। हालांकि, यह आपके डेटा को जारी रख सकता है और वास्तव में स्थिरता और विश्वसनीयता प्रदान करता है, कुछ memcache अपने आप नहीं कर सकता है।

+0

लंबे उत्तर की सराहना की जाती है। मैं अब membase की समीक्षा कर रहा हूँ। – BrianV

+0

या Memcached के साथ MySQL का उपयोग करें: http://dev.mysql.com/tech-resources/articles/nosql-to-mysql-with-memcached.html – hakre

4

CouchDB अपने जवाब (हालांकि यह अपने आवश्यकताओं के लिए एक छोटा सा overkill हो सकता है) ..

1

सबसे अच्छा जवाब नहीं हो सकता है। लेकिन मैं इसे एक MySQL डेटाबेस में संग्रहीत करता हूं और संभवत: mysql_pconnect का उपयोग करता हूं यदि डेटा एक ही समय में निकाला नहीं जा रहा है। php.net

डाटाबेस के लिए एक सामान्य विकल्प के एक सादे फ़ाइल है, लेकिन मुझे ठीक कर लें मैं गलत लेकिन concurent फ़ाइल पहुँच धीमी हो सकती है कर रहा हूँ: यहाँ pconnect के बारे में

जानकारी।

शुभकामनाएं। (यदि आप एक Windows सर्वर पर कर रहे हैं या redisdb-win32)

5

बस कुछ अलग, redis सुझाव देने के लिए

+0

दिलचस्प सुझाव - मैंने पहले रेडिस को नहीं देखा था ... – BrianV

0

मैं माईएसक्यूएल के लिए जाऊंगा, बस अगर आपको भविष्य में अपना आवेदन अपग्रेड करना होगा। जब अनुप्रयोगों की बात आती है तो बेहतर भविष्य का प्रमाण बनें।

1

अजीब कोई भी अब तक Flintstone का उल्लेख नहीं किया गया है।

भी एक अच्छा विकल्प Doctrine है।

+0

quetion लगभग 1 सटीक संग्रहण है, न कि ओआरएम जो एकाधिक स्टोरेज का उपयोग करता है – vladkras

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