面试题答案
一键面试行式存储
- 性能特点:行式存储以行为单位存储数据,将同一行的数据存储在一起。在读取整行数据时性能较好,因为数据在物理存储上是紧密相连的,一次磁盘 I/O 操作就可以获取整行数据。但如果只需要读取某几列数据,也会将整行数据读出,造成不必要的数据传输和处理,对于列数较多且只需读取部分列的场景,性能较差。
- 举例场景:在银行系统中,查询某一客户完整的账户信息,如账户号、姓名、地址、联系方式等所有信息,行式存储更有利于数据读取,因为可以快速获取整行数据。
列式存储
- 性能特点:列式存储以列为单位存储数据,每一列的数据集中存储。在进行数据分析场景下,仅需读取特定列时,性能优势明显,因为可以只读取需要的列数据,减少了磁盘 I/O 和数据传输量。但如果要读取整行数据,则需要从不同列存储位置分别读取数据再组合,性能相对较差。
- 举例场景:在大数据分析场景,如电商平台分析用户购买商品的价格分布,只需读取商品价格这一列数据,列式存储方式能极大提高数据读取性能,避免读取其他无关列数据。
列簇式存储(HBase 采用的方式)
- 性能特点:HBase 中的列簇式存储结合了行式和列式存储的部分优点。它将相关列组织成列簇,同一列簇内的数据物理上存储在一起。对于同一列簇内的数据读取,类似行式存储,性能较好;对于跨列簇的读取,性能相对较差。在数据读取时,能在一定程度上减少 I/O 操作,尤其适用于按行键和列簇快速定位数据。
- 举例场景:在物联网场景中,设备会产生多种类型的数据,如传感器数据、设备状态数据等,可以将传感器数据归为一个列簇,设备状态数据归为另一个列簇。当查询某个设备一段时间内的传感器数据时,通过行键定位设备,然后读取对应的传感器数据列簇,能快速获取所需数据。