2013-02-13 15 views
8

पर डेटाबेस शेडिंग अगले कुछ महीनों में किसी बिंदु पर हमारा ऐप उस आकार पर होगा जहां हमें हमारे डीबी को दाढ़ी करने की आवश्यकता है। हम होस्टिंग को होस्टिंग, नोड.जेएस/पोस्टग्रेएसक्यूएल स्टैक के लिए उपयोग कर रहे हैं।हेरोकू

वैचारिक रूप से, यह समझ में आता है हमारे एप्लिकेशन प्रत्येक तार्किक ठीकरा एक उपयोगकर्ता और है कि उपयोगकर्ता से संबद्ध सभी डेटा का प्रतिनिधित्व करने के लिए के लिए (हमारे ऐप्लिकेशन के प्रत्येक उपयोगकर्ता डेटा का एक बहुत उत्पन्न करता है, और वहाँ उन दोनों के बीच कोई बातचीत कर रहे हैं)। हमें उपयोगकर्ता को उनके डेटा पर जटिल विज्ञापन-प्रसार पूछने की क्षमता बनाए रखने की आवश्यकता है। मैंने इस तरह के कई लेख पढ़े हैं जो शेर्डिंग के बारे में बात करते हैं: http://www.craigkerstiens.com/2012/11/30/sharding-your-database/

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

+0

क्या आपने ऑक्टोपस की जांच की है? https://github.com/tchandy/octopus – catsby

उत्तर

0

मुझे यकीन नहीं है कि मैं इसे "शेरिंग" कहूंगा।

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

तो यह एक व्यवहार्य दृष्टिकोण है।

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

मुझे पता है कि यह काफी उच्च स्तर है। हालांकि आपको इसे शुरू करना चाहिए।

0

जैसा कि पहले लेख के लेखक आगे बढ़ने के लिए खुश हैं। जब बहुत महत्वपूर्ण घटकों में से किसी एक को ढंकने की बात आती है तो आप किस कुंजी पर नजर रखते हैं। शेडिंग की जटिलता वास्तव में तब खेलती है जब आपके पास डेटा होता है जो विभिन्न भौतिक नोड्स में मिलकर होता है। यदि आप बहु-किरायेदार ऐप की तरह कुछ हैं तो किरायेदार या ग्राहक can fit very cleanly in this setup के इस विचार के आस-पास अपने सभी डेटा मॉडलिंग करें। उस स्थिति में आप ग्राहक से संबंधित सभी तालिकाओं को तोड़ना चाहते हैं और अन्य किरायेदार संबंधित तालिकाओं के समान ही उन्हें दाढ़ी देना चाहते हैं।

हेरोकू पर ऐसा करने के लिए, दो विकल्प हैं। आप हेरोोक पोस्टग्रेज़ और एप्लिकेशन लॉजिक के साथ अपना खुद का रोल कर सकते हैं, या सिटस जैसे कुछ का उपयोग कर सकते हैं (जो एक ऐड-ऑन है जो आपके लिए अधिक प्रबंधित करने में मदद करता है।

अपने आप को रोल करने के लिए, आप पहले अपने सभी shards बनाने और उचित प्रश्नों को रूट करने के लिए कहने के लिए विभिन्न एप्लिकेशन तर्क बनायेंगे। रेल के लिए activerecord-multi-tenant या apartment की तरह मदद करने के लिए कुछ रत्न हैं। जब वास्तव में sharding और उस प्रवासन में जाने की बात आती है, तो आप जो करना चाहते हैं वह शुरू करने के लिए एक हेरोकू अनुयायी बनना है। माइग्रेशन के दौरान आप इसे अन-अनुवर्ती करना शुरू कर देंगे। फिर आप मूल प्राथमिक से दूसरे आधे हिस्से को हटा देंगे और अनुयायी से दूसरे छमाही को तदनुसार अलग कर देंगे।