使用标准协议创建自定义SQL数据源

时间:2012-10-03 20:09:08

标签: database networking odbc

问题

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

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

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

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

我在考虑什么

1。联网的SQLite

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

2。 MySQL存储引擎

我一直在寻找用MySQL storage engine替换SQLite虚拟表驱动程序(30分钟阅读API规范让我觉得API非常相似)。我有三个问题:

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

3。模仿已知的网络协议

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

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

0 个答案:

没有答案