Skip to content

Latest commit

 

History

History
71 lines (49 loc) · 6.69 KB

File metadata and controls

71 lines (49 loc) · 6.69 KB

en en

SQL-PROXY

Описание

Легковесный REST-сервис, разработанный для замены вызовов ADODB в устаревших программных системах, поддерживающих веб-запросы. Этот сервис упрощает взаимодействие с базами данных, сохраняя при этом безопасность и эффективность.

Например, вы можете удалить все несовместимые с Linux компоненты, такие как следующие элементы (пример для 1С:Предприятие):

Соединение = Новый COMObject("ADODB.Connection");
Соединение.Open(СтрокаСоединения);

и вместо этого использовать веб-запросы аналогичным образом, применяя простую библиотеку для получения результатов SQL-запросов в формате JSON с переменным числом колонок, определяемых текстом SQL-запроса:

Функция УстановитьSQLСоединение(СтрокаСоединения) Экспорт
  HTTP = Новый HTTPConnection;
  ПутьAPI = "/api/v1/connection";
  ...

Обратитесь к примеру для языка 1С:Предприятие в папке /docs, чтобы узнать, как использовать этот API. Обратите внимание, что данный сервис не ограничен только 1С и может быть использован в других системах.

Основные особенности

  • Поддержка нескольких баз данных: совместим с PostgreSQL, Microsoft SQL Server и MySQL. Не требуется устанавливать драйверы и настраивать источники ODBC. При необходимости можно интегрировать дополнительные стандартные драйверы баз данных Golang добавив несколько строчек кода;
  • Режим запуска: можно настроить как простую отдельную службу, либо использовать в контейнере в k8s;
  • Безопасное управление учетными данными: не хранит данные учетных записей, гарантируя защиту конфиденциальной информации;
  • Защищённое соединение: при необходимости, поддерживает HTTPS для безопасной передачи данных;
  • Пул соединений: использует общий переиспользуемый пул SQL-соединений с регламентными задачами обслуживания для удаления устаревших или зависших соединений;
  • Ограничение соединений: настраиваемый лимит одновременных подключений к базе данных для предотвращения исчерпания ресурсов;
  • Поддержка языка SQL: поддерживает любые SQL-команды без ограничений. Команда SELECT возвращает результаты запроса в виде гибкого JSON-формата набора записей;
  • Ограничение результатов: позволяет настраивать ограничения на количество строк, возвращаемых командами SELECT;
  • Поддержка подготовленных выражений: реализована;
  • Поддержка записи и чтения BLOB полей: реализована;
  • Гибкая привязка: может быть привязан к localhost или любому указанному IP-адресу для повышения безопасности. По умолчанию предполагается привязка к localhost и работа в паре с устаревшим программным обеспечением;
  • Ответственность за безопасность: не выполняет валидацию SQL-запросов. Ответственность за настройку соответствующих привилегий базы данных лежит на администраторе СУБД. Помните, что это простая и быстрая замена вызовов ADODB, который является "дедовской" технологией, и раз вы заинтересованы заменить его, то у вас уже должны быть настроены роли и пользователи на СУБД, в противовес тому что принято сейчас в смузи-технологиях. Не используйте учётную запись с административными привилегиями! Рассмотрите на будущее разработку ORM или других более безопасных паттернов разработки.
  • Мониторинг и метрики: предоставляет метрики Prometheus;

Описание API

Текущая версия API: 1.2. См. спецификацию Swagger OpenAPI 3.0 в папке /docs/api

API overview

Как скомпилировать

Номер текущей версии: 1.4.4. Выполнить в командной строке:

make prod

Как запустить

Просто запустите бинарник. Все параметры передаются через переменные окружения, см. Makefile для детальной информации и значений настроек по умолчанию:

BIND_ADDR=localhost BIND_PORT=8081 MAX_ROWS=10000 MAX_CONNECTIONS=100 sql-proxy

или установите как службу systemd с помощью скрипта install.sh. Параметры можно изменить прямо в этом скрипте перед установкой, или отредактировать потом файл sql-proxy.service.