gpt4 book ai didi

sql - 是否有任何开源查询语言不可知关系存储引擎?

转载 作者:太空狗 更新时间:2023-10-30 01:54:44 28 4
gpt4 key购买 nike

我一直在研究 Christopher Date 的书 Database in Depth: Relational Theory for Practitioners 中的关系代数。 .在整本书中,他使用他和 Hugh Darwen 想出的语言来传达理论 — Tutorial D .总的来说,我认为 Tutorial D 是一种非常实用的查询语言,比 SQL 灵活得多,所以我(只是为了好玩)热衷于尝试编写一个(性能不佳,毫无疑问)基于 Tutorial D 的小型 RDBMS,而不是SQL。

意识到这是一项艰巨的任务,即使只是做一些基本的事情,我想知道是否有可用的现有存储系统不代表 SQL 意义上的表,而是代表关系意义上的关系并且不假设任何特定的查询语言都用于访问数据,而只是提供低级功能,如 productjoinintersect unionproject 等(在 C 级别,而不是查询语言级别)。

我说的有道理吗? :) 基本上,我想采取类似的做法,并在其前面粘贴一个教程 D(或类似的)查询界面。

在内存中做所有事情真的很容易,但是以一种甚至稍微有效的方式在磁盘上表示数据结构是非常棘手的,如果没有认真研究,我可能无法理解。

最佳答案

使用 SQL 作为用户和数据库引擎之间结构化输入的接口(interface)的一般基于 SQL 的 RDBMS 使用所谓的 Query Optimizer它采用查询表达式并生成一组 Execution Plans .

然后在数据库上执行最优的执行计划;这就是生成结果集的原因。

因此,如果您采用开源 RDBMS 实现并希望修改它以接受不同的查询语言,所有您需要做的就是将您选择的查询语言翻译成执行计划。

这并不是说您尝试做的事情很容易。只是它应该是可能的,而不必编写自己的 RDBMS。您需要为查询语言编写词法分析器和解释器,然后弄清楚如何将解释后的查询表达式传输到数据库引擎的优化器,以便它可以生成执行计划,并执行最有效的计划。

看看SQLite作为一个紧凑的开源关系数据库引擎。

关于sql - 是否有任何开源查询语言不可知关系存储引擎?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7982864/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com