Мне нужно разработать приложение, которое может получать данные из нескольких источников данных (Oracle, Excel, Microsoft Sql Server
и т.д.), используя один SQL query
. Например:
SELECT o.employeeId, count(o.orderId)
FROM [email protected] e. [email protected] c, [email protected] o
WHERE o.employeeId = e.employeeId and o.customerId = c.customerId
GROUP BY o.employeeId;
Этот sql и источники данных должны динамически меняться с помощью java-программы. Мои клиенты хотят писать и запускать sql-like query
из разных баз данных и хранилища в одно и то же время с помощью group by, having, count, sum
и т.д. в веб-интерфейсе моего приложения. Другие требования - это производительность и легкий вес.
Я нахожу этот способ сделать это (и какие недостатки я вижу, пожалуйста, исправьте меня, если я ошибаюсь):
-
Apache Spark ( недостатки: тяжелое решение, лучше для BigData, медленно, если вам нужно получать самую свежую информацию без кэширования в Spark),
-
Распределенные запросы в SQL Server (Ссылка на базу данных Oracle, Связанные сервер Microsoft SQL Server, Power Query of Excel) - недостатки: проблема динамического изменения источников данных с помощью java-программы и проблема с работой с Excel,
-
Prestodb ( недостатки: тяжелое решение, лучше для BigData),
-
Apache Drill ( недостатки: довольно молодое решение, некоторая проблема с не последние драйверы odbc и некоторые ошибки при работе),
-
Apache Calcite (ligth framework, который будет использоваться сверлом Apache, недостатки: довольно молодое решение еще),
-
Соединяйтесь с источниками данных вручную ( недостатки: много работы для разработать правильное соединение, "group by" в наборе результатов, найти лучший план выполнения и т.д.)
Может быть, знаете ли вы каким-либо другим способом (используя бесплатные решения с открытым исходным кодом) или дайте мне какие-либо советы из вашего опыта о путях выше? Любая помощь будет принята с благодарностью.