Сторонняя система, которую я использую, регистрирует все запросы SQL вместе с количеством строк и временем отклика, которые я затем отправляю в Logstash / Elastic для вычисления метрик.Поскольку в этой системе не используются переменные связывания, и ежедневно выполняется 10 миллионов запросов, мне нужно иметь возможность объединять данные, чего я не могу сделать, если большинство запросов уникальны.Мне нужен способ заменить параметры SQL-запроса на '?'как Oracle будет делать с помощью Cursor Sharing.
т.е.
заменить
'SELECT * FROM table_name WHERE id = 123'
на
'SELECT * FROM table_name WHERE id = ?'
У меня есть доступ к магии сценариев Ruby в Logstash, но, к сожалению, все результаты google для 'sql regex' или аналогичные результаты возвращают то, как использовать регулярные выражения в SQL, а не наоборот.Прежде чем приступить к созданию синтаксического анализатора регулярных выражений, я решил проверить здесь, пытались ли другие решить подобную проблему.
К вашему сведению, рассматривали реализацию решения с использованием библиотеки Ruby SQL AST, такой какhttps://github.com/lfittl/pg_query но подключение библиотек Ruby к Logstash становится большей проблемой при написании специального плагина Filter для выполнения работы, что может быть ответом, но я надеюсь, что упускаю что-то очевидное.