sql >> Databáze >  >> RDS >> MariaDB

MariaDB a externí data

MariaDB je vidlice MySQL, která byla původně odvozena z verze 5.1 MySQL. Na rozdíl od MySQL může MariaDB používat externí data uložená v databázích jiných než MariaDB, jako by byla data uložena ve standardní tabulce MariaDB. Data se nenačtou do MariaDB. Pro práci s externími daty používá MariaDB úložiště CONNECT. Tento modul úložiště byl představen v MariaDB 10.0.

Úložný modul CONNECT je součástí databáze ve verzi pro Windows i Linux, i když se ve výchozím nastavení nenačítá. Úložný modul CONNECT může používat ODBC pro práci s externími daty. ODBC je databázově neutrální rozhraní, které umožňuje aplikacím vyhovujícím ODBC, jako je úložiště CONNECT, pracovat s libovolnou databází, pro kterou je k dispozici ovladač ODBC. ODBC překládá datové dotazy aplikace do něčeho, čemu cílová databáze rozumí.

ODBC má dvě součásti:ovladač ODBC a správce ovladačů ODBC. Ovladač ODBC je specifický pro databázi, tj. ovladač ODBC pro Microsoft Access bude komunikovat pouze s databází Microsoft Access. Správce ovladačů ODBC je rozhraním mezi úložištěm CONNECT a ovladačem ODBC. Správce ovladačů je zodpovědný za načtení ovladače ODBC, izoluje aplikaci (tj. úložiště) od komponenty, která spolupracuje s databází. Tato architektura umožňuje MariaDB připojit se k různým databázím bez jakýchkoliv změn v MariaDB.

V systému Windows poskytuje Microsoft s operačním systémem správce ovladačů ODBC, a to je ten, který na této platformě používá úložiště CONNECT.

V systému Linux používá úložiště CONNECT správce ovladačů unixODBC. Tento Driver Manager je obvykle k dispozici s operačním systémem, i když nemusí být nainstalován ve výchozím nastavení. Všechny ovladače Easysoft ODBC pro platformy jiné než Windows obsahují unixODBC Driver Manager.

Abych to shrnul, komponenty potřebné k připojení MariaDB k externím datům pomocí ODBC jsou:

Abychom vyzkoušeli modul úložiště CONNECT, použili jsme naše ovladače SQL Server a Access ODBC na MariaDB na Linuxu a náš Salesforce ODBC ovladač s MariaDB na Windows.

Poznámka Pokud používáte 64bitovou verzi MariaDB, musíte použít 64bitový ovladač ODBC. Pokud používáte 32bitovou verzi MariaDB, musíte použít 32bitový ovladač ODBC.

Načítání Connect Storage Engine

Bez ohledu na to, zda používáte MariaDB v systému Linux nebo Windows, je k načtení modulu úložiště CONNECT vyžadován stejný příkaz. V klientském prostředí MySQL zadejte:

INSTALL SONAME 'ha_connect';

Za předpokladu, že máte nainstalovaný příslušný ovladač ODBC pro vaši cílovou databázi a nakonfigurovali jste zdroj dat ODBC, můžete nyní integrovat externí data s MariaDB.

V Linuxu jsme používali kopii unixODBC Driver Manager, která byla součástí našich ovladačů, a tak jsme museli nastavit prostředí tak, aby se tyto knihovny Driver Manager načetly.

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

Příklad:Připojte MariaDB v systému Linux k Microsoft Access

Úložný modul CONNECT vám umožňuje vytvořit tabulku CONNECT v MariaDB. Typ tabulky CONNECT určuje, jak se bude přistupovat k externím datům. K připojení k Accessu používáme ovladač ODBC, takže správný typ tabulky, který se má použít, je "ODBC". Vytvořili jsme zdroj dat ODBC, který se připojuje k databázi Northwind, a to jsou data, ke kterým budeme přistupovat z MariaDB. Zdroj dat se nazývá „Northwind“ a musíme jej zahrnout do definice tabulky 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)

Úložný modul může automaticky detekovat strukturu cílové tabulky, a tak specifikovat názvy sloupců / datové typy v CREATE TABLE prohlášení není povinné.

Příklad:Připojte MariaDB na Linuxu k Microsoft SQL Server

Tento příklad používá tabname možnost obejít rozdíl mezi MariaDB a SQL Server. Chceme získat některá data AdventureWorks uložená v Person.Address stůl. MariaDB však nemá představu schématu tabulky, a tak v MariaDB změníme název tabulky na „PersonAddress“. Vlastní název tabulky zadáváme pomocí tabname , takže ovladač SQL Server ODBC může předat název tabulky, který SQL Server rozpozná.

$ /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 |
+-----------+

Protože neexistuje žádný přímý ekvivalent pro datový typ serveru SQL Server uniqueidentifier . Tento typ musíme namapovat ve sloupci rowguid na MariaDB VARCHAR typ. I když se jedná o jediný problematický sloupec, musíme ostatní zahrnout do CREATE TABLE prohlášení. Jinak by tabulka obsahovala pouze sloupec rowguid.

Příklad:Připojte MariaDB ve Windows k Salesforce

Používáme 64bitovou verzi MariaDB, a proto jsme potřebovali nakonfigurovat 64bitový zdroj dat ODBC pro naši cílovou instanci Salesforce. (V opačném případě se náš pokus o vytvoření typu tabulky CONNECT nezdaří s chybou "Nesoulad architektury".) K tomu jsme použili 64bitovou verzi Microsoft ODBC Data Source Administrator, která se nachází v Ovládacích panelech. (V některých verzích Windows existuje 32bitová i 64bitová verze Správce zdrojů dat ODBC umístěná v Ovládacích panelech, avšak jejich architektura je v tomto případě jasně označena.)

Naše cílová "tabulka" Salesforce obsahuje NVARCHAR sloupce, které úložiště CONNECT zpracovává jako VARCHAR s. CREATE TABLE příkaz generuje varování v tomto smyslu. ("ID sloupce je široké znaky" a tak dále.)

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

Další možnosti připojení MySQL/MariaDB

Jméno Popis
Konektor MariaDB/ODBC Toto je ovladač ODBC pro MariaDB a je k dispozici pro platformy Windows i Linux. Umožňuje aplikacím kompatibilním s ODBC, jako je Microsoft Excel, přistupovat k datům uloženým v MariaDB.
MySQL Connector/ODBC Toto je ovladač ODBC pro MySQL a je k dispozici pro platformy Windows, Linux, UNIX a OS X. Umožňuje aplikacím kompatibilním s ODBC, jako je Microsoft Excel, přistupovat k datům uloženým v MySQL.
MySQL Federated Engine Toto je podobné modulu úložiště CONNECT, ale podporuje pouze data uložená v externích databázích MySQL.

  1. Jak vrátím pole jsonb a pole objektů z mých dat?

  2. jak uložit PostgreSQL jsonb pomocí SpringBoot + JPA?

  3. Jak MariaDB dosahuje globálního měřítka s Xpand

  4. Nainstalujte Oracle Database Client krok za krokem