MariaDB
 sql >> база данни >  >> RDS >> MariaDB

MariaDB и външни данни

MariaDB е разклонение на MySQL, което първоначално е получено от версията 5.1 на MySQL. За разлика от MySQL, MariaDB може да използва външни данни, съхранявани в бази данни, различни от MariaDB, сякаш данните се съхраняват в стандартна таблица на MariaDB. Данните не се зареждат в MariaDB. За да работи с външни данни, MariaDB използва механизма за съхранение CONNECT. Тази машина за съхранение беше въведена в MariaDB 10.0.

Двигателят за съхранение CONNECT е включен както с Windows, така и с Linux версията на базата данни, въпреки че не се зарежда по подразбиране. Двигателят за съхранение CONNECT може да използва ODBC за работа с външни данни. ODBC е неутрален към базата данни интерфейс, който позволява на ODBC съвместими приложения, като например механизма за съхранение CONNECT, да работят с всяка база данни, за която е наличен ODBC драйвер. ODBC превежда заявките за данни на приложението в нещо, което целевата база данни разбира.

ODBC има два компонента:ODBC драйвер и ODBC Driver Manager. ODBC драйверът е специфичен за база данни, т.е. ODBC драйвер на Microsoft Access ще разговаря само с база данни на Microsoft Access. ODBC Driver Manager е интерфейсът между устройството за съхранение CONNECT и ODBC драйвера. Мениджърът на драйвери е отговорен за зареждането на ODBC драйвера, като изолира приложението (т.е. механизма за съхранение) от компонента, който взаимодейства с базата данни. Тази архитектура позволява на MariaDB да се свързва с различни бази данни, без да се правят промени в MariaDB.

В Windows Microsoft предоставя ODBC Driver Manager с операционната система и това е тази, която CONNECT системата за съхранение използва на тази платформа.

В Linux механизмът за съхранение CONNECT използва мениджъра на драйвери unixODBC. Този мениджър на драйвери обикновено е наличен с операционната система, въпреки че може да не е инсталиран по подразбиране. Всички драйвери на Easysoft ODBC за не-Windows платформи включват unixODBC Driver Manager.

За да обобщим, компонентите, необходими за свързване на MariaDB с външни данни чрез ODBC, са:

За да изпробваме механизма за съхранение CONNECT, използвахме нашия SQL Server и Access ODBC драйвери с MariaDB на Linux и нашия Salesforce ODBC драйвер с MariaDB на Windows.

Забележка Ако използвате 64-битова версия MariaDB, трябва да използвате 64-битов ODBC драйвер. Ако използвате 32-битова версия MariaDB, трябва да използвате 32-битов ODBC драйвер.

Зареждане на Connect Storage Engine

Независимо дали използвате MariaDB на Linux или Windows, същата команда е необходима за зареждане на двигателя за съхранение CONNECT. В клиентска обвивка на MySQL въведете:

INSTALL SONAME 'ha_connect';

Ако приемем, че имате инсталиран подходящия ODBC драйвер за вашата целева база данни и сте конфигурирали източник на ODBC данни, вече можете да интегрирате външни данни с MariaDB.

В Linux използвахме копие на unixODBC Driver Manager, който беше включен в нашите драйвери, и затова трябваше да настроим средата, така че тези библиотеки на Driver Manager да бъдат заредени.

# /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

Пример:Свържете MariaDB на Linux към Microsoft Access

Двигателят за съхранение CONNECT ви позволява да създадете таблица CONNECT в MariaDB. Типът таблица CONNECT указва как ще се осъществява достъп до външните данни. Използваме ODBC драйвер, за да се свържем с Access и затова правилният тип таблица за използване е „ODBC“. Създадохме ODBC източник на данни, който се свързва с базата данни на Northwind и това са данните, до които ще имаме достъп от MariaDB. Източникът на данни се нарича "Northwind" и трябва да го включим в нашата дефиниция на таблица CONNECT:

$ /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 изявлението не е задължително.

Пример:Свържете MariaDB на Linux към Microsoft SQL Server

Този пример използва tabname опция за заобикаляне на разликата между MariaDB и SQL Server. Искаме да извлечем някои данни на AdventureWorks, съхранявани в Person.Address маса. Въпреки това, MariaDB няма идея за схема на таблица и затова ще променим името на таблицата на "PersonAddress" в MariaDB. Посочваме действителното име на таблицата с tabname , така че ODBC драйверът на SQL Server може да предаде името на таблицата, което SQL Server разпознава.

$ /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 Server uniqueidentifier . Трябва да съпоставим този тип в колоната rowguid към MariaDB VARCHAR Тип. Въпреки че това е единствената проблемна колона, трябва да включим останалите в CREATE TABLE изявление. В противен случай таблицата ще съдържа само колоната rowguid.

Пример:Свържете MariaDB на Windows към Salesforce

Ние използваме 64-битова версия на MariaDB и затова трябваше да конфигурираме 64-битов ODBC източник на данни за нашия целеви екземпляр на Salesforce. (В противен случай опитът ни да създадем тип таблица CONNECT ще се провали с грешка "Архитектурно несъответствие".) За да направим това, използвахме 64-битовата версия на Microsoft ODBC Data Source Administrator, която се намира в контролния панел. (В някои версии на Windows има както 32-битова, така и 64-битова версия на ODBC Data Source Administrator, разположена в контролния панел, но тяхната архитектура е ясно обозначена, ако това е така.)

Нашата целева "таблица" на Salesforce съдържа NVARCHAR колони, които механизмът за съхранение CONNECT обработва като 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

Други опции за свързване на MySQL/MariaDB

Име Описание
MariaDB конектор/ODBC Това е ODBC драйвер за MariaDB и е наличен както за Windows, така и за Linux платформи. Той позволява на ODBC съвместими приложения като Microsoft Excel да имат достъп до данни, съхранявани в MariaDB.
MySQL конектор/ODBC Това е ODBC драйвер за MySQL и е наличен за платформи Windows, Linux, UNIX и OS X. Той позволява на ODBC съвместими приложения като Microsoft Excel да имат достъп до данни, съхранявани в MySQL.
Обединена машина на MySQL Това е подобно на механизма за съхранение CONNECT, но поддържа само данни, съхранявани във външни MySQL бази данни.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Коригирайте „ГРЕШКА 1054 (42S22):Неизвестна колона „…“ в „on clause“ в MariaDB

  2. Върнете само числови стойности в MariaDB

  3. Как да получите края на месеца в MariaDB

  4. Защитната стена на SQL става лесна с ClusterControl и ProxySQL

  5. MariaDB JSON_OBJECT() Обяснено