我们通常通过SQL与RDBMS进行接口。即我们创建一个sql字符串并通过JDBC或ODBC或类似的方式将它发送到服务器。哪些关系数据库存在高级语言的公共API?
是否有任何RDBMS允许通过Java,C#,C或类似的API直接连接数据库引擎?我希望一个API,允许这样的结构(在一些任意的伪代码):
Iterator iter = engine.getIndex("myIndex").getReferencesForValue("23");
for (Reference ref: iter){
Row row = engine.getTable("mytable").getRow(ref);
}
我想这样的事情是在什么地方隐藏的(并且可从)开源数据库,但我期待的东西,作为一个公共API被正式支持,所以当它发生变化时,至少会在发行说明中找到一个注释。
为了使这一点,实际上有一个“最佳”答案的问题:我喜欢语言在上面给定的顺序,我会更喜欢原型和研究工作成熟的API,虽然这些亦欢迎。
------------------更新----------------
貌似我一直没足够清楚。
我在看的是一个较低级别的API,类似于RDBMS可能在内部使用的。 RDBMS具有执行计划的概念,并且我正在寻找的API将允许我们实际执行执行计划,而无需指定预期结果,使用SQL或类似方法。
背后这个非常模糊的想法是实现一个DSL,它可以直接转换为RDBMS系统调用,无需通过SQL或类似的。
试图用另一种方式来解释它: Oracle得到了一条SQL语句,它解析了该语句,创建了一个执行计划,并最终使用一些内部API执行执行计划,这可能允许如下操作:从表中检索特定行,检索范围或rowid从索引,使用散列连接加入到行集合等等。我正在寻找该API(或类似的RDBMS在这可用)
----------尼尔评论后的另一个更新------------ ----
我认为这将是适当考虑我找了“ISAM”水平,在这篇文章的第二个小点的API:http://en.wikipedia.org/wiki/ISAM
JDBC和ODBC都是公共API,供高级语言使用。我真的不清楚你在问什么。 – 2010-03-21 10:17:41
@Neil Butterworth:我认为他要求一个像linq这样的接口/ API,它将SQL抽象为托管语言的“感觉”。 – lexu 2010-03-21 10:21:05
你用过LINQ2Sql吗?它可能会给你一些你寻求的高级OO类型数据库的好处。 – slugster 2010-03-21 10:31:50