Necesito desarrollar una aplicación que pueda obtener datos de múltiples fuentes de datos ( Oracle, Excel, Microsoft Sql Server
y así sucesivamente) usando uno SQL query
. Por ejemplo:
SELECT o.employeeId, count(o.orderId)
FROM employees@excel e. customers@microsoftsql c, orders@oracle o
WHERE o.employeeId = e.employeeId and o.customerId = c.customerId
GROUP BY o.employeeId;
Este sql y las fuentes de datos deben ser cambiadas dinámicamente por el programa java. Mis clientes desean escribir y ejecutar sql-like query
desde diferentes bases de datos y almacenamiento al mismo tiempo con, group by, having, count, sum
etc., en la interfaz web de mi aplicación. Otros requisitos son el rendimiento y el peso ligero.
Encuentro esta manera de hacerlo (y qué inconvenientes veo, por favor, arréglenme si me equivoco):
Apache Spark ( inconvenientes : solución pesada, mejor para BigData, lenta si necesita obtener información actualizada sin almacenarla en caché en Spark),
Consultas distribuidas en el servidor SQL ( enlace de base de datos de Oracle , servidor vinculado de Microsoft SQL Server , Power Query of Excel ) - inconvenientes : problema con el cambio de las fuentes de datos dinámicamente por el programa Java y problema con el trabajo con Excel,
Prestodb ( inconvenientes : solución pesada, mejor para BigData),
Apache Drill ( inconvenientes : solución bastante joven, algún problema con los últimos controladores odbc y algunos errores al trabajar),
Apache Calcite (marco de luz que será utilizado por Apache Drill, inconvenientes : solución bastante joven todavía),
Únase desde las fuentes de datos manualmente ( inconvenientes : mucho trabajo para desarrollar la unión correcta, "agrupar por" en el conjunto de resultados, encontrar el mejor plan de ejecución, etc.)
Puede ser, ¿conoce alguna otra forma (usando soluciones gratuitas de código abierto ) o me da algún consejo de su experiencia sobre las formas mencionadas anteriormente? Cualquier ayuda sería muy apreciada.
Una de las soluciones apropiadas es la plataforma DataNucleus que tiene API JDO, JPA y REST. Tiene soporte para casi todos los RDBMS (PostgreSQL, MySQL, SQLServer, Oracle, DB2, etc.) y el almacén de datos NoSQL como los servicios web basados en mapas, gráficos, documentos, etc., bases de datos web, LDAP, documentos como XLS, ODF, XML, etc.
Alternativamente, puede usar EclipseLink , que también es compatible con RDBMS, NoSQL, servicios web de bases de datos y XML.
Al utilizar JDOQL, que forma parte de la API de JDO, se cumplirá el requisito de tener una consulta para acceder a múltiples almacenes de datos. Ambas soluciones son de código abierto, relativamente livianas y de alto rendimiento.
¿Por qué sugerí esta solución?
Para leer más sobre la persistencia políglota
Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.
En caso de infracción, por favor [email protected] Eliminar
Déjame decir algunas palabras