3

问题

我有一个自定义数据源(内部系统),我想将其作为标准数据源访问。我正在寻找一种解决方案来提供标准的类似 SQL 的访问器,以便可以从不同的报告引擎、Excel、MS 访问,也许是标准的 Web 前端和现成的数据管理工具中使用数据源。换句话说,我希望对 ODBC、JDBC 等提供现成的支持,而不必自己实现对所有这些驱动程序的支持。

到目前为止我一直在做什么

我已经成功地使用 SQLite 虚拟表机制来提供对使用标准 SQLite 驱动程序的数据源的访问。SQLite 将负责 SQL 查询解析、表元数据转换(由我的扩展程序提供)并管理我的数据源不支持的 SQL 部分(聚合、复杂的连接和更新等)。

但是,我没有使用 SQLite 获得的是网络支持。SQLite 是一个嵌入式数据库引擎,可以很好地与我的数据源配合使用,但是虽然它支持 ODBC 和 JDBC,但它没有有线协议。在客户端进程中嵌入我的自定义数据源不是一种选择,因为数据源具有非常严格的运行时限制(以及其他限制)。

我在考虑什么

1. 网络化 SQLite

显而易见的解决方案是查看是否可以将 SQLite 数据源联网。但是,网络选项似乎没有得到很好的支持,尤其是客户端驱动程序不支持(即根本不支持)。

2. MySQL存储引擎

我一直在考虑用 MySQL存储引擎替换 SQLite 虚拟表驱动程序(阅读 API 规范的 30 分钟让我直觉感觉 API 非常相似)。我有三个担心:

  • 过程控制。我的数据源是一个想要管理自己的进程的系统。我更愿意成为负责提供服务的人。
  • 从 IT 管理员的角度来看,运行整个 MySQL 服务器看起来有点矫枉过正。一个嵌入式网络服务器就足够了。我已经有了网络服务器(它已经是一个网络服务进程)。
  • 许可。MySQL 看起来像 GPL 或昂贵的。我没有发现任何关于此设置将迫使我进入的许可证要求的任何结论。

3. 模仿已知的网络协议

我一直在研究模仿“已知”协议,例如 MySQL 有线协议或 MSSQL(freeTDS是一个很好的来源)。然而,现成的解决方案的数量看起来很少,如果我走这条路,我可能不得不自己动手,这可能是很多工作。

我正在寻找有关如何执行此操作的其他选项。现在,我正在调查是否可以选择 #2 并在我的数据源和存储引擎之间使用接口(例如0mq或某些网络协议)。我相信这是可行的,但我对更简单的解决方案非常感兴趣。有没有人做过类似的事情(成功)?

4

0 回答 0