【Java】关于物理存储方式有几种方式的一些讨论

我们知道,数据结构可以分为逻辑结构和物理结构[1, 2]。网络上的文章,关于物理结构到底分为几种,有哪些,各种讨论不一而足。我阐述一下我自己的理解和看法。

物理结构是最基础的,计算机分配存储的方式。而逻辑结构,是人们抽象出来,实现了不同功能的结构,逻辑结构,往往可以将其拆分成基础的物理结构。比如一颗二叉树(逻辑结构),我们可以使用数组,也可以使用经典的链表实现[3, 4]。

我个人理解,物理结构只有两种,顺序存储,如数组。或者链式存储,如单向链表,双向链表等。

例如这篇文章[5]中,说计算机中有四种存储,顺序存储,链式存储,散列,索引。

我以为是不恰当的,因为例如散列,比如经典的HashMap,就是所谓的散列表,它的实现,是基于链表+数组实现的。对于计算机来说,也是需要通过计算key才能得到value在内存中的位置;

至于索引,以mysql为例,索引的实现按引擎区分有多重方式[6],比如MyISAM的非聚簇索引,通过散列实现。InnoDB的聚簇索引,通过B-Tree实现,本质上都是以链式存储为根基,通过逻辑组织出需要的功能。我认为这实在称不上是基础的物理结构。

通过上述问题,我们也能看出,逻辑结构,往往都是需要通过计算或者代码处理才能组织出逻辑结构。而物理结构,不需要计算机去计算下一个存储点的位置,可以简单的获取到存储的位置。个人以为,这也是区分逻辑结构和物理结构的一种很好的方式。

以上就是我关于物理存储方式的一些讨论,如有说的不对的地方,希望大家批评指正

参考文章
[1],数据结构中逻辑结构和物理结构的区别和联系是什么
[2],数据库逻辑结构和物理结构的区别?
[3],用数组表示二叉树
[4],使用二叉链表实现二叉树的基本操作
[5],数据结构中的逻辑结构以及物理结构
[6],MySQL索引详解之索引的存储方式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值