-
Notifications
You must be signed in to change notification settings - Fork 43
Description
Related dev. resources:
- Release cards for TCS: https://jira.vk.team/browse/PRODUCTS-682
- Dev ticket: none
Product: TCS
Since: 0.29
Audience/target: admins, end users (finops)
Root document: https://www.tarantool.io/ru/column-store/doc/latest/
SME: Алексей Андреев, Павел Сергеев
Details
В 0.х доку надо добавить информацию по работе с аналитическими расчетами через jdbc/adbc из 1.0:
https://docs.d.tarantool.io/ru/column-store/doc/1.x/user_guide/dbc_drivers/#dbc-prepared
Отличия:
(1) в 1.0 пока не работает вариант через jdbc https://jira.vk.team/browse/TNTP-3900
(2) когда заработает, то будут разные строки соединения для 1.х и 0.х в jdbc:
- для 0.х: jdbc:arrow-flight-sql://tcs:tcs@localhost:50051?useEncryption=false
- для 1.х: jdbc:arrow-flight-sql://localhost:50051?useEncryption=false&user=tcs&password=tcs
Но это всё может динамично поменяться. Необходимо перепроверять с SME!!!
Полный текст статьи (для копи-паста перейти в режим edit этого тикета):
(dbc-prepared)=
## Работа с аналитическими расчетами
TCS поддерживает два вида аналитических расчетов:
- перманентные (хранятся в базе данных)
- временные (работают только в пределах сессии)
Перманентные аналитические расчеты специфичны для TCS.
Они создаются и вызываются только через SQL. Для этого используется код запуска
вида `PREPARE my_func(INT) AS <query>` и последующий вызов через EXECUTE.
При работе с TCS по протоколу HTTP доступен только этот вид аналитических расчетов.
Подробнее см. [](queries-computation).
Временные аналитические расчеты представляют собой переменную-объект в языке программирования.
Они создаются и вызываются только через библиотечные API с помощью кода вызова
вида `my_db.Prepare(sql)`. Подробнее см. ниже.
Аналитические расчеты разных видов можно комбинировать, но с ограничениями:
- Из временного расчета можно выполнить перманентный расчет, вызвав его по имени в помощью `.execute()`.
- Вызвать временный расчет из перманентного нельзя, потому что у временных расчетов нет имени для привязки.
(dbc-prepared-jdbc)=
### Работа с аналитическими расчетами через JDBC
Требуется JDBC-драйвер `flight-sql-dbc-driver` версии не ниже 18.3.0.
Для работы с этим драйвером нужно установить зависимость в клиентском приложении.
Пример: добавление зависимости в `pom.xml`:
Пример: строка соединения:
jdbc:arrow-flight-sql://localhost:50051?useEncryption=false&user=tcs&password=tcs
В текущей версии TCS поддержано исполнение аналитических расчетов только через `.execute()`.
Исполнение через .addBatch() и .executeBatch() пока не поддержано.
(dbc-prepared-adbc)=
Работа с аналитическими расчетами через ADBC
Требуется драйвер go adbc
версии не ниже 1.7.0.
Пример кода создания/вызова:
prepared, err := db.Prepare("SELECT * FROM t WHERE a=$1")
if err != nil {
log.Fatalf("Failed to prepare the statement: %v", err)
}
var num int32
var str string
if err = prepared.QueryRow(1).Scan(&num, &str); err != nil {
log.Fatalf("Failed to execute query: %v", err)
}
fmt.Println(num, str)