Все тесты фреймворка data.framework, которые делаются в проекте и «дергают» базу, предупреждают об опасности при запуске и не позволяют запустить их «как есть» с продакшен параметрами окружения. Вместо этого используются тестовые параметры окружения для соединения с Кликхаузом и Редисом.
Проблема в том, что человеческий фактор всё равно имеет место. Можно было бы устранить его, если бы код дата фреймворка мог изолировать INSERT, ALTER, CREATE SQL-запросы для базы, которая указана при создании соединения.
К сожалению, я не смог разобраться как этого достичь не парся сам SQL-запрос (который потенциально может содержать ошибку: например, соединение создано для базы test, а в тексте SQL-запроса написано INSERT INTO production.table ...;). Проблема в том, что через REST API Кликхауз не поддерживает сессии. Однако, позже я заметил что Tabix как-то понимает контекст запроса и если я пишу SELECT * FROM table, запрос выполняется на выбранной базе test, как и ожидается. Однако Tabix очень навороченный проект, и там вполне может быть синтаксический анализатор SQL. Не хотелось бы его тащить в проект/делать/создавать.
Требуется
Детальнее изучить вопрос, описанный выше
Спрототипировать солюшен и внедрить его в data.framework, а также покрыть тестами сценарий описанный выше.
Убедиться что цель достигнута: любой код использующий data.framework должен иметь возможность записывать только в ту базу, которая указана при создании соединения.
Все тесты фреймворка
data.framework
, которые делаются в проекте и «дергают» базу, предупреждают об опасности при запуске и не позволяют запустить их «как есть» с продакшен параметрами окружения. Вместо этого используются тестовые параметры окружения для соединения с Кликхаузом и Редисом.Проблема в том, что человеческий фактор всё равно имеет место. Можно было бы устранить его, если бы код дата фреймворка мог изолировать
INSERT
,ALTER
,CREATE
SQL-запросы для базы, которая указана при создании соединения.К сожалению, я не смог разобраться как этого достичь не парся сам SQL-запрос (который потенциально может содержать ошибку: например, соединение создано для базы
test
, а в тексте SQL-запроса написаноINSERT INTO production.table ...;
). Проблема в том, что через REST API Кликхауз не поддерживает сессии. Однако, позже я заметил что Tabix как-то понимает контекст запроса и если я пишуSELECT * FROM table
, запрос выполняется на выбранной базеtest
, как и ожидается. Однако Tabix очень навороченный проект, и там вполне может быть синтаксический анализатор SQL. Не хотелось бы его тащить в проект/делать/создавать.Требуется
data.framework
, а также покрыть тестами сценарий описанный выше.data.framework
должен иметь возможность записывать только в ту базу, которая указана при создании соединения.