内存中的 OLAP 引擎是否比传统的 OLAP 引擎有优势,后者由足够的 RAM 支持以包含整个多维数据集?
例如,如果我使用 MOLAP 引擎 (SSAS) 和 GB / TB 的 RAM,其中整个多维数据集(甚至星型模式)都驻留在 RAM 中,那么与 TM1 / SAP HANA 之类的东西相比有什么区别?
内存中的 OLAP 引擎是否比传统的 OLAP 引擎有优势,后者由足够的 RAM 支持以包含整个多维数据集?
例如,如果我使用 MOLAP 引擎 (SSAS) 和 GB / TB 的 RAM,其中整个多维数据集(甚至星型模式)都驻留在 RAM 中,那么与 TM1 / SAP HANA 之类的东西相比有什么区别?
不是我的专业领域,但据我了解,大多数所谓的内存 OLAP 数据库(不是我喜欢的术语,它被用作营销宣传而不是技术的公平比较)的区别是专栏存储索引。
如果您熟悉传统的 OLTP 和 OLAP 数据库结构,那么Column-Stores 与 Row-Stores(它们到底有多大不同)是对该技术的一个很好的介绍。
列存储索引将出现在 SQL Server 2012(又名“Denali”)中。
这是一个指向由 SQL Server 查询处理器团队的首席软件架构师 Conor Cunningham 介绍此新功能的 Power Point 演示文稿的链接。
假设数据库将完全驻留在主内存中而设计的数据库可以使用诸如T-tree 索引之类的结构。但真正的优势在于,IMDB 更简单。他们做的更少(因为他们不必担心管理缓存,或序列化写入以保持一致性,或与 ACID 兼容的 I/O 有任何关系),因此他们在硬件上执行更少的指令来执行相同的操作“工作”。通用数据库必须对所有人都适用;就像一个皮革人有十几种工具,但有时你只需要一把刀刃,所以你从冷钢买了一把刀片,没有人争论它是一把更好的刀!
列存储允许以行存储系统中无法实现的方式进行重要的数据压缩。基本上,一列中的所有值只在字典中存储一次,然后数据库存储一个整数字典键而不是原始值。如果您在内存中有一个行存储数据库,那么它会显着更大,并且更不切实际,因为它会增加内存成本。性能改进非常显着,您不再需要预先聚合事务数据,并且在大多数情况下不需要多维数据集。
此外,由于列存储将所有列值保留在顺序内存块扫描中,因此在 Select 等操作中要跳过的块更少。然而,列存储在事务上存在一些缺点,例如 HANA 在以后的版本中添加了行存储表。