sql >> Database teknologi >  >> RDS >> MariaDB

MariaDB &Eksterne Data

MariaDB er en MySQL-gaffel, som oprindeligt blev afledt af 5.1-udgivelsen af ​​MySQL. I modsætning til MySQL kan MariaDB bruge eksterne data, der er gemt i ikke-MariaDB-databaser, som om dataene var gemt i en standard MariaDB-tabel. Dataene indlæses ikke i MariaDB. Til at arbejde med eksterne data bruger MariaDB CONNECT-lagringsmotoren. Denne lagermotor blev introduceret i MariaDB 10.0.

CONNECT-lagermotoren er inkluderet med både Windows- og Linux-versionen af ​​databasen, selvom den ikke er indlæst som standard. CONNECT-lagermotoren kan bruge ODBC til at arbejde med eksterne data. ODBC er en databaseneutral grænseflade, der gør det muligt for ODBC-kompatible applikationer, såsom CONNECT-lagringsmotoren, at arbejde med enhver database, som en ODBC-driver er tilgængelig for. ODBC oversætter applikationens dataforespørgsler til noget måldatabasen forstår.

ODBC har to komponenter:ODBC-driveren og ODBC Driver Manager. ODBC-driveren er databasespecifik, dvs. en Microsoft Access ODBC-driver vil kun tale med en Microsoft Access-database. ODBC Driver Manager er grænsefladen mellem CONNECT-lagermotoren og ODBC-driveren. Driver Manager er ansvarlig for at indlæse ODBC-driveren og isolere applikationen (dvs. lagermotoren) fra den komponent, der interagerer med databasen. Denne arkitektur gør det muligt for MariaDB at oprette forbindelse til forskellige databaser uden at der foretages ændringer i MariaDB.

På Windows leverer Microsoft en ODBC Driver Manager med operativsystemet, og dette er det, som CONNECT-lagermotoren bruger på denne platform.

På Linux bruger CONNECT-lagermotoren unixODBC Driver Manager. Denne Driver Manager er normalt tilgængelig med operativsystemet, selvom den muligvis ikke er installeret som standard. Alle Easysoft ODBC-drivere til ikke-Windows-platforme inkluderer unixODBC Driver Manager.

For at opsummere er de komponenter, der kræves for at forbinde MariaDB til eksterne data ved hjælp af ODBC:

For at prøve CONNECT-lagringsmotoren brugte vi vores SQL Server og Access ODBC-drivere på med MariaDB på Linux og vores Salesforce ODBC-driver med MariaDB på Windows.

Bemærk Hvis du bruger en 64-bit version af MariaDB, skal du bruge en 64-bit ODBC-driver. Hvis du bruger en 32-bit version af MariaDB, skal du bruge en 32-bit ODBC-driver.

Indlæsning af Connect Storage Engine

Uanset om du kører MariaDB på Linux eller Windows, kræves den samme kommando for at indlæse CONNECT-lagringsmotoren. Skriv:

i en MySQL-klient-shell
INSTALL SONAME 'ha_connect';

Forudsat at du har den passende ODBC-driver til din måldatabase installeret og har konfigureret en ODBC-datakilde, kan du nu integrere eksterne data med MariaDB.

På Linux brugte vi en kopi af unixODBC Driver Manager, der var inkluderet i vores drivere, og derfor var vi nødt til at indstille miljøet, så disse Driver Manager-biblioteker blev indlæst.

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

Eksempel:Forbind MariaDB på Linux til Microsoft Access

CONNECT-lagermotoren giver dig mulighed for at oprette en CONNECT-tabel i MariaDB. Tabeltypen CONNECT angiver, hvordan de eksterne data vil blive tilgået. Vi bruger en ODBC-driver til at oprette forbindelse til Access, så den korrekte tabeltype, der skal bruges, er "ODBC". Vi har oprettet en ODBC-datakilde, der forbinder til Northwind-databasen, og det er de data, vi får adgang til fra MariaDB. Datakilden hedder "Northwind", og det skal vi inkludere i vores CONNECT-tabeldefinition:

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

Lagermotoren kan automatisk detektere måltabelstrukturen og således specificere kolonnenavnene/datatyperne i CREATE TABLE erklæring er ikke obligatorisk.

Eksempel:Forbind MariaDB på Linux til Microsoft SQL Server

Dette eksempel bruger tabname mulighed for at omgå en forskel mellem MariaDB og SQL Server. Vi ønsker at hente nogle AdventureWorks-data, der er gemt i Person.Address bord. MariaDB har dog ikke ideen om et tabelskema, og derfor vil vi ændre navnet på tabellen til "PersonAddress" i MariaDB. Vi angiver det faktiske tabelnavn med tabname , så SQL Server ODBC-driveren kan videregive det tabelnavn, som SQL Server genkender.

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

Fordi der ikke er nogen direkte ækvivalent for SQL Server-datatypen uniqueidentifier . Vi skal tilknytte denne type i kolonnen rowguid til en MariaDB VARCHAR type. Selvom dette er den eneste problematiske kolonne, skal vi inkludere de andre i CREATE TABLE udmelding. Ellers ville tabellen kun indeholde kolonnen rowguid.

Eksempel:Forbind MariaDB på Windows til Salesforce

Vi bruger en 64-bit version af MariaDB, og vi var derfor nødt til at konfigurere en 64-bit ODBC-datakilde til vores mål-Salesforce-forekomst. (Ellers vil vores forsøg på at oprette en CONNECT-tabeltype mislykkes med fejlen "Architecture mismatch".) For at gøre dette brugte vi 64-bit versionen af ​​Microsoft ODBC Data Source Administrator, som er placeret i Kontrolpanel. (På nogle versioner af Windows er der både en 32-bit og en 64-bit version af ODBC Data Source Administrator placeret i Kontrolpanel, men deres arkitektur er tydeligt mærket, hvis dette er tilfældet.)

Vores mål Salesforce "tabel" indeholder NVARCHAR kolonner, som CONNECT-lagermotoren håndterer som VARCHAR s. CREATE TABLE erklæring genererer advarsler herom. ("Kolonne-id er brede tegn", og så videre.)

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

Andre MySQL/MariaDB-forbindelsesmuligheder

Navn Beskrivelse
MariaDB Connector/ODBC Dette er en ODBC-driver til MariaDB og er tilgængelig til både Windows- og Linux-platforme. Det gør det muligt for ODBC-kompatible applikationer såsom Microsoft Excel at få adgang til data gemt i MariaDB.
MySQL Connector/ODBC Dette er en ODBC-driver til MySQL og er tilgængelig til Windows, Linux, UNIX og OS X platforme. Det gør det muligt for ODBC-kompatible applikationer såsom Microsoft Excel at få adgang til data gemt i MySQL.
MySQL Federated Engine Dette ligner CONNECT-lagringsmotoren, men det understøtter kun data, der er gemt i eksterne MySQL-databaser.

  1. Dimensioner af dimensioner:Et kig på Data Warehousings mest almindelige dimensionelle tabeltyper

  2. SQL Server 2017:Import af CSV-data fra Linux til Salesforce med SSIS

  3. COUNT(*) fra flere tabeller i MySQL

  4. Hvordan MINUTE() virker i MariaDB