在我目前的项目中,我正在尝试统一查询语言来访问异构数据库。异构数据库意味着它们用于访问数据的查询语言是不同的。例如,SQL是一种用于访问Apache Derby数据的查询语言,而非MySQL用于MongoDB。
我的问题是“是否有任何特定于域的语言,已被提议用于统一异构数据库?”
请随时指导我其他工作。
答案 0 :(得分:1)
这是一个非常有趣的问题。至少有一个名为UnQL(非结构化数据查询语言)的解决方案 - http://www.couchbase.com/press-releases/unql-query-language 我认为开箱即用的UnQL至少可以用于CouchDB和SQLite。这似乎是向前迈出的一大步。
我个人认为,由于结构化和非结构化数据方法之间的概念差异,这样的任务似乎很棘手。无论如何,为某个应用程序使用的定义良好的SQL和NoSQL数据模型开发这样的DSL应该相对容易。
答案 1 :(得分:1)
有一个名为Hibernate OGM的项目,旨在将JPQL概括为NoSQL数据库。
从他们的网页:
Hibernate Object / Grid Mapper(OGM)旨在为NoSQL解决方案提供Java持久性(JPA)支持。它重用了Hibernate Core的引擎,但将实体持久存储在NoSQL数据存储中而不是关系数据库中。它重用Java持久性查询语言(JP-QL)来搜索它们的数据。
我没有为自己尝试过,所以我不能说它有多么有用。
答案 2 :(得分:1)
JSONiq可以处理来自不同SQL和NoSQL产品的数据。 The open source implementation of JSONiq具有Couchbase,Oracle NoSQL,SQLite和JDBC的连接器。 例如,以下幻灯片展示了在Couchbase和MongoDB上执行的相同查询:https://speakerdeck.com/wcandillon/jsoniq-the-sql-of-nosql
答案 3 :(得分:0)
SPARQL是一种W3C标准化查询语言,它在抽象数据模型(RDF)之上工作,而不是特定类型的数据库,这使得它非常适合作为异构的推动者数据库查询。
Implementations of SPARQL exist在各种NoSQL数据库之上,包括本机RDF数据库(通常称为triplestores),以及关系数据库之上。