数据库表 - 数据结构设计c ++

时间:2010-10-28 17:44:27

标签: c++ database-design data-structures

这可能是一个愚蠢的问题或多次询问,我搜索它但没有找到正确的答案。

当我们在SQL引擎上输入

"Create table xxxx" 
如何在c ++中实现这个时,究竟是怎么回事,我的意思是它如何创建变量dynamicalyy“xxxx”并将数据存储在其中。如果我查询
"select * from xxxx" 
如何变量“xxxx”并获取值。我已经看过SQLite和Postgres,我无法理解那些复杂的事情。任何人都可以用更简单的方式解释它。如果可能的话用一个小例子。(注意:它是什么样的sql引擎)。

3 个答案:

答案 0 :(得分:3)

数据库使用各种基于磁盘的数据结构(如B树,线性哈希表和堆文件)将数据存储在磁盘上。这是一个非常复杂的主题,需要大量的研究,但主要取决于您要存储的数据类型(无论是固定长度还是可变长度),许多数据库使用的常见策略是存储可变长度数据存储在 heap file 中的网页。

堆文件基本上是一系列固定长度的,每个页面包含不同记录的插槽。页面存储在磁盘上,但使用分页子系统加载到内存中,类似于文件系统的工作方式。为了便于快速查找存储在页面上的记录,使用索引结构(通常是B树或B +树,但也可能是哈希表)来查找正在查找的记录的正确页面和记录号存储在堆文件中。

SQL查询引擎位于底层数据结构之上。查询引擎解析查询,然后使用索引查找相应的记录。 (这里涉及许多其他方面,但这是它的要点。)

毋庸置疑,用C ++(或任何语言)实现关系数据库需要大量的工作。如果您真的有兴趣,我建议您阅读Database Management Systems

答案 1 :(得分:1)

对于SQL Server,概述从here开始。

  

SQL Server数据库中的对象是   存储为8 KB页面的集合。   本节介绍了该方法   表和索引的页面是   有组织,存储和访问。

答案 2 :(得分:0)

你是否必须在c ++中实现关系数据库,如果你只是想要一些方便的数据结构来存储多个索引中的数据,请看boost.MultiIndex