亿级数据,秒级响应,Smartbi究竟如何做到?
关于 Smartbi,似乎有很多标签:真Excel、复杂报表、性能、自助分析、数据挖掘、NLP….其中,一个“性能”标签,江湖上就有很多的传说,例如应用于火星探测器飞行数据的分析,应用于某省的经济普查,应用于某银行的大规模数据挖掘等等。 数据处理的性能,对于一款 BI软件 来说,是最基本的要求。然而,恰恰最基本的要求,却最能体现产品的品质,使其在众多竞品中脱颖而出。 那么, Smartbi又是如何做到数据处理性能如此强悍呢? 一、 支持列式数据库 传统行式数据库的存储格式按照 ‘行’的方式把一行各个字段的数据存储在一起,一行行连续存储。对于把一行的数据写到数据库中,或者对一行数据中的某些字段进行修改,或者删除整行数据这些事务型的数据库操作来说,既直观也高效。 但是,在行式数据库上做 统计分析 的时候,这种存储格式效率并不高。例如:统计各地区的销售额和利润同比变化、统计各部门的业绩完成情况等等,都是在其中某些字段上的操作,但行式数据库却需要读取每一行的所有字段。在只分析销售额和利润的时候,把其它字段的数据如客户名称,签约时间,客户经理等等也统统都读了进来,浪费了大量资源。虽然通过 “索引”有一定的改善,但大量的索引所带来的存储空间浪费以及为维护这些索引所带来的时间浪费都会以指数级别增长。 图源:网络 列式数据库将同一个数据 “列”的各个值存放在一起,插入某一行数据时