1. 什么是行式存储和列式存储?
2. 行式存储分析?
- 缺点:
-- 行式在读取数据的时候,所查询的目标只涉及少数几项属性,但由于这些目标数据埋藏在各行数据单元中,而行单元又特别大,必须读取每一条完整的行记录,从而使得读取效率大大降低。
-- 可以加索引或给表分区进行优化。 - 优点:
-- 1. 适合随机的增删改查操作
-- 2. 在行中选取所有属性的查询操作
-- 3. 频繁插入或更新的操作,其操作与索引和行的大小相关
3. 列式存储分析?
对于数据仓库和分布式数据库来说,大部分情况下它会从各个数据源汇总数据,然后进行分析和反馈,操作大多是围绕同一列属性的数据进行的,而当查询某属性的数据记录时,列式数据库只需返回与列属性相关的值。
- 优点:
在大数据量查询场景中,列式数据库可在内存中高效组装各列的值,最终形成关系记录集,因此可以显著减少IO消耗。
- 适用场景:
-- 1.查询过程中,可针对各列的运算并发执行,最后在内存中聚合完整记录表,最大可能降低查询响应时间。
-- 2.可在数据列中高效查找数据,无需维护索引(任何列都能作为索引),查询过程中能够尽量减少无关IO,避免全表扫描。
-- 3.因为各列独立存储,且数据类型已知,可以针对该列的数据类型、数据量大小等因素动态选择压缩算法,以提高物理存储利用率;如果某一行的某一列没有数据,在列存储时,就可以不存储该列的值,这比行式存储更节省空间。 - 缺点/不适用场景:
-- 1.数据需要频繁更新的交易场景
-- 2.表中列属性较少的小量数据库场景
-- 3.不适合做含有删除和更新的实时操作