2013-08-26 8 views
37

मैं इन मानदंडों से मिलान एक डेटाबेस के लिए देख रहा हूँ:क्या रेडिस डीबी की तरह कुछ है, लेकिन राम आकार से सीमित नहीं है?

  • गैर लगातार हो सकता है;
  • लगभग डीबी के सभी चाबियाँ 3-6 घंटे जल्दी से कुंजी (या प्राथमिक कुंजी)
  • यह एक होने की जरूरत है द्वारा डेटा का चयन करने
  • की क्षमता (100M + 100Gb का कुल आकार के साथ कुंजी) में एक बार अद्यतन करने की आवश्यकता डीबीएमएस (ताकि LevelDB फिट नहीं करता है)
  • जब डेटा लिखा है, डीबी क्लस्टर प्रश्नों की सेवा के लिए (एकल नोड्स हालांकि अवरुद्ध किया जा सकता) सक्षम होना चाहिए
  • नहीं में-स्मृति - हमारे डाटासेट रैम सीमा से अधिक होगा
  • क्षैतिज स्केलिंग और प्रतिकृति
  • पूर्ण रिवाइट का समर्थन करें सभी डेटा (MongoDB डेटा हटाना के बाद पास के रिक्त स्थान नहीं है) की ई
  • सी # और जावा समर्थन

यहां इस तरह के डेटाबेस के साथ काम करने की मेरी प्रक्रिया है: हम एक एनालिटिक्स क्लस्टर कि 100M रिकॉर्ड का उत्पादन मिल गया है (50 जीबी) डेटा हर 4-6 घंटे। डेटा एक "कुंजी - सरणी [20]" है। इस डेटा को प्रति सेकंड 1-10k अनुरोधों की दर के साथ फ्रंट-एंड सिस्टम के माध्यम से उपयोगकर्ताओं को वितरित करने की आवश्यकता है। औसतन, डेटा का केवल ~ 15% अनुरोध किया जाता है, शेष डेटा को 4-6 घंटे में फिर से लिखा जाएगा जब अगला डेटा सेट जेनरेट किया जाएगा।

मैं क्या करने की कोशिश की:

  1. MongoDB। डेटास्टोरेज ओवरहेड, उच्च डीफ्रैग्मेंटेशन लागत।
  2. रेडिस। सही दिखता है, लेकिन यह रैम से सीमित है और हमारा डेटा इससे अधिक है।

तो सवाल यह है: रेडिस की तरह कुछ भी है, लेकिन राम आकार से सीमित नहीं है?

+0

एक उत्तर देने के लिए मत भूलना! – FGRibreau

+0

आगामी रेडिस क्लस्टर (v3.0) का उपयोग करके या विशेषज्ञों को इसे संभालने (यानी रेडिस लैब्स;)) –

उत्तर

5

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

अब अगर आप वास्तव में Redis रैम आकार के द्वारा सीमित नहीं की ब्लीडिंग-एज क्लोन की कोशिश करना चाहते हैं, वहाँ एनडीएस (मैट पामर द्वारा) है:

ध्यान दें कि एनडीएस का भंडारण बैकएंड क्योटो कैबिनेट से एलएमडीबी (एक बहुत अच्छा पैकेज है, जो ओपनएलडीएपी को भी शक्ति देता है), ठीक है beca हटाए गए कुंजियों के बाद अंतरिक्ष पुनः प्राप्त मुद्दों का उपयोग।

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

+4

हां, 100 जीबी रैम वाले कुछ सर्वर हैं, आप एप्लिकेशन-साइड शेर्डिंग को लागू करके रैम स्केलेबिलिटी बाधा को दूर कर सकते हैं। लेकिन आम नहीं देखा। डेटा किसी भी तरह से 100 जीबी से अधिक होगा, आमतौर पर अधिकतर डेटा शांत होता है और रैम में नहीं रहना चाहिए, रैम पैसे की लागत महंगी है। हमारे अनुभव के मुताबिक, रेडिस को कुल मात्रा में रैम की अधिक मात्रा 1/3 स्टोर नहीं करनी चाहिए। – ideawu

+0

बस एक तरफ के रूप में, एनडीएस रेडिस क्लोन नहीं है, यह मुख्य रेडिस कोडबेस में डिस्क स्टोरेज को एकीकृत करने वाली रेडिस का एक कांटा है। – womble

+0

हैलो। क्या किसी ने स्पीड या फीचर्स के मामले में एयरोस्पेइक से हाइपरडेक्स की तुलना की? – skan

23

हाँ, वहाँ कि Redis प्रोटोकॉल के साथ संगत रहते हुए राम आकार के द्वारा ही सीमित नहीं हैं Redis करने के लिए दो विकल्प हैं:

एआरडीबी (C++), प्रतिकृति (मास्टर-गुलाम/मालिक मास्टर): https://github.com/yinqiwen/ardb

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

एडिस (Erlang): http://inaka.github.io/edis/

एडिस Redis के लिए एक प्रोटोकॉल संगत सर्वर प्रतिस्थापन, Erlang में लिखा है। एडिस का लक्ष्य रेडिस के लिए ड्रॉप-इन प्रतिस्थापन होना है जब डेटासेट इन-मेमोरी रखने से दृढ़ता अधिक महत्वपूर्ण है। एडिस (वर्तमान में) बैकएंड के रूप में Google के स्तर डीबी का उपयोग करता है।

Hyperdex (स्ट्रिंग्स, पूर्णांकों, तैरता है, सूचियाँ, सेट, नक्शे): http://hyperdex.org/doc/latest/DataTypes/#chap:data-types

HyperDex है:

और पूर्णता यहाँ के लिए एक और डेटा संरचनाओं डेटाबेस है

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

हैलो। क्या किसी ने स्पीड या फीचर्स के मामले में एयरोस्पेइक से हाइपरडेक्स की तुलना की? – skan

+1

Ardb ने फेसबुक के Rocksdb के लिए समर्थन जोड़ा है, जिसका उपयोग डिफ़ॉल्ट स्टोरेज इंजन – Amnon

+1

ardb के रूप में किया जाता है। हम इसे उत्पादन पर उपयोग करते हैं। यह अच्छा काम करता है। – Peeyush

19

हाँ, SSDB (https://github.com/ideawu/ssdb), यह Redis के समान एपीआई है: http://www.ideawu.com/ssdb/docs/php/

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

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