मुझे लगता है कि आपने यहां कुछ शब्दों को मिला दिया है।
आपका सारा डेटा एक डेटाबेस (उर्फ स्कीमा) में चला जाता है। डेटाबेस में आपके पास टेबल हो सकते हैं।
उदा.
table employee
id integer
name varchar
address varchar
country varchar
table office
id integer
employee_id integer
address varchar
टेबल के अंदर आपके पास फ़ील्ड हैं (id, name, address)
उर्फ कॉलम। और तालिकाओं में एक या अधिक पंक्तियाँ होती हैं।
टेबल कर्मचारी के लिए एक उदाहरण:
id name address country
----------------------------------------------------
1 John 1 Regent Street UK
2 James 24 Jump Street China
3 Darth Vader 1 Death Star Bestine, Tatooine
मूल बातें के लिए बहुत कुछ।
विभाजन क्यों कर रहे हैं
अब मान लें कि हमारे डेटाबेस में बहुत सारे और बहुत से लोग (पंक्तियां) हैं।
इसे एक गांगेय डेटाबेस याद रखें, इसलिए हमारे पास 100 बिलियन रिकॉर्ड हैं।
अगर हम इतनी तेजी से गर्त खोजना चाहते हैं यह अच्छा है अगर हम इसे समानांतर में कर सकते हैं।
इसलिए हम तालिका को विभाजित करते हैं (देश के अनुसार) और फिर हम एक्स सर्वरों को 1 देश में देख सकते हैं।
सर्वर में विभाजन को sharding
।
या हम विभाजन कर सकते हैं उदा। साल के हिसाब से ऐतिहासिक डेटा, इसलिए हमें सभी . से गुज़रने की ज़रूरत नहीं है डेटा केवल हालिया . प्राप्त करने के लिए समाचार। हमें सिर्फ इस साल के बंटवारे से गुजरना है। इसे partitioning
कहा जाता है ।
sharding
के बीच बड़ा अंतर क्या है केवल partitioning
कर सकते हैं ?
साझा करना sharding
में आप अनुमान लगाते हैं कि सभी आपका डेटा प्रासंगिक है, और समान रूप से पूछे जाने की संभावना है। (उदाहरण के लिए, Google उनके सभी डेटा को क्वेरी किए जाने की उम्मीद कर सकता है; उनके डेटा का हिस्सा संग्रह करना उनके लिए बेकार है)।
इस मामले में आप चाहते हैं कि बहुत सारी मशीनें आपके डेटा को समानांतर में देखें, जहां प्रत्येक मशीन का हिस्सा है काम।
तो आप प्रत्येक मशीन को डेटा का एक अलग विभाजन (शार्ड) देते हैं और सभी मशीनों को एक ही क्वेरी देते हैं। जब परिणाम सामने आते हैं तो आप UNION
उन सभी को एक साथ और परिणाम आउटपुट।
मूल विभाजन
मूल रूप से partitioning
आपके डेटा का कुछ हिस्सा hot
है और भाग not
है . एक विशिष्ट मामला ऐतिहासिक डेटा है, नया डेटा hot
है , पुराना डेटा शायद ही छुआ जाता है।
इस उपयोग के मामले में पुराने डेटा को अलग सर्वर में रखना व्यर्थ है। वे मशीनें बस प्रतीक्षा करेंगी और प्रतीक्षा करेंगी और कुछ भी नहीं करेंगी क्योंकि किसी को भी पुराने डेटा की परवाह नहीं है सिवाय कुछ लेखा परीक्षकों के जो साल में एक बार इसे देखते हैं। क्वेरीज़ केवल एक (शायद 2) साल के डेटा को देखेंगी और बहुत तेज़ होंगी।
क्या मुझे विभाजन की आवश्यकता है?
आप विभाजन केवल तभी करते हैं जब आपके पास बहुत सारा डेटा हो, क्योंकि यह आपके सेटअप को जटिल बनाता है।
जब तक आपके पास एक मिलियन से अधिक रिकॉर्ड न हों, आपको विभाजन पर विचार करने की आवश्यकता नहीं है।
यदि आप 100 मिलियन से अधिक रिकॉर्ड हैं, आपको निश्चित रूप से इस पर विचार करना चाहिए।
अधिक जानकारी के लिए देखें:http://dev.mysql.com/ doc/refman/5.1/hi/partitioning.html
और:http://blog.mayflower.de/archives/353-Is-MySQL-partitioning-useful-for-very-big-real-life-problems.html
विकी भी देखें:http://en.wikipedia.org/wiki /पार्टिशन_%28डेटाबेस%29
ये सिर्फ मेरे व्यक्तिगत अनुमान YMMV हैं।