MariaDB é um fork do MySQL, que foi inicialmente derivado da versão 5.1 do MySQL. Ao contrário do MySQL, o MariaDB pode usar dados externos armazenados em bancos de dados não MariaDB como se os dados estivessem armazenados em uma tabela MariaDB padrão. Os dados não são carregados no MariaDB. Para trabalhar com dados externos, o MariaDB usa o mecanismo de armazenamento CONNECT. Esse mecanismo de armazenamento foi introduzido no MariaDB 10.0.
O mecanismo de armazenamento CONNECT está incluído nas versões Windows e Linux do banco de dados, embora não seja carregado por padrão. O mecanismo de armazenamento CONNECT pode usar ODBC para trabalhar com dados externos. ODBC é uma interface neutra de banco de dados que permite que aplicativos compatíveis com ODBC, como o mecanismo de armazenamento CONNECT, funcionem com qualquer banco de dados para o qual um driver ODBC esteja disponível. O ODBC converte as consultas de dados do aplicativo em algo que o banco de dados de destino entende.
O ODBC tem dois componentes:o driver ODBC e o ODBC Driver Manager. O driver ODBC é específico do banco de dados, ou seja, um driver ODBC do Microsoft Access só se comunicará com um banco de dados do Microsoft Access. O ODBC Driver Manager é a interface entre o mecanismo de armazenamento CONNECT e o driver ODBC. O Driver Manager é responsável por carregar o driver ODBC, isolando a aplicação (ou seja, o mecanismo de armazenamento) do componente que interage com o banco de dados. Essa arquitetura permite que o MariaDB se conecte a diferentes bancos de dados sem que nenhuma alteração seja feita no MariaDB.
No Windows, a Microsoft fornece um ODBC Driver Manager com o sistema operacional, e este é o que o mecanismo de armazenamento CONNECT usa nesta plataforma.
No Linux, o mecanismo de armazenamento CONNECT usa o gerenciador de driver unixODBC. Este Gerenciador de Drivers geralmente está disponível com o sistema operacional, embora possa não ser instalado por padrão. Todos os drivers ODBC da Easysoft para plataformas não Windows incluem o Gerenciador de Driver unixODBC.
Para resumir, os componentes necessários para conectar o MariaDB a dados externos usando ODBC são:
Para experimentar o mecanismo de armazenamento CONNECT, usamos nossos drivers SQL Server e Access ODBC com MariaDB no Linux e nosso driver ODBC Salesforce com MariaDB no Windows.
Observação Se você estiver usando uma versão de 64 bits do MariaDB, deverá usar um driver ODBC de 64 bits. Se você estiver usando uma versão de 32 bits do MariaDB, deverá usar um driver ODBC de 32 bits.
Carregando o Connect Storage Engine
Independentemente de você estar executando o MariaDB no Linux ou no Windows, o mesmo comando é necessário para carregar o mecanismo de armazenamento CONNECT. Em um shell de cliente MySQL, digite:
INSTALL SONAME 'ha_connect';
Supondo que você tenha o driver ODBC apropriado para seu banco de dados de destino instalado e tenha configurado uma fonte de dados ODBC, agora você pode integrar dados externos ao MariaDB.
No Linux, estávamos usando uma cópia do Gerenciador de Driver unixODBC que foi incluído em nossos drivers e, portanto, tivemos que definir o ambiente para que essas bibliotecas do Gerenciador de Drivers fossem carregadas.
# /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
Exemplo:conectar MariaDB no Linux ao Microsoft Access
O mecanismo de armazenamento CONNECT permite que você crie uma tabela CONNECT no MariaDB. O tipo de tabela CONNECT especifica como os dados externos serão acessados. Estamos usando um driver ODBC para conectar ao Access e, portanto, o tipo de tabela correto a ser usado é "ODBC". Criamos uma fonte de dados ODBC que se conecta ao banco de dados Northwind, e esses são os dados que acessaremos do MariaDB. A fonte de dados é chamada "Northwind" e precisamos incluir isso em nossa definição de tabela 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)
O mecanismo de armazenamento pode detectar automaticamente a estrutura da tabela de destino e, assim, especificar os nomes das colunas/tipos de dados no
CREATE TABLE
declaração não é obrigatória. Exemplo:conectar o MariaDB no Linux ao Microsoft SQL Server
Este exemplo usa o
tabname
opção para contornar uma diferença entre MariaDB e SQL Server. Queremos recuperar alguns dados do AdventureWorks armazenados em Person.Address
tabela. No entanto, o MariaDB não tem a ideia de um esquema de tabela, então vamos mudar o nome da tabela para "PersonAddress" no MariaDB. Especificamos o nome real da tabela com o tabname
, para que o driver ODBC do SQL Server possa passar o nome da tabela que o SQL Server reconhece. $ /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 | +-----------+
Como não há equivalente direto para o tipo de dados do SQL Server
uniqueidentifier
. Temos que mapear esse tipo na coluna rowguid para um MariaDB VARCHAR
tipo. Mesmo que esta seja a única coluna problemática, precisamos incluir as outras no CREATE TABLE
demonstração. Caso contrário, a tabela conteria apenas a coluna rowguid. Exemplo:conectar MariaDB no Windows ao Salesforce
Estamos usando uma versão de 64 bits do MariaDB e, portanto, precisávamos configurar uma fonte de dados ODBC de 64 bits para nossa instância de destino do Salesforce. (Caso contrário, nossa tentativa de criar um tipo de tabela CONNECT falhará com um erro "Incompatibilidade de arquitetura".) Para fazer isso, usamos a versão de 64 bits do Microsoft ODBC Data Source Administrator, localizado no Painel de controle. (Em algumas versões do Windows, há uma versão de 32 bits e uma versão de 64 bits do Administrador de fonte de dados ODBC localizada no Painel de controle, no entanto, sua arquitetura é claramente rotulada se for o caso.)
Nossa "tabela" de destino do Salesforce contém
NVARCHAR
colunas, que o mecanismo de armazenamento CONNECT trata como VARCHAR
s. O CREATE TABLE
declaração gera avisos para este efeito. ("O ID da coluna é caracteres largos" e assim por diante.) 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
Outras opções de conectividade MySQL/MariaDB
Nome | Descrição |
---|---|
Conector MariaDB/ODBC | Este é um driver ODBC para MariaDB e está disponível para plataformas Windows e Linux. Ele permite que aplicativos compatíveis com ODBC, como o Microsoft Excel, acessem dados armazenados no MariaDB. |
Conector MySQL/ODBC | Este é um driver ODBC para MySQL e está disponível para plataformas Windows, Linux, UNIX e OS X. Ele permite que aplicativos compatíveis com ODBC, como o Microsoft Excel, acessem dados armazenados no MySQL. |
Mecanismo Federado MySQL | Isso é semelhante ao mecanismo de armazenamento CONNECT, no entanto, ele suporta apenas dados armazenados em bancos de dados MySQL externos. |