我参加了一个研究生课程,这只是一个大项目 - 编写DBMS.
目标不是重新发明轮子并使企业DBMS与Oracle竞争.只需要支持一小部分SQL命令.目标也不是为了存储多媒体或其他东西而创建一些花哨的混合模型DBMS.它必须是传统的RDBMS.
该项目的主要目标是使用编程技术利用现代架构(多核处理器)来构建高性能数据库(速度,负载).
我只是想知道是否有任何关于查询评估,优化器,DBMS数据结构的数据结构或基本上可以帮助我创建一个杰出项目的资源.例如,教授就像元编程这样的术语.
该项目必须完全用C++完成.
感谢您的回复!我无法优化现有的DBMS,例如MySQL,因为项目要求您从头开始构建自己的DBMS.是的,我知道这在很大程度上重新发明了轮子,但是有一些新颖的查询评估和优化算法的空间.如果您知道任何有关此特定领域的资源或书籍,请告诉我!
由于您的教授提到了元编程,您可能需要查看以下内容:
WAM - 沃伦抽象机。这会将序言代码编译成一组可以在抽象机上执行的指令。思想与jvm和cli类似。您不需要详细讨论这一点,只需了解抽象机的思想即可。
JVM、CLI - 与上面相同。
lex、yacc、flex、bison 等工具。由于您本质上将为 SQL 命令编写一个解释器/编译器,因此您可能需要使用一些工具。这可以被视为元编程的一种形式,因为您正在使用一种语言来编写工具 - 所以您是在元级别进行编程。
再说一遍,元编程的想法 - 也许您可以使用允许您的 SQL 编译器/解释器自动优化并行查询的构造来增强您的语言。这些可以作为编译器的提示等来实现。
重新编译器 - 您可能想要编写一个解释器/编译器,将初始查询重新编译为可以针对您的目标体系结构并行运行的查询。例如,对于 N 核架构,它可能会将查询重新编译为并行执行的 N 子查询,然后组合结果。
我不确定您是否应该对标准优化实践进行大量研究。这些可能很复杂,并且本身就是一生研究的主题。由于练习的目标是利用并行处理和元编程,因此这应该是您研究的重点。