精华内容
下载资源
问答
  • 参考文章:行式存储和列式存储优缺点和paruqet文件结构 ...图1-1所示为行式存储和列式存储的示意图,一张table包含5个字段(列)即rowid、date/time、customer name以及quantity,共7行,图中的红色箭头表示存储顺序

    参考文章:行式存储和列式存储优缺点和paruqet文件结构

    优缺点分析

    列存储优点:

    • 单列数据保存在一起,不同列分开存储,导致存下同样一个表需要更多的Block文件,看起来是更复杂了,但是基于列和列分开存储,这种形式天生就适合分布式的存储,并能完全利用并发写入和并发读取的能力
    • 同一列存放在一起,数据类型相同,则更好的进行压缩
    • 同一列存放在一起,则排序更加方便,基于排序方便,where某一列会更加快

    行存储优点:

    • 更容易实现事务性、一致性控制。

    应用场景:

    • 关系型数据库基本都是行存储,Mysql、Oracle等,因其更强调一致性和事务性
    • NoSQL多数为列存储,因为高效、吞吐量高,但事务、一致性较弱(也有做到事务性比较强的,但实现更加复杂,需要更多东西来配合)

    总结:

    • 行: 一致性、事务更加容易实现
    • 列:吞吐量高、性能强,一致性、事务性较弱

    一、列式存储和行式存储的比较

    列式存储和行式存储是针对数据在存储介质中的排序形式而言的,假设存在一张table,那么:

    • 行式存储:依次连续存储第1、2、3...行的数据到存储介质中;
    • 列式存储:依次连续存储第1、2、3...列的数据到存储介质中。

    图1-1所示为行式存储和列式存储的示意图,一张table包含5个字段(列)即rowid、date/time、customer name以及quantity,共7行,图中的红色箭头表示存储顺序。

    标图1-1. 行式存储和列式存储区别题

     

    二、行式存储和列式存储的优缺点和适用场景

    存储形式的差异决定了适用场景的不同:

    • 行式存储适合”针对行”的查询
      比如(mysql)select * from table_name limit 1,因为只会读取图1-1中的“row-based store 第1个绿色部分的数据”(只有指定的行“1 845 2 3 1”才会被读取),而select rowid from table_name则需要读取row-based store所有绿色部分的数据(虽然目的仅是要查询1个字段);此外还适用于insert/update操作比较多的场景,因为只需要更改部分数据块即可。
    • 列式存储适合“针对列”的查询
      比如select rowid from table_name,因为只会读取图1-1中的“column-based store 第1个绿色部分的数据”(查询时只有涉及到的字段会被读取),而select * from table_name limit 1则需要读取column-based stores所有绿色部分的数据(虽然目的就是要查询第1行的数据);但是不适用于insert/update操作比较多的场景,比如当插入1个row时,由于列式存储导致同一个row的数据被分散在多个数据块中,因此需要去遍历所有数据块的数据此外由于同一个字段连续存储(同一列的内容有很多值是重复的,可以压缩),因此更加便于编码压缩。
    存储类别 适用于 不适用于
    row-based 针对行的查询,
    insert/update操作
    针对列的查询
    column-based 针对列的查询,
    编码压缩减小存储空间占用
    针对行的查询,
    insert/update操作

    综合来看,列式存储比较适合大数据量(压缩比高)、分析型操作(针对少数几列);不适合频率较高的删除(全列检索)、更新(重新压缩)操作。

    列式存储基于字典表的编码压缩

    图2-1所示为列式存储中将某张table基于字典表进行编码压缩的示例,图中左边为源表,假设该table中的customers和material字段的取值均只有右上表所示的5种,那么当源表的行数很大时,customers和material字段就会存在大量重复的取值,为了节省存储空间对这两个字段进行编码,即使用一个字典表(右上图)记录该两个字段的distinct取值,又下表则用右上表字段取值对应的index(整数1、2、3、4、5)来代替原来的string,由于string占用的存储空间比这几个index占用的存储空间大多了,因此可以较大程度上压缩占用的存储空间。

    图2-1. 列式存储基于字典表压缩数据标题

    三、parquet文件结构

    基于列式存储的两个典型实现是:hbase和parquet,其中:

    • hbase可以看成是一个基于列式存储的非关系型数据库NoSQL;
    • parquet是基于列式存储定义的一种文件格式。

    parquet的文件结构如图3-1所示:

     

    图3-1. parquet文件结构一览图标题

     

    从图中可以看出,1个parquet文件由header(1个)、block(可以多个)、footer(1个)组成,分别负责:

    • header:只包含一个4个byte的数字PAR1,用来识别整个Parquet文件格式。文件中所有的metadata都存在于footer中;
    • block:存储数据;
    • footer:包含block中的metadata比如版本信息、schema信息等,footer中最后2个字段分别是1个4个byte长度的footer的metadata、同header中一样的PAR1。

    图3-2所示为parquet文件中,block、rowgroup、columnchunk以及page的关系:

    标图3-2. parquet中rowgroup、block、columnchunk以及page的关系题

     

    简而言之:

    • 1个block就是指1个rowgroup;
    • 1个columnchunk对应1个字段;
      1个columnchunk中可能存在多个page(page默认大小为1M)。

    因此如果将一个parquet文件类比成一张大excel 表,那么:

    • header就相当于excel表的后缀名;
    • block就相当于excel表中的某些数据行(如果行数太多导致需要的byte数超过了block size那就需要多个block);
    • footer就相当于excel表的页脚记录了字段数、行数、各block占用的存储空间等元数据)。
    展开全文
  • 文章目录存储方式对比优缺点对比简单对比行式存储行式存储的优点行式存储的缺点列式存储列式存储的优点列式存储的缺点适用场景对比参考 存储方式对比 行式存储就是每一行的所有数据存在一个block中,各个block之间...

    存储方式对比

    image.png
    行式存储就是每一行的所有数据存在一个block中,各个block之间连续存储;列式存储就是每一列的所有数据存在一起,不同列之间可以分开存储。

    MySQL中的infobright存储引擎是列式存储,InnoDB和MyISAM存储引擎是行式存储。

    列式存储是非关系型数据库中的一种,非关系型数据库的目的在于去掉关系数据库的关系型特性,使得数据之间无关系,使得扩展性高。非关系型数据库一般具有大数据量、高性能的特点,典型的有Key-Value键值存储数据库等。

    HBase严格来说不算是列式存储,有人称其为面向列式的存储,其具体存储方式见这篇文章:五分钟轻松了解Hbase面向列的存储–李新杰的博客园

    优缺点对比

    简单对比

    / 行式存储 列式存储
    优点 > 数据被保存在一起,
    > INSERT/UPDATE容易
    > 查询时只有涉及到的列会被读取,
    > 投影(projection)很高效,
    > 任何列都能作为索引
    优点 > 选择(Selection)时即使只涉及某几列,所有数据也都会被读取 > 选择完成时,被选择的列要重新组装,
    > INSERT/UPDATE比较麻烦

    行式存储

    行式存储的优点
    • 因为每一行的所有字段都存在一起,因此对数据进行插入(INSERT)和修改(UPDATE)操作很方便。
    • 整表查询比较方便,可以很快将整张表组装出来。
    行式存储的缺点
    • 查询(SELECT)时如果涉及到某条数据,需要把该行数据所有内容都读取到内存中,即使只SELECT一两个字段也要把整行数据都读进来。
    • 由于上面的原因,读取数据的时候硬盘寻址范围很大。
    • 要加速查询的话需要建立索引,建立索引需要花费很多时间。
    • 空值也要占固定的空间。

    列式存储

    列式存储的优点
    • 每一列单独存储,因此仅SELECT个别列的时候,可以仅读取需要的那几个列,相当于为每一列都建立了索引。
    • 由于上面的原因,对每一列进行统计分析(投影操作)就很方便,比如统计某一列中某个数据出现的频次,某一列的均值,排序等。因此列式存储通常为决策分析的场景服务,且通常都是大数据。
    • 由于仅对需要的列进行查找,因此硬盘寻道范围小。
    • 数据压缩。列式存储的时候可以为每一列创建一个字典,存储的时候就仅存储数字编码即可,降低了存储空间需求,如下面的图片所示。比如某网站存储所有访问该网站的用户的名字、IP、性别、国家等,存储的时候每一列可以生成一个字典,比如国家,数据库中每个不同的国家在字典中就有一个编码,存储的时候就存储那个编码就行,不需要每个数据都存储完整的字符串。
    列式存储的缺点
    • SELECT完成时,被选中的数据需要重新组装。
    • 插入(INSERT)和修改(UPDATE)操作比较麻烦。

    下图是列式存储压缩数据和读取数据的原理。
    image.png
    image.png
    读取数据的过程,先到字典中查询某个值对应的编码(数字),然后到该列中进行匹配,把多列的查询结果进行与运算就得到了数据表中哪些行的数据是匹配的,然后把这些数据组装起来就得到了查询结果。

    适用场景对比

    行式存储用于存储关系型数据,用于使用数据的时候需要经常用到数据之间的依赖关系的场景,即读取的时候需要整行数据或者整行中大部分列的数据,需要经常用到插入、修改操作,比如存储用户的注册信息等。

    列式存储适合分布式数据库和数据仓库,适合于对大量数据进行统计分析,列与列之间关联性不强,仅进行插入和读取操作的场景,如网站流量统计、用户行为分析等。

    参考

    列式存储和行式存储的区别–CSDN博客
    五分钟轻松了解Hbase面向列的存储–李新杰的博客园

    展开全文
  • 行式存储和列式存储的比较

    千次阅读 2018-03-04 21:15:37
    行式存储的优点: 同一行数据存放在同一个block块里面,select * from table_name;数据能直接获取出来;  INSERT/UPDATE比较方便 行式存储的缺点: ...不同类型数据存放在同一个block块里面,压缩...列式存储的优

    行式存储的优点:

    同一行数据存放在同一个block块里面,select * from table_name;数据能直接获取出来;

     INSERT/UPDATE比较方便

    行式存储的缺点:

    不同类型数据存放在同一个block块里面,压缩性能不好;

    select id,name from table_name;这种类型的列查询,所有数据都要读取,而不能跳过。


    列式存储的优点:

    同类型数据存放在同一个block块里面,压缩性能好;

    任何列都能作为索引。

    列式存储的缺点:

    select * from table_name;这类全表查询,需要数据重组;

    INSERT/UPDATE比较麻烦。


    create table page_views_orc_zlib
    ROW FORMAT DELIMITED FIELDS TERMINATED BY "\t"
    STORED AS ORC 
    TBLPROPERTIES("orc.compress"="ZLIB")
    as select * from page_views;
    #默认是zlib,写不写都一样

    create table page_views_orc_snappy
    ROW FORMAT DELIMITED FIELDS TERMINATED BY "\t"
    STORED AS ORC 
    TBLPROPERTIES("orc.compress"="SNAPPY")
    as select * from page_views;



    create table page_views_parquet
    ROW FORMAT DELIMITED FIELDS TERMINATED BY "\t"
    STORED AS PARQUET 
    as select * from page_views;


    set parquet.compression=gzip;
    create table page_views_parquet_gzip
    ROW FORMAT DELIMITED FIELDS TERMINATED BY "\t"
    STORED AS PARQUET 
    as select * from page_views;


    【来自@若泽大数据】

    展开全文
  • 列式存储 ORC VS Parquet关于列式数据库的一些说明列式存储格式的适用场景行列存储的优缺点ORC VS Parquet二者的文件结构图选择哪一种列式存储较好欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于...

    关于列式数据库的一些说明

    列式存储格式的适用场景

    列式存储,顾名思义就是按照列进行存储数据,把某一列的数据连续的存储,每一行中的不同列的值离散分布。列式存储技术并不新鲜,在关系数据库中都已经在使用,尤其是在针对OLAP场景下的数据存储,由于OLAP场景下的数据大部分情况下都是批量导入,基本上不需要支持单条记录的增删改操作,而查询的时候大多数都是只使用部分列进行过滤、聚合,对少数列进行计算(基本不需要select * from xx之类的查询)。
    下图展示了行和列的区别:
    行列存储的定义
    列式存储:

    • 只需查询某些列
    • 需要大量数据做聚合操作
    • 对存储空间较敏感

    行式存储:

    • 只需查询某些行
    • 对数据经常有增删改的要求,俗称的OLTP

    行列存储的优缺点

    列式存储主要优点表现在三块:压缩(列类型一样,更好的压缩比,省空间)、投影下推(只需读取某些列,不需要读取整行)、谓词下推(过滤条件)

    项目 行式存储 行式存储
    优点 数据被保存在一起
    INSERT/UPDATE容易
    查询时只有涉及到的列会被读取
    投影(projection)很高效
    任何列都能作为索引
    缺点 选择(Selection)时即使只涉及某几列,所有数据也都会被读取 选择完成时,被选择的列要重新组装
    INSERT/UPDATE比较麻烦

    ORC VS Parquet

    二者的文件结构图

    慢慢再添加二者的详细区别和源码

    Parquet

    parquet文件结构图
    Parquet的一个独特的特点是它也可以以列式结构存储嵌套结构的数据。这意味着在Parquet文件格式中,即使是嵌套的字段也可以单独读取,而不需要读取嵌套结构中的所有字段。Parquet格式底层使用record shredding和assembly algorithm(Google Dremel论文)来实现列式存储。其文件结构主要由三块信息构成:

    • Row group:多行数据的在逻辑水平方向上的分区。Row group是由数据集里每个列的列块(column chunk)构成;
    • Column chunk:某个特定列的数据块。这些列块位于特定的行组中,并且保证在文件中是连续的;
    • Page:列块(Column chunk)被划分为连续、紧凑的页面。这些页面共享一个共同的标题(header),在读取数据的时候可以跳过他们不感兴趣的页。

    Parquet整体架构在这里插入图片描述
    从这里可以看到,Header里面仅仅只包含一个魔术数,指明这是一个Parquet格式的文件。中间是一到多个Row group,包含了真正的文件数据信息,最后是Footer,包含了元数据信息。
    Footer中有以下几项:

    • 文件元数据:文件元数据包含所有列的元数据起始位置信息。当读取文件时,首先应该读取文件的元数据,从而找到感兴趣的所有列块,然后应该按顺序读取列块。另外,它还包括格式的版本版本、数据结构和一些额外的键-值对信息
    • 文件元数据的大小
    • 魔术数

    ORC

    orc文件结构图
    ORC文件包含称为Stripe的行数据组,File Footer的辅助信息,以及在文件的末尾,一个Postscript保存压缩参数和压缩页脚的大小。
    默认的stripe大小是250mb。stripe设置的越大,则允许从HDFS读取的数据规模也越大、越高效。

    • File Footer包含文件中的stripe列表、每个stripe的行数和每个列的数据类型。它还包含列级聚合计数、最小值、最大值和总和。
    • Stripe Footer包含一个目录的流位置。
    • Row Data是真正的数据所在位置,扫描表的过程就是在发生在这里。
    • Index Data包括每个列的最小值和最大值以及行在每个列中的位置。ORC stripe data仅用于stripes和row groups的选择,而不用于应答查询。
      关于ORC更详细的介绍,请到该博客

    选择哪一种列式存储较好

    我自己也查找了很多资料,根据目前收集到的信息,综合比较来说,建议选择orc,尤其是在使用Hive做数仓的时候。如果只是单纯的使用Spark,建议用Parquet。理由如下:

    1. ORC有更好的压缩比,占有的空间相对较少。下图是从cloudera社区找到的,可以看出压缩比还是挺可观的,最起码可以得到一个结论:无论是使用哪一种列式存储都是比使用textfile这种格式要好,尤其是在使用Hive的时候。
      在这里插入图片描述
    2. Hive和Spark的向量化读取都是支持orc的,但是Hive却不支持Parquet格式。Spark在2.3的版本之后,提供了对orc的向量化读取的支持(小声哔哔:jira上面有个issue显示hive支持对Parquet格式的vectorized reader,可是官网却说必须使用orc格式的才能使得Hive的Vectorized Query Execution生效,有点疑惑,希望有大佬回答下)。
    3. Hive的CBO优化器对orc支持的更好。hive的cbo优化器能够获取orc的列级别元数据信息,从而能够生成更好的执行计划。
    4. 嵌套格式很复杂的数据就选择Parquet,普通格式的数据多就选择orc。Parquet格式实现了Google Dremel,把数据像树一样存储,对嵌套格式的数据支持的好。
    5. ORC提供了ACID事务性支持。请记住,尽管orc提供事务性的功能,但是并不是为了满足OLTP的需求,主要是为了解决流式数据在Hive中的一致性问题。(注意:Spark 2系列的版本是不支持读取Hive的内部事务表,但是Hive 3的事务表又是默认的,因此需要改参数关闭事务性。目前的Spark 3系列,正在处理这个问题)
    6. Parquet查询性能略好于ORC
    7. 在长时间任务执行中,当Hive查询ORC表时,GC调用频率降低了10倍

    参考资料

    1. https://medium.com/@dhareshwarganesh/benchmarking-parquet-vs-orc-d52c39849aef
    2. https://blog.csdn.net/dc_726/article/details/41143175
    3. https://mp.weixin.qq.com/s/r0N8LOTmONAgoqFklznhgg
    4. https://developer.aliyun.com/article/226990
    5. https://community.cloudera.com/t5/Support-Questions/ORC-vs-Parquet-When-to-use-one-over-the-other/td-p/95942
    6. https://medium.com/@oswin.rh/parquet-avro-or-orc-47b4802b4bcb
    7. http://leelaprasadhadoop.blogspot.com/2017/05/difference-between-orc-and-parquet.html
    8. https://www.datanami.com/2018/05/16/big-data-file-formats-demystified/
    9. https://towardsdatascience.com/demystify-hadoop-data-formats-avro-orc-and-parquet-e428709cf3bb
    10. Parquet官网https://parquet.apache.org/documentation/latest/
    11. https://blog.clairvoyantsoft.com/big-data-file-formats-3fb659903271
    展开全文
  • 导读:在讲《Apache Druid 底层存储设计》时就说过要讲一讲列式存储。现在来了,通过本文你可以了解到行存储模式、列存储模式、它们的优缺点以及列存储模式的优化等知识。今日格言:不要...
  • 02核心问题回答1、传统的关系型数据库,如 Oracle、DB2、MySQL、SQL SERVER 等采用行式存储法(Row-based),在基于行式存储的数据库中,数据是按照行数据为基础逻辑存储单元进行存储的, 一行中的数据...
  • MySQL存储引擎作为可插拔式的组件提供MYSQL服务软件自带功能程序,处理表处理器不同的存储引擎有不同功能和数据存储方式默认的存储引擎MySQL 5.0/5.1 --> MyISAMMySQL 5.5/5.6 --> InnoDB#出可用...
  • 为什么这么设计(Why’s THE Design)是一系列关于计算机领域中程序设计决策的文章,我们在这个系列的每一篇文章中都会提出一个具体的问题并从不同的角度讨论这种设计的优缺点、对具体实...
  • 前言 Hive支持的存储数的格式主要有:TEXTFILE 、SEQUENCEFILE、ORC、PARQUET。 行与列存储的特点 ...每个字段的数据类型一定是相同的,列式存储可以针对性的设计更好的设计压缩算法。 Hive文件存储格式以及
  • Hbase的优缺点

    2021-01-18 18:22:11
    HBase是一个列式数据库,相对于于传统行式数据库而言。当你单张表字段很多时候,可以将相同列(以regin为单位)存在到不同服务实例上,分散负载压力。 二、Hbase的缺点 架构设计复杂,且使用HDFS作为...
  • 大数据开发面试:Impala的优缺点

    千次阅读 2018-07-16 18:04:52
    Impala的优缺点 优点: 1、基于内存进行计算,能够对PB级数据进行交互式实时查询、分析 2、无需转换为MR,直接读取HDFS数据 3、C++编写,LLVM统一编译运行(impala是用...7、支持列式存储(hbase是列式存储)(...
  • 说说nosql的优缺点

    万次阅读 2018-01-18 20:20:04
    ——灵活数据模型,结构比后者更丰富,传统关系型数据库都是结构化表,nosql可以是列式存储、key-value和文档存储; ——更易扩展,像nosql数据库分分钟就可以添加一台新服务器; ——高可用,查询效率高,...
  • 列式数据库有哪些? GBase 8a、Hbase 什么是列式数据库? ...列式数据库是以列相关存储架构进行数据存储的数据库,主要适合于批量数据处理和即时查询。相对应的是行式数据库,数据以行...列式数据库的优缺点: ...
  • 什么是列存储

    2020-11-07 17:01:32
    现在来了,通过本文你可以了解到行存储模式、列存储模式、它们的优缺点以及列存储模式的优化等知识。 今日格言:不要局限于单向思维,多对比了解更多不同维度的东西。 从数据存储讲起 我们最先接触的数据库系统,大...
  • 因为HBase是列式存储的nosql,宽表是指很多列较少行,即列多行少的表,一行中的数据量较大,行数少,而高表是指很多行较少列,即行多列少,一行中的数据量较少,行数大。 经过查询,总结出如下结论:  高表优势:...
  • 一、优点: 1)海量存储 Hbase适合存储PB级别海量数据,在PB级别...这里的列式存储其实说是列族(ColumnFamily)存储,Hbase是根据列族来存储数据。列族下面可以有非常多列,列族在创建表时候就必须指...
  • 存储方式nosql关系型数据库是表格式的存储在表行和中。他们之间很容易关联协作存储,提取数据很方便。而Nosql数据库则与其相反,他是组合在一起。通常存储在数据集中,就像文档、键值对或者图结构。(关系型...
  • 导读:在讲《Apache Druid 底层存储设计》时就说过要讲一讲列式存储。现在来了,通过本文你可以了解到行存储模式、列存储模式、它们的优缺点以及列存储模式的优化等知识。 今日格言:不要局限于单向思维,多对比...
  • Hive 数据存储详解

    2020-02-04 23:19:12
    几张图看懂列式存储详细介绍了列式存储的原理和优势。 从上图可以很清楚地看到,行式存储下一张表的数据都是放在一起的,但列式存储下都被分开保存了。所以它们就有了如下这些优缺点: 这里...
  • Kudu是cloudera开源运行在hadoop平台上的列式存储系统,拥有Hadoop生态系统应用常见技术特性,运行在一般商用硬件上,支持水平扩展,高可用。 kudu 定位是 「Fast Analytics on Fast Data」,是一个既支持随机...
  • 目录 1. Hive架构原理 command-line shell & thrift/jdbc Metastore HQL执行流程 ...2. 数据仓库与传统数据库比较 ...3. Hive与HBase区别 ...Hive支持行式存储和列式存储 优缺点 压缩格式 6. Hive当中四个By
  • ClickHouse笔记.pdf

    2019-09-23 21:19:45
    ClickHouse笔记,系统的描述了行式存储,列式存储,ClickHouse的优缺点,单击版搭建以及集群搭建。
  • 行式与列式存储对比2.1行式与列式存储数据物理底层存储区别2.2优缺点3.hive文件格式配置实现以及对比3.1使用SEQUENCEFILE文件格式3.2使用RCFILE格式3.3使用ORC文件格式3.4使用PARQUET文件格式3.5读取数据量对比 ...
  • HBase安装配置

    2020-09-12 17:43:01
    HBase安装配置HBase概念HBase安装配置 HBase概念 HBase 1、Hbase是hadoop领域的的数据库 ...2)列式数据库的优缺点 a、一张不规则的表(人物画像)每行属性有大量的null b、类似于交错数组,只使用在特
  • 这里写目录标题HBase介绍 HBase介绍 1、HBase是hadoop领域的数据库 2、HBase是面向列存储的列式...b)列式数据库的优缺点 **i.**一张不规则的表(人物画像)每行属性有大量的null **ii.**类似于交错数组,只使用在特定
  • 《开源软件中大数据管理技术》一文以Hadoop、Parquet、Cassandra、IoTDB等系统为例,介绍了存储系统中LSM结构、列式存储,副本机制中副本一致性、纠删码技术,分布式协议等大数据管理技术原理及优缺点,并对...
  • Hbase安装(数据库) ​

    2019-09-18 05:40:08
    简述:Hbase是Hadoop领域的数据库,是面向列存储的列式数据库。 ​ a) 行式数据库优缺点 ​ i. 数据在表中的位置空间是确定的,指针在访问只要知道首地址就可以高效获取其他数据 ​ ii. 但在常用的可能只是所有列中...
  • ify确定不同类型的数据库和数据存储技术的优缺点 in在Postgres和Apache Cassandra中创建一个表 关系数据模型 ➔了解何时使用关系数据库 ➔了解OLAP和OLTP数据库之间的区别 ➔创建标准化数据表 ➔实现非规范化模式...
  • Hbase安装(数据库)

    2019-08-30 09:58:39
    简述:Hbase是Hadoop领域的数据库,是面向列存储的列式数据库。 ​ a) 行式数据库优缺点 ​ i. 数据在表中的位置空间是确定的,指针在访问只要知道首地址就可以高效获取其他数据 ​ ii. 但在常用的可能...

空空如也

空空如也

1 2 3
收藏数 59
精华内容 23
关键字:

列式存储的优缺点