मारियाडीबी एक MySQL कांटा है, जो शुरू में MySQL के 5.1 रिलीज से लिया गया था। MySQL के विपरीत, MariaDB गैर-MariaDB डेटाबेस में संग्रहीत बाहरी डेटा का उपयोग कर सकती है जैसे कि डेटा एक मानक MariaDB तालिका में संग्रहीत किया गया था। डेटा को मारियाडीबी में लोड नहीं किया गया है। बाहरी डेटा के साथ काम करने के लिए, मारियाडीबी कनेक्ट स्टोरेज इंजन का उपयोग करता है। इस स्टोरेज इंजन को MariaDB 10.0 में पेश किया गया था।
कनेक्ट स्टोरेज इंजन डेटाबेस के विंडोज और लिनक्स दोनों संस्करणों के साथ शामिल है, हालांकि यह डिफ़ॉल्ट रूप से लोड नहीं होता है। कनेक्ट स्टोरेज इंजन बाहरी डेटा के साथ काम करने के लिए ODBC का उपयोग कर सकता है। ODBC एक डेटाबेस-न्यूट्रल इंटरफ़ेस है जो ODBC अनुपालक अनुप्रयोगों जैसे कनेक्ट स्टोरेज इंजन को किसी भी डेटाबेस के साथ काम करने की अनुमति देता है जिसके लिए ODBC ड्राइवर उपलब्ध है। ODBC एप्लिकेशन के डेटा प्रश्नों का अनुवाद उस चीज़ में करता है जिसे लक्ष्य डेटाबेस समझता है।
ODBC के दो घटक हैं:ODBC ड्राइवर और ODBC ड्राइवर प्रबंधक। ODBC ड्राइवर डेटाबेस-विशिष्ट है, यानी Microsoft Access ODBC ड्राइवर केवल Microsoft Access डेटाबेस से बात करेगा। ODBC ड्राइवर मैनेजर कनेक्ट स्टोरेज इंजन और ODBC ड्राइवर के बीच का इंटरफ़ेस है। ड्राइवर मैनेजर ODBC ड्राइवर को लोड करने के लिए ज़िम्मेदार है, जो डेटाबेस के साथ इंटरैक्ट करने वाले कंपोनेंट से एप्लिकेशन (यानी स्टोरेज इंजन) को इंसुलेट करता है। यह आर्किटेक्चर मारियाडीबी को मारियाडीबी में कोई बदलाव किए बिना विभिन्न डेटाबेस से जुड़ने में सक्षम बनाता है।
विंडोज़ पर, माइक्रोसॉफ्ट ऑपरेटिंग सिस्टम के साथ एक ओडीबीसी ड्राइवर मैनेजर प्रदान करता है, और यह वह है जिसे कनेक्ट स्टोरेज इंजन इस प्लेटफॉर्म पर उपयोग करता है।
Linux पर, कनेक्ट स्टोरेज इंजन unixODBC ड्राइवर मैनेजर का उपयोग करता है। यह ड्राइवर प्रबंधक आमतौर पर ऑपरेटिंग सिस्टम के साथ उपलब्ध होता है, हालांकि डिफ़ॉल्ट रूप से स्थापित नहीं किया जा सकता है। गैर-विंडोज प्लेटफॉर्म के लिए सभी Easysoft ODBC ड्राइवरों में unixODBC ड्राइवर मैनेजर शामिल है।
संक्षेप में, ओडीबीसी का उपयोग करके मारियाडीबी को बाहरी डेटा से जोड़ने के लिए आवश्यक घटक हैं:
कनेक्ट स्टोरेज इंजन को आज़माने के लिए, हमने अपने SQL सर्वर और एक्सेस ODBC ड्राइवरों को Linux पर MariaDB और Windows पर MariaDB के साथ अपने Salesforce ODBC ड्राइवर का उपयोग किया।
नोट यदि आप 64-बिट संस्करण मारियाडीबी का उपयोग कर रहे हैं तो आपको 64-बिट ओडीबीसी ड्राइवर का उपयोग करना चाहिए। यदि आप 32-बिट संस्करण मारियाडीबी का उपयोग कर रहे हैं तो आपको 32-बिट ओडीबीसी ड्राइवर का उपयोग करना चाहिए।
कनेक्ट स्टोरेज इंजन लोड हो रहा है
भले ही आप Linux या Windows पर MariaDB चला रहे हों, CONNECT स्टोरेज इंजन को लोड करने के लिए समान कमांड की आवश्यकता होती है। MySQL क्लाइंट शेल में टाइप करें:
INSTALL SONAME 'ha_connect';
यह मानते हुए कि आपके पास अपने लक्षित डेटाबेस के लिए उपयुक्त ओडीबीसी ड्राइवर स्थापित है और ओडीबीसी डेटा स्रोत कॉन्फ़िगर किया है, अब आप मारियाडीबी के साथ बाहरी डेटा को एकीकृत कर सकते हैं।
लिनक्स पर, हम यूनिक्सोडबीसी ड्राइवर मैनेजर की एक प्रति का उपयोग कर रहे थे जो हमारे ड्राइवरों के साथ शामिल था, और इसलिए हमें पर्यावरण सेट करना पड़ा ताकि उन ड्राइवर मैनेजर पुस्तकालयों को लोड किया जा सके।
# /etc/init.d/mariadb stop # export LD_LIBRARY_PATH=/usr/local/easysoft/unixODBC/lib:$LD_LIBRARY_PATH # ldd /opt/mariadb/lib/plugin/ha_connect.so | grep odbc libodbc.so.1 => /usr/local/easysoft/unixODBC/lib/libodbc.so.1 (0x00007f2a06ce8000) # /etc/init.d/mariadb start
उदाहरण:Linux पर MariaDB को Microsoft Access से कनेक्ट करें
कनेक्ट स्टोरेज इंजन आपको मारियाडीबी में कनेक्ट टेबल बनाने में सक्षम बनाता है। कनेक्ट तालिका प्रकार निर्दिष्ट करता है कि बाहरी डेटा तक कैसे पहुंचा जाएगा। हम एक्सेस से कनेक्ट करने के लिए ओडीबीसी ड्राइवर का उपयोग कर रहे हैं और इसलिए उपयोग करने के लिए सही टेबल प्रकार "ओडीबीसी" है। हमने एक ओडीबीसी डेटा स्रोत बनाया है जो नॉर्थविंड डेटाबेस से जुड़ता है, और यही वह डेटा है जिसे हम मारियाडीबी से एक्सेस करेंगे। डेटा स्रोत को "नॉर्थविंड" कहा जाता है और हमें इसे अपनी कनेक्ट टेबल परिभाषा में शामिल करना होगा:
$ /opt/mariadb/bin/mysql --socket=/opt/mariadb-data/mariadb.sock MariaDB [(none)]> CREATE DATABASE MDB; MariaDB [MDB]> USE MDB; MariaDB [MDB]> INSTALL SONAME 'ha_connect'; MariaDB [MDB]> CREATE TABLE Customers engine=connect table_type=ODBC Connection='DSN=ACCESS_NORTHWIND;'; MariaDB [MDB]> SELECT CompanyName FROM Customers WHERE CustomerID = 'VICTE'; +----------------------+ | CompanyName | +----------------------+ | Victuailles en stock | +----------------------+ 1 row in set (0.02 sec)
स्टोरेज इंजन लक्ष्य तालिका संरचना का स्वतः पता लगा सकता है और इसलिए CREATE TABLE
में कॉलम नाम / डेटा प्रकार निर्दिष्ट कर सकता है। बयान अनिवार्य नहीं है।
उदाहरण:Linux पर MariaDB को Microsoft SQL सर्वर से कनेक्ट करें
यह उदाहरण tabname
. का उपयोग करता है मारियाडीबी और एसक्यूएल सर्वर के बीच अंतर के आसपास काम करने का विकल्प। हम Person.Address
. में संग्रहीत कुछ AdventureWorks डेटा पुनर्प्राप्त करना चाहते हैं टेबल। हालाँकि, MariaDB के पास तालिका स्कीमा का विचार नहीं है, और इसलिए हम MariaDB में तालिका का नाम बदलकर "PersonAddress" कर देंगे। हम tabname
. के साथ वास्तविक तालिका नाम निर्दिष्ट करते हैं , इसलिए SQL सर्वर ODBC ड्राइवर उस तालिका नाम पर पास कर सकता है जिसे SQL सर्वर पहचानता है।
$ /opt/mariadb/bin/mysql --socket=/opt/mariadb-data/mariadb.sock MariaDB [(none)]> CREATE DATABASE MSSQL; MariaDB [(none)]> USE MSSQL; MariaDB [MSSQL]> INSTALL SONAME 'ha_connect'; MariaDB [MSSQL]> CREATE TABLE PersonAddress engine=connect table_type=ODBC tabname='Person.Address' Connection='DSN=SQLSERVER_ADVENTUREWORKS;'; ERROR 1105 (HY000): Unsupported SQL type -11 MariaDB [MSSQL]> \! grep -- -11 /usr/local/easysoft/unixODBC/include/sqlext.h #define SQL_GUID (-11) MariaDB [MSSQL]> CREATE TABLE PersonAddress ( AddressID int, AddressLine1 varchar(60), AddressLine2 varchar(60), City varchar(30), StateProvinceID int, PostalCode varchar(15), rowguid varchar(64), ModifiedDate datetime ) engine=connect table_type=ODBC tabname='Person.Address' Connection='DSN=SQLSERVER_SAMPLE;'; MariaDB [MSSQL]> SELECT City FROM PersonAddress WHERE AddressID = 32521; +-----------+ | City | +-----------+ | Sammamish | +-----------+
क्योंकि SQL सर्वर डेटा प्रकार uniqueidentifier
. के लिए कोई प्रत्यक्ष समकक्ष नहीं है . हमें इस प्रकार को rowguid कॉलम में एक MariaDB VARCHAR
. में मैप करना होगा प्रकार। भले ही यह एकमात्र समस्याग्रस्त कॉलम है, हमें अन्य को CREATE TABLE
में शामिल करने की आवश्यकता है बयान। अन्यथा, तालिका में केवल पंक्तिबद्ध स्तंभ होगा।
उदाहरण:Windows पर MariaDB को Salesforce से कनेक्ट करें
हम मारियाडीबी के 64-बिट संस्करण का उपयोग कर रहे हैं और इसलिए हमें अपने लक्षित सेल्सफोर्स उदाहरण के लिए 64-बिट ओडीबीसी डेटा स्रोत को कॉन्फ़िगर करने की आवश्यकता है। (अन्यथा कनेक्ट तालिका प्रकार बनाने का हमारा प्रयास "आर्किटेक्चर बेमेल" त्रुटि के साथ विफल हो जाएगा।) ऐसा करने के लिए, हमने Microsoft ODBC डेटा स्रोत व्यवस्थापक के 64-बिट संस्करण का उपयोग किया, जो नियंत्रण कक्ष में स्थित है। (Windows के कुछ संस्करणों पर, ODBC डेटा स्रोत व्यवस्थापक का 32-बिट और 64-बिट दोनों संस्करण नियंत्रण कक्ष में स्थित होते हैं, हालांकि यदि ऐसा है तो उनकी वास्तुकला को स्पष्ट रूप से लेबल किया गया है।)
हमारे लक्षित Salesforce "तालिका" में NVARCHAR
. शामिल है कॉलम, जिसे कनेक्ट स्टोरेज इंजन VARCHAR
. के रूप में हैंडल करता है एस। CREATE TABLE
बयान इस आशय की चेतावनी देता है। ("कॉलम आईडी विस्तृत वर्ण है", और इसी तरह।)
CREATE DATABASE SALESFORCE; USE SALESFORCE; INSTALL SONAME 'ha_connect'; CREATE TABLE Product2 engine=connect table_type=ODBC Connection='DSN=64-bit Salesforce System ODBC DSN;'; SELECT Description FROM Product2 ODBC Driver for SQL Server, SQL Azure ODBC Driver for Salesforce.com, Force.com, Database.com. के लिए AzureODBC ड्राइवर
अन्य MySQL/MariaDB कनेक्टिविटी विकल्प
नाम | <थ>विवरण|
---|---|
मारियाडीबी कनेक्टर/ओडीबीसी | यह मारियाडीबी के लिए एक ओडीबीसी ड्राइवर है और विंडोज और लिनक्स दोनों प्लेटफॉर्म के लिए उपलब्ध है। यह मारियाडीबी में संग्रहीत डेटा तक पहुंचने के लिए माइक्रोसॉफ्ट एक्सेल जैसे ओडीबीसी अनुपालन अनुप्रयोगों को सक्षम बनाता है। |
MySQL कनेक्टर/ODBC | यह MySQL के लिए एक ODBC ड्राइवर है और Windows, Linux, UNIX और OS X प्लेटफॉर्म के लिए उपलब्ध है। यह माइक्रोसॉफ्ट एक्सेल जैसे ओडीबीसी अनुपालन अनुप्रयोगों को MySQL में संग्रहीत डेटा तक पहुंचने में सक्षम बनाता है। |
MySQL फ़ेडरेटेड इंजन | यह कनेक्ट स्टोरेज इंजन के समान है, हालांकि यह केवल बाहरी MySQL डेटाबेस में संग्रहीत डेटा का समर्थन करता है। |