Data structures 关系数据库系统中使用的数据结构

Data structures 关系数据库系统中使用的数据结构,data-structures,rdbms,Data Structures,Rdbms,RDBMS中使用什么数据结构来存储我们输入的实际数据,firstname lastname等等,我知道B和B+树在索引等方面很有效,但我还没有得到令人信服的答案,请原谅我的无知。这通常取决于存储引擎,原始数据将存储在不同分类的数据库数据中,其中至少有三个常见部分: 索引(指向包含该值的行的键) 行数据(非blob数据) Blob数据(通常是批量数据;将其视为扩展数据,通常不搜索,而是通过其他键查找行后批量检索) 我在这里提供的大部分信息都是基于MySQL的知识 索引 例如MySQL,包括:

RDBMS中使用什么数据结构来存储我们输入的实际数据,firstname lastname等等,我知道B和B+树在索引等方面很有效,但我还没有得到令人信服的答案,请原谅我的无知。

这通常取决于存储引擎,原始数据将存储在不同分类的数据库数据中,其中至少有三个常见部分:

  • 索引(指向包含该值的行的键)
  • 行数据(非blob数据)
  • Blob数据(通常是批量数据;将其视为扩展数据,通常不搜索,而是通过其他键查找行后批量检索)
我在这里提供的大部分信息都是基于MySQL的知识

索引 例如MySQL,包括:

据我所知,InnoDB和MyISAM,而内存存储引擎允许您指定b树或散列索引

这些文档甚至包含一个页面

其他RDBMS将使用它们自己的规范,但我认为B-树是常见的

通常,一个索引就像它自己的一个小表;索引值是主键,该值是包含该值的行的主键列表

行数据 这个答案同样复杂,取决于存储引擎。如果您对实现细节感兴趣,我会阅读存储引擎

行以数据格式存储,可以通过某些主键快速查找。行通常有一个相对较小(比如216字节)的固定限制,在此限制之后,进一步的数据将被推送到扩展数据页,这一事实有助于提高速度

主键总是索引的,其他值也可以选择索引。如果不是,那么存储引擎找到它们的唯一方法将是“表扫描”——字面意思是,通过所有数据循环,将列值与要查找的值进行比较

水滴数据
将blob数据想象成一个大文件系统,它没有特殊的索引属性,只能通过主键查找其行。它们还失去了每行分配的固定空间的好处,这是一种能够存储大量任意数据的折衷办法。

不清楚您在这里要问什么。你是在问为什么要使用B-树(等等)吗?我很抱歉说得模棱两可,让我举个例子问一下,如果我在数据库中有ID、Name、Address等列,那么实现了什么样的数据结构?B树?如果是,怎么做?在programminsg中,如果我有一个像int c[2]={0,1,2}这样的语句,我只需将它们线性地存储在3个连续的块中。谢谢:)这回答了我所有的问题,甚至是在我理解了最初问题的答案后得到的问题。主键并不总是被索引。可以有一个不带索引的主键和另一个带聚集索引的列。您只能有一个表聚集索引,因为这是磁盘上包含表数据的一个存储。您有多个非集群数据,因为它们不是与表数据一起构建和存储的,通常仅位于内存中,具体取决于数据库引擎