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;
这个sql和数据源必须由java程序动态变化.我的客户希望在同一时间从不同的数据库和存储中编写和运行类似sql的查询,在我的应用程序的Web界面中使用group by,have,count,sum等.其他要求是性能和重量轻.
我找到这样做(我有什么缺点看,如果我错了,请解决我)
> Apache Spark(缺点:重解决方案,对BigData更好,
如果您需要获取最新的信息而不缓存它,则速度会很慢
在火花),
> sql Server中的分布式查询(Database link of Oracle,Linked
server of Microsoft SQL Server,Power Query of Excel) – 缺点:
由Java程序动态更改数据源的问题
使用Excel的问题,
> Prestodb(缺点:重解决方案,BigData更好),
> Apache Drill(缺点:相当年轻的解决方案,有些问题没有
最新的odbc驱动程序和工作时的一些错误),
> Apache Calcite(Apache Drill使用的ligth框架,
缺点:相当年轻的解决方案),
>从数据源手动加入(缺点:很多工作
发展正确的联合,“组合”在结果集中,找到最佳执行计划等)
可能,你是否知道任何其他方式(使用免费的开源解决方案)或给我任何关于上述方式的经验的建议?任何帮助将不胜感激.
解决方法
或者,您也可以使用EclipseLink,它也支持RDBMS,Nosql,数据库Web服务和XML.
By using JDOQL which is part of JDO API,the requirement of having one query to access multiple datastore will be met. Both the solutions are open-source,relatively lightweight and performant.
为什么我建议这个解决方案?
>根据您的要求,它了解到数据存储将是您的客户选择,而您不是在寻找一个大数据解决方案.
>您喜欢开源解决方案,重量轻,性能优良.
>考虑到您的用例,您可能需要具有多沟槽持久性行为的数据管理平台,可以根据您/客户的用例利用多个数据存储.
To read more about polyglot persistence
07002
07003