सामान्य तौर पर, डेटाबेस डेटा को पंक्ति प्रारूप में संग्रहीत करते हैं और इसे एक्सेस करने के लिए SQL को क्वेरी भाषा के रूप में उपयोग करते हैं, लेकिन प्रदर्शन के मामले में यह भंडारण विधि हमेशा सर्वश्रेष्ठ नहीं होती है, यह कार्यभार पर ही निर्भर करती है। यदि आप सांख्यिकीय डेटा प्राप्त करना चाहते हैं, तो आपको संभवतः किसी अन्य प्रकार के डेटाबेस संग्रहण इंजन का उपयोग करना चाहिए।
इस ब्लॉग में, हम देखेंगे कि Columnar Storage क्या है और, अधिक विशिष्ट होने के लिए, MariaDB ColumnStore क्या है, और इसे कैसे स्थापित किया जाए ताकि आपके बड़े डेटा को अधिक प्रदर्शनकारी तरीके से संसाधित करने में सक्षम हो सके। विश्लेषणात्मक उद्देश्य।
स्तंभ संग्रहण
कॉलमनार स्टोरेज एक प्रकार का डेटाबेस इंजन है जो कॉलम-ओरिएंटेड मॉडल का उपयोग करके डेटा को स्टोर करता है।
उदाहरण के लिए, एक सामान्य संबंधपरक डेटाबेस में, हमारे पास इस तरह की एक तालिका हो सकती है:
id | प्रथम नाम | अंतिम नाम | उम्र |
1001 | ओलिवर | स्मिथ | 23 |
1002 | हैरी | जोन्स | 65 |
1003 | जॉर्ज | विलियम्स | 30 |
1004 | जैक | टेलर | 41 |
यहाँ वह जगह है जहाँ एक Columnar Storage इंजन चलन में आता है। डेटा को पंक्तियों में संग्रहीत करने के बजाय, डेटा को स्तंभों में संग्रहीत किया जाता है। इसलिए, यदि आपको औसत आयु जानने की आवश्यकता है, तो इसका उपयोग करना बेहतर होगा, क्योंकि आपके पास इस तरह की संरचना होगी:
id | प्रथम नाम | id | अंतिम नाम | id | उम्र | ||
1001 | ओलिवर | 1001 | स्मिथ | 1001 | 23 | ||
1002 | हैरी | 1002 | जोन्स | 1002 | 65 | ||
1003 | जॉर्ज | 1003 | विलियम्स | 1003 | 30 | ||
1004 | जैक | 1004 | टेलर | 1004 | 41 |
MariaDB ColumnStore
यह एक कॉलमर स्टोरेज इंजन है जो बड़े पैमाने पर समानांतर वितरित डेटा आर्किटेक्चर का उपयोग करता है। यह एक अलग डाउनलोड है, लेकिन यह मारियाडीबी सर्वर के लिए मारियाडीबी 10.5.4 से स्टोरेज इंजन के रूप में उपलब्ध होगा, जो इस ब्लॉग के लिखे जाने के समय अभी भी विकास में है।
यह बड़े डेटा के लिए डिज़ाइन किया गया है, जिसमें स्तंभ भंडारण के लाभों का उपयोग करके विश्लेषणात्मक प्रश्नों के वास्तविक समय की प्रतिक्रिया के साथ शानदार प्रदर्शन किया जाता है।
MariaDB ColumnStore आर्किटेक्चर
यह कई (या सिर्फ 1) मारियाडीबी सर्वर से बना है, जो मॉड्यूल के रूप में काम कर रहे हैं, एक साथ काम कर रहे हैं। इन मॉड्यूल में उपयोगकर्ता, प्रदर्शन और संग्रहण शामिल हैं।
उपयोगकर्ता मॉड्यूल
यह एक मारियाडीबी सर्वर इंस्टेंस है जिसे कॉलमस्टोर के फ्रंट-एंड के रूप में संचालित करने के लिए कॉन्फ़िगर किया गया है।
उपयोगकर्ता मॉड्यूल अंतिम-उपयोगकर्ता प्रश्नों के संचालन का प्रबंधन और नियंत्रण करता है। जब कोई क्लाइंट कोई क्वेरी चलाता है, तो उसे पार्स किया जाता है और क्वेरी को संसाधित करने के लिए एक या अधिक प्रदर्शन मॉड्यूल में वितरित किया जाता है। उपयोगकर्ता मॉड्यूल तब क्वेरी परिणामों को एकत्र करता है और क्लाइंट के पास लौटने के लिए उन्हें परिणाम-सेट में इकट्ठा करता है।
उपयोगकर्ता मॉड्यूल का प्राथमिक उद्देश्य समवर्ती स्केलिंग को संभालना है। यह कभी भी डेटाबेस फ़ाइलों को सीधे नहीं छूता है और उन्हें दृश्यता की आवश्यकता नहीं होती है।
प्रदर्शन मॉड्यूल
यह डेटा को संग्रहीत करने, पुनर्प्राप्त करने और प्रबंधित करने, क्वेरी संचालन के लिए ब्लॉक अनुरोधों को संसाधित करने और क्वेरी अनुरोधों को अंतिम रूप देने के लिए इसे उपयोगकर्ता मॉड्यूल या मॉड्यूल में वापस भेजने के लिए जिम्मेदार है। यह क्वेरी को स्वयं नहीं देखता है, लेकिन उपयोगकर्ता मॉड्यूल द्वारा इसे दिए गए निर्देशों का केवल एक सेट देखता है।
मॉड्यूल डिस्क से डेटा का चयन करता है और इसे साझा-कुछ भी नहीं बफर में कैश करता है जो सर्वर का हिस्सा है जिस पर यह चलता है।
एक से अधिक प्रदर्शन मॉड्यूल नोड्स होने के कारण, एक दिल की धड़कन तंत्र यह सुनिश्चित करता है कि सभी नोड्स ऑनलाइन हैं और किसी विशेष नोड के विफल होने की स्थिति में पारदर्शी विफलता है।
संग्रहण
डेटा स्टोर करने के लिए आप स्थानीय संग्रहण (प्रदर्शन मॉड्यूल), या साझा संग्रहण (SAN) का उपयोग कर सकते हैं।
जब आप MariaDB ColumnStore पर एक तालिका बनाते हैं, तो सिस्टम तालिका में प्रति स्तंभ कम से कम एक फ़ाइल बनाता है। इसलिए, उदाहरण के लिए, तीन स्तंभों के साथ बनाई गई तालिका में कम से कम तीन, अलग-अलग पता करने योग्य तार्किक वस्तुएँ होंगी जिन्हें SAN या प्रदर्शन मॉड्यूल की स्थानीय डिस्क पर बनाया गया है।
ColumnStore डिस्क से प्रदर्शन पढ़ने के लिए अपनी संपीड़न रणनीति को अनुकूलित करता है। डिस्क से पढ़ते समय प्रदर्शन लाभ को अधिकतम करते हुए, इसे डीकंप्रेसन दर में तेजी लाने के लिए ट्यून किया गया है।
MariaDB ColumnStore, संशोधित किए जा रहे डिस्क ब्लॉकों को संग्रहीत करने के लिए संस्करण बफर का उपयोग करता है, लेनदेन रोलबैक का प्रबंधन करता है, और डेटाबेस के MVCC (बहु-संस्करण संगामिति नियंत्रण) या "स्नैपशॉट रीड" फ़ंक्शन की सेवा करता है। यह डेटाबेस के एक क्वेरी संगत दृश्य की पेशकश करने की अनुमति देता है।
मारियाडीबी क्लौमनस्टोर कैसे काम करता है
अब, देखते हैं कि आधिकारिक MariaDB ColumnStore दस्तावेज़ के अनुसार, MariaDB ColumnStore एक अंतिम-उपयोगकर्ता क्वेरी को कैसे संसाधित करता है:
- ग्राहक उपयोगकर्ता मॉड्यूल पर चल रहे MariaDB सर्वर के लिए एक प्रश्न जारी करते हैं। सर्वर अनुरोध को पूरा करने के लिए आवश्यक सभी तालिकाओं के लिए एक टेबल ऑपरेशन करता है और प्रारंभिक क्वेरी निष्पादन योजना प्राप्त करता है।
- MariaDB स्टोरेज इंजन इंटरफेस का उपयोग करते हुए, ColumnStore सर्वर टेबल ऑब्जेक्ट को ColumnStore ऑब्जेक्ट में कनवर्ट करता है। इन वस्तुओं को तब उपयोगकर्ता मॉड्यूल प्रक्रियाओं में भेजा जाता है।
- उपयोगकर्ता मॉड्यूल MariaDB निष्पादन योजना को रूपांतरित करता है और दिए गए ऑब्जेक्ट को ColumnStore निष्पादन योजना में अनुकूलित करता है। यह तब क्वेरी को चलाने के लिए आवश्यक चरणों और उन्हें चलाने के लिए आवश्यक क्रम निर्धारित करता है।
- उपयोगकर्ता मॉड्यूल तब एक्स्टेंट मैप से परामर्श करता है ताकि यह निर्धारित किया जा सके कि उसे किस डेटा की आवश्यकता के लिए परामर्श करने के लिए प्रदर्शन मॉड्यूल से परामर्श करना है, फिर यह उस सूची से किसी भी प्रदर्शन मॉड्यूल को समाप्त करते हुए, जिसमें केवल सीमा के बाहर डेटा होता है, एक्स्टेंट एलिमिनेशन करता है। क्वेरी के लिए क्या आवश्यक है।
- उपयोगकर्ता मॉड्यूल तब ब्लॉक I/O संचालन करने के लिए एक या अधिक प्रदर्शन मॉड्यूल को आदेश भेजता है।
- प्रदर्शन मॉड्यूल या मॉड्यूल विधेय फ़िल्टरिंग करते हैं, प्रसंस्करण में शामिल होते हैं, स्थानीय या बाहरी संग्रहण से डेटा का प्रारंभिक एकत्रीकरण करते हैं, फिर डेटा को उपयोगकर्ता मॉड्यूल में वापस भेजते हैं।
- उपयोगकर्ता मॉड्यूल अंतिम परिणाम-सेट एकत्रीकरण करता है और क्वेरी के लिए परिणाम-सेट तैयार करता है।
- उपयोगकर्ता मॉड्यूल / ExeMgr किसी भी विंडो फ़ंक्शन गणना, साथ ही परिणाम-सेट पर किसी भी आवश्यक सॉर्टिंग को लागू करता है। यह तब सर्वर पर परिणाम-सेट लौटाता है।
- MariaDB सर्वर परिणाम-सेट पर कोई भी चुनिंदा सूची कार्य, ORDER BY और LIMIT संचालन करता है।
- MariaDB सर्वर क्लाइंट को परिणाम-सेट लौटाता है।
MariaDB ColumnStore कैसे स्थापित करें
अब, देखते हैं कि इसे कैसे स्थापित किया जाए। अधिक जानकारी के लिए, आप MariaDB आधिकारिक दस्तावेज़ीकरण देख सकते हैं।
हम ऑपरेटिंग सिस्टम के रूप में CentOS 7 का उपयोग करेंगे, लेकिन आप इसके बजाय किसी भी समर्थित OS का उपयोग कर सकते हैं। इंस्टॉलेशन पैकेज यहां डाउनलोड के लिए उपलब्ध हैं।
सबसे पहले, आपको अतिरिक्त पैकेज भंडार स्थापित करने की आवश्यकता होगी:
$ yum install -y epel-release
फिर, निम्नलिखित आवश्यक पैकेज:
$ yum install -y boost expect perl perl-DBI openssl zlib snappy libaio perl-DBD-MySQL net-tools wget jemalloc numactl-libs
और अब, चलिए MariaDB ColumnStore का नवीनतम संस्करण डाउनलोड करते हैं, इसे असंपीड़ित करते हैं, और इसे स्थापित करते हैं:
$ wget https://downloads.mariadb.com/ColumnStore/latest/centos/x86_64/7/mariadb-columnstore-1.2.5-1-centos7.x86_64.rpm.tar.gz
$ tar zxf mariadb-columnstore-1.2.5-1-centos7.x86_64.rpm.tar.gz
$ rpm -ivh mariadb-columnstore-1.2.5-1-*.rpm
जब यह समाप्त हो जाए, तो आपको निम्न संदेश दिखाई देगा:
अगला चरण है:
If installing on a pm1 node using non-distributed install
/usr/local/mariadb/columnstore/bin/postConfigure
If installing on a pm1 node using distributed install
/usr/local/mariadb/columnstore/bin/postConfigure -d
If installing on a non-pm1 using the non-distributed option:
/usr/local/mariadb/columnstore/bin/columnstore start
तो, इस उदाहरण के लिए, चलिए केवल कमांड चलाते हैं:
$ /usr/local/mariadb/columnstore/bin/postConfigure
अब, यह आपसे इंस्टालेशन के बारे में कुछ जानकारी पूछेगा:
This is the MariaDB ColumnStore System Configuration and Installation tool.
It will Configure the MariaDB ColumnStore System and will perform a Package
Installation of all of the Servers within the System that is being configured.
IMPORTANT: This tool requires to run on the Performance Module #1
Prompting instructions:
Press 'enter' to accept a value in (), if available or
Enter one of the options within [], if available, or
Enter a new value
===== Setup System Server Type Configuration =====
There are 2 options when configuring the System Server Type: single and multi
'single' - Single-Server install is used when there will only be 1 server configured
on the system. It can also be used for production systems, if the plan is
to stay single-server.
'multi' - Multi-Server install is used when you want to configure multiple servers now or
in the future. With Multi-Server install, you can still configure just 1 server
now and add on addition servers/modules in the future.
Select the type of System Server install [1=single, 2=multi] (2) > 1
Performing the Single Server Install.
Enter System Name (columnstore-1) >
===== Setup Storage Configuration =====
----- Setup Performance Module DBRoot Data Storage Mount Configuration -----
There are 2 options when configuring the storage: internal or external
'internal' - This is specified when a local disk is used for the DBRoot storage.
High Availability Server Failover is not Supported in this mode
'external' - This is specified when the DBRoot directories are mounted.
High Availability Server Failover is Supported in this mode.
Select the type of Data Storage [1=internal, 2=external] (1) >
Enter the list (Nx,Ny,Nz) or range (Nx-Nz) of DBRoot IDs assigned to module 'pm1' (1) >
===== Performing Configuration Setup and MariaDB ColumnStore Startup =====
NOTE: Setting 'NumBlocksPct' to 50%
Setting 'TotalUmMemory' to 25% of total memory.
Running the MariaDB ColumnStore setup scripts
post-mysqld-install Successfully Completed
post-mysql-install Successfully Completed
Starting MariaDB Columnstore Database Platform
Starting MariaDB ColumnStore Database Platform Starting, please wait ....... DONE
System Catalog Successfull Created
MariaDB ColumnStore Install Successfully Completed, System is Active
Enter the following command to define MariaDB ColumnStore Alias Commands
. /etc/profile.d/columnstoreAlias.sh
Enter 'mcsmysql' to access the MariaDB ColumnStore SQL console
Enter 'mcsadmin' to access the MariaDB ColumnStore Admin console
NOTE: The MariaDB ColumnStore Alias Commands are in /etc/profile.d/columnstoreAlias.sh
जेनरेट की गई स्क्रिप्ट चलाएँ:
$ . /etc/profile.d/columnstoreAlias.sh
अब आप "mcsmysql" कमांड चलाने वाले डेटाबेस तक पहुंच सकते हैं:
$ mcsmysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 12
Server version: 10.3.16-MariaDB-log Columnstore 1.2.5-1
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
बस। अब, आप अपने MariaDB ColumnStore डेटाबेस में डेटा लोड कर सकते हैं।
निष्कर्ष
एनालिटिक्स उद्देश्यों के लिए डेटा को संभालने के लिए कॉलमर स्टोरेज एक बेहतरीन डेटाबेस स्टोरेज विकल्प है। MariaDB ColumnStore इस कार्य के लिए डिज़ाइन किया गया एक Columnar Storage इंजन है, और जैसा कि हम देख सकते हैं, स्थापना बहुत आसान है, इसलिए यदि आपको OLAP डेटाबेस या बड़े डेटा को संसाधित करने की आवश्यकता है, तो आपको इसे आज़माना चाहिए।