Перейти к основному содержимому
Версия: 2.0.x

JDBC catalog

Selena поддерживает JDBC catalogs начиная с версии v1.5.2.

JDBC catalog — это тип внешнего catalog, который позволяет запрашивать данные из источников данных, доступных через JDBC, без загрузки.

Кроме того, вы можете напрямую преобразовывать и загружать данные из источников данных JDBC с помощью INSERT INTO на основе JDBC catalogs.

JDBC catalogs поддерживают MySQL и PostgreSQL начиная с v1.5.2.

Предварительные требования

  • FE и BE или CN в вашем Selena cluster могут загружать JDBC driver по URL загрузки, указанному параметром driver_url.
  • JAVA_HOME в файле $BE_HOME/bin/start_be.sh на каждом BE или CN node правильно настроен как путь в окружении JDK, а не как путь в окружении JRE. Например, вы можете настроить export JAVA_HOME = <JDK_absolute_path>. Вы должны добавить эту конфигурацию в начало скрипта и перезапустить BE или CN, чтобы конфигурация вступила в силу.

Создание JDBC catalog

Синтаксис

CREATE EXTERNAL CATALOG <catalog_name>
[COMMENT <comment>]
PROPERTIES ("key"="value", ...)

Параметры

catalog_name

Название JDBC catalog. Соглашения об именовании следующие:

  • Название может содержать буквы, цифры (0-9) и подчеркивания (_). Оно должно начинаться с буквы.
  • Название чувствительно к регистру и не может превышать 1023 символа.

comment

Описание JDBC catalog. Этот параметр необязателен.

PROPERTIES

Свойства JDBC Catalog. PROPERTIES должен включать следующие параметры:

ПараметрОписание
typeТип ресурса. Установите значение jdbc.
userИмя пользователя, которое используется для подключения к целевой базе данных.
passwordПароль, который используется для подключения к целевой базе данных.
jdbc_uriURI, который JDBC driver использует для подключения к целевой базе данных. Для MySQL URI имеет формат "jdbc:mysql://ip:port". Для PostgreSQL URI имеет формат "jdbc:postgresql://ip:port/db_name". Для получения дополнительной информации: PostgreSQL.
driver_urlURL загрузки JAR-пакета JDBC driver. Поддерживаются HTTP URL или file URL, например, https://repo1.maven.org/maven2/org/postgresql/postgresql/42.3.3/postgresql-42.3.3.jar и file:///home/disk1/postgresql-42.3.3.jar.
ПРИМЕЧАНИЕ
Вы также можете поместить JDBC driver по одному и тому же пути на FE и BE или CN nodes и установить driver_url на этот путь, который должен быть в формате file:///<path>/to/the/driver.
driver_classИмя класса JDBC driver. Имена классов JDBC driver распространенных движков баз данных следующие:
  • MySQL: com.mysql.jdbc.Driver (MySQL v5.x и ранее) и com.mysql.cj.jdbc.Driver (MySQL v6.x и позже)
  • PostgreSQL: org.postgresql.Driver

ПРИМЕЧАНИЕ

FE загружают JAR-пакет JDBC driver во время создания JDBC catalog, а BE или CN загружают JAR-пакет JDBC driver во время первого запроса. Время, затрачиваемое на загрузку, зависит от условий сети.

Примеры

Следующий пример создает пять различных JDBC catalogs.

-- PostgresSQL
CREATE EXTERNAL CATALOG jdbc0
PROPERTIES
(
"type"="jdbc",
"user"="postgres",
"password"="changeme",
"jdbc_uri"="jdbc:postgresql://127.0.0.1:5432/jdbc_test",
"driver_url"="https://repo1.maven.org/maven2/org/postgresql/postgresql/42.3.3/postgresql-42.3.3.jar",
"driver_class"="org.postgresql.Driver"
);
-- MySQL
CREATE EXTERNAL CATALOG jdbc1
PROPERTIES
(
"type"="jdbc",
"user"="root",
"password"="changeme",
"jdbc_uri"="jdbc:mysql://127.0.0.1:3306",
"driver_url"="https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.28/mysql-connector-java-8.0.28.jar",
"driver_class"="com.mysql.cj.jdbc.Driver"
);
-- Oracle
CREATE EXTERNAL CATALOG jdbc2
PROPERTIES
(
"type"="jdbc",
"user"="root",
"password"="changeme",
"jdbc_uri"="jdbc:oracle:thin:@127.0.0.1:1521:ORCL",
"driver_url"="https://repo1.maven.org/maven2/com/oracle/database/jdbc/ojdbc10/19.18.0.0/ojdbc10-19.18.0.0.jar",
"driver_class"="oracle.jdbc.driver.OracleDriver"
);
-- SQL Server
CREATE EXTERNAL CATALOG jdbc3
PROPERTIES
(
"type"="jdbc",
"user"="root",
"password"="changeme",
"jdbc_uri"="jdbc:sqlserver://127.0.0.1:1433;databaseName=MyDatabase;",
"driver_url"="https://repo1.maven.org/maven2/com/microsoft/sqlserver/mssql-jdbc/12.4.2.jre11/mssql-jdbc-12.4.2.jre11.jar",
"driver_class"="com.microsoft.sqlserver.jdbc.SQLServerDriver"
);
-- ClickHouse
CREATE EXTERNAL CATALOG jdbc4
PROPERTIES
(
"type"="jdbc",
"user"="default",
"jdbc_uri"="jdbc:clickhouse://127.0.0.1:8443",
"driver_url"="file:///path/to/clickhouse-jdbc-0.4.6.jar",
"driver_class"="com.clickhouse.jdbc.ClickHouseDriver"
);

Просмотр JDBC catalogs

Вы можете использовать SHOW CATALOGS для запроса всех catalogs в текущем Selena cluster:

SHOW CATALOGS;

Вы также можете использовать SHOW CREATE CATALOG для запроса оператора создания внешнего catalog. Следующий пример запрашивает оператор создания JDBC catalog с именем jdbc0:

SHOW CREATE CATALOG jdbc0;

Удаление JDBC catalog

Вы можете использовать DROP CATALOG для удаления JDBC catalog.

Следующий пример удаляет JDBC catalog с именем jdbc0:

DROP Catalog jdbc0;

Запрос таблицы в JDBC catalog

  1. Используйте SHOW DATABASES для просмотра баз данных в вашем JDBC-совместимом cluster:

    SHOW DATABASES FROM <catalog_name>;
  2. Используйте SET CATALOG для переключения на целевой catalog в текущей сессии:

    SET CATALOG <catalog_name>;

    Затем используйте USE для указания активной базы данных в текущей сессии:

    USE <db_name>;

    Или вы можете использовать USE для непосредственного указания активной базы данных в целевом catalog:

    USE <catalog_name>.<db_name>;
  3. Используйте SELECT для запроса целевой таблицы в указанной базе данных:

    SELECT * FROM <table_name>;

FAQ

Что делать, если появляется ошибка «Malformed database URL, failed to parse the main URL sections»?

Если вы столкнулись с такой ошибкой, URI, который вы передали в jdbc_uri, недействителен. Проверьте URI, который вы передаете, и убедитесь, что он действителен. Для получения дополнительной информации см. описания параметров в разделе «PROPERTIES» этой темы.