实际上,数据在底层存储的时候无非就是两种方式,要么连续存储,要么不连续存储,也就是我们说的顺序存储和链式存储,
数据有数据的逻辑结构,也有数据的物理结构
数据的逻辑结构就是我们肉眼看到的结构,数据和数据之间可以是1:1,1:n,n:n的(线性,树形,图)
数据的物理结构是我们看不见的数据在磁盘上的存储方式,即链式存储,顺序存储
每一种逻辑的数据结构在底层都能有两种存储方式存储,即链式存储,顺序存储
一般我们在选择数据结构时,都是根据数据和数据之间的关系来选择数据的逻辑结构,为数据选择好数据的逻辑结构后,我们在考虑在数据上的操作,如果说查找多一些,那我们在底层就给他选择顺序存储结构,如果说插入删除多一些,我们就给他选择链式存储结构,
--------------------------------
好,我们最后呢,研究一下在实际使用的数据结构,记住凡是使用数据的地方都需要数据的逻辑结构和物理结构进行数据的存储。
比如说数据库存储数据这个事,你觉得他存储数据的时候使用到了什么数据结构呢?
数据库里面需要存储的数据很多,你比如说索引吧,存储索引的话呢用的就是树形结构,
比如说操作系统存储文件这个事,他存文件时使用的是什么存储结构呢?
他是通过文件系统来管理文件存储的
我们可以观察文件和文件之间的关系,你会发现是一对多的关系,因此我们为文件选择数据的逻辑结构为树形结构,在观察一下对文件的操作有增删改查,所以文件的话我们为其选择链式存储和顺序存储,树形结构有利于数据的存储和查找,B+树 常用于文件系统中:
---------------------------
最后要说一个关于面试的东西,百度曾经面试的时候考过:关系数据库都采用了哪些数据结构?
(变相在说,其他类型的数据库采用了其他的数据结构存储数据,层次数据库主要采用树形结构存储数据,)
关系数据库采用的数据结构是:二维表(数据的逻辑结构-二维表),(补充:索引采用的b+树的逻辑数据结构)
关系数据库采用的数据结构是:二维表
在关系型数据库系统中,所有的数据结构采用二维表的结构表示。
通常我们将这些二维表成为关系。在关系型数据库中,每一个关系都是一个二维表,无论实体本身还是实体间的关系均用“关系”的二维表来表示。
(1)层次数据库采用树形数据结构结构组织数据
(2)关系数据库采用二维表数据结构结构组织数据
(3)网状数据库采用图的数据结构组织数据