Есть ли уровень абстракции, который делает базу данных похожей на Oracle?

Мы используем Oracle в производстве, но в нашей компании это сложно установить в средах разработки.

Есть ли способ позволить Perl (или любому другому языку) отправлять необработанные операторы SQL через модуль DBI (или эквивалентный модуль для любого другого языка для отправки команд SQL в базу данных), которые переводятся из Oracle SQL в MySQL или SQLite или что-то подобное? еще?

Таким образом, приложение будет думать, что оно взаимодействует с Oracle, но на самом деле будет разговаривать с другой, более простой в установке базой данных с открытым исходным кодом / бесплатной.

2 ответа

Это невозможно. Другие движки баз данных не могут обрабатывать запросы Oracle. Простейший запрос в Oracle, например, если вы хотите получить имя текущего пользователя:

select user from dual

Этот запрос использует DUAL таблица, которой нет ни в одной другой СУБД. Существует также много специфичных для Oracle конструкций (CONNECT BY, MINUSи т. д.), которые не могут быть обработаны в других двигателях.
В вашей ситуации лучше всего создать одну установку Oracle на виртуальной машине, а затем скопировать ее образ на другие виртуальные машины для работы.

ANSI SQL - это уровень абстракции, на который вы ссылаетесь.

Предполагая, что все таблицы существуют в целевой базе данных и СУБД поддерживает ANSI SQL, ваш запрос будет безупречно перенесен в эту другую базу данных.

Если вы хотите использовать что-то, что не определено в стандарте, то это вряд ли будет работать правильно.

Это ссылка на позицию Oracle 11.2G в стандарте.

Говоря об Oracle, их решение проблемы состоит в том, чтобы предложить Oracle Database Gateways.

Другие вопросы по тегам