问题描述
我需要实现以下内容,并希望就如何最好地解决问题获得一些想法:
我有几个sql数据库,并希望提供使用某种方式的联合数据库的选项,即虚拟sql层应该接收(只读)查询。这些查询应针对单个数据库中的每个数据库执行,并合并为总结果,然后发送回查询的发件人。
因此,虚拟sql层任务将是接收初始查询,调用单个数据库并合并结果。此外,出于隐私原因,虚拟sql层需要实现删除特定结果的规则。因此,我需要能够在虚拟层中编写自己的代码。
从技术角度讲,我很开放,但是Java是首选。 到目前为止,我正在考虑以H2项目为基础,并在那里进行修改。
解决方法
要使用H2构造做到这一点,您将要实现TableEngine
。 features documentation says a little bit more about this。无需破解实际的H2源代码。
对于已经执行此操作的项目,请参见Apache Calcite:它将SQL解析器和查询优化器停放在various notions of what are basically key-value stores之上。