SAP HANA行和列存储表
SAPHANAModeler视图只能在基于列的表的顶部创建。在列表中存储数据并不是什么新鲜事。早先假定以基于Columnar的结构存储数据需要更多的内存大小,而不是性能优化。
随着SAPHANA的发展,HANA在信息视图中使用了基于列的数据存储,并展示了列式表相对于基于行的表的真正优势。
列存储
在列存储表中,数据垂直存储。因此,类似的数据类型如上例所示。它借助内存中计算引擎提供更快的内存读写操作。
在常规数据库中,数据存储在基于行的结构中,即水平存储。SAPHANA以基于行和列的结构存储数据。这可以在HANA数据库中提供性能优化,灵活性和数据压缩。
将数据存储在基于列的表中具有以下好处-
资料压缩
与传统的基于行的存储相比,对表的读写访问速度更快
灵活性和并行处理
更快地进行汇总和计算
功能差异-行与列存储
如果SQL语句必须执行聚合函数和计算,则始终建议使用基于列的存储。当运行汇总函数(例如Sum,Count,Max,Min)时,基于列的表始终会表现更好。
当输出必须返回完整的行时,首选基于行的存储。下面给出的示例很容易理解。
在带有Where子句的sales列中运行聚合函数(求和)时,它将仅在运行SQL查询时使用Date和Sales列,因此如果它是基于列的存储表,则将对其性能进行优化,因为仅需两个数据即可列。
运行简单的Select查询时,必须在输出中打印完整的行,因此建议根据此方案将表存储为Row。