2011-03-31 17 views
5

मैं एक बहु-किरायेदार प्रणाली तैयार कर रहा हूं और डेटाबेस के बजाए आवेदन स्तर स्तर पर किरायेदार द्वारा शेडिंग पर विचार कर रहा हूं।आवेदन स्तर पर शेरिंग

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

वास्तविक शार्ड में इस किरायेदार के लिए आवेदन के साथ-साथ संपूर्ण डेटा दोनों कोड शामिल हैं। ये shards एलएनएमपी (लिनक्स, Nginx, MySQL/MongoDB, PHP) सर्वर होगा।

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

मैं इस राउटर कार्यान्वयन के लिए किसी भी विचार और सुझाव की सराहना करता हूं।

धन्यवाद

उत्तर

0

जब तक आप अपने किरायेदारों लगभग बराबर डेटा की मात्रा उत्पन्न करने के लिए उम्मीद, किरायेदार द्वारा sharding बहुत ही कुशल नहीं होगा।

सामान्य रूप में आवेदन स्तर sharding के रूप में, मुझे मेरे अपने अनुभव साझा करते हैं: आवेदन स्तर पर हमारी उच्च मात्रा सास उत्पाद sharded की

संस्करण 1। यदि आप आवेदन स्तर पर SQL प्रकार समाधान के खिलाफ शेड करते हैं, तो आपको लगता है कि आप जो भी बढ़ रहे हैं, वह एक प्रमुख सिरदर्द होगा, या आपको प्रक्रिया को स्वचालित करने के लिए महत्वपूर्ण टूलींग लिखनी होगी।

डेटा बढ़ने के रूप में पुनर्वास/पुनर्वितरण के लिए अंतर्निहित समर्थन के कारण हमने मोंगोडीबी (कैसंद्रा समेत कई विकल्पों पर विचार करने के बाद) में स्विच किया।

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

+0

एप्लिकेशन स्तर का शेड संभावित रूप से एक सर्वर फार्म हो सकता है जिसमें सिंगल शेड मोंगोडीबी है। मैं अभी भी किरायेदारों को नियंत्रित रोलआउट के लिए किरायेदारों को अलग करने की क्षमता बनाना चाहता हूं। यद्यपि जटिल टूलिंग की आवश्यकता के बारे में आपसे सहमत होने के लिए मैं सहमत हूं। – msingla

1

एक अन्य विकल्प डीबीशर्ड्स जैसे उत्पाद का उपयोग करना होगा। डीबीशर्ड्स एकमात्र चमकदार उत्पाद है जो आवेदन स्तर पर shards। इस तरह आप किसी भी आरडीएमएस (पोस्टग्रेज़, माईएसक्यूएल, इत्यादि) का उपयोग कर सकते हैं और फिर भी बीच में किसी प्रकार की प्रॉक्सी डाले बिना अपने डेटाबेस को शेड करने में सक्षम हो सकते हैं। लेन-देन को सही दाढ़ी पर इंगित करने के लिए कई अन्य शेडिंग उत्पाद प्रॉक्सी पर भरोसा करते हैं, लेकिन डीबीशर्ड्स जानता है कि किसी और से "पूछने" के बिना कहां जाना है।

ग्रेट उत्पाद। dbshards

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