首页 > 数据库 > NoSQL > vertica 数据库
Vertica是一款基于列存储的 MPP (massively parallel processing)架构的数据库。它可以支持存放多至PB(Petabyte)级别的 结构化数据。Vertica是由关系数据库大师Michael Stonebraker(2014 年 图灵奖获得者)所创建,于2011年被 惠普收购并成为其核心大数据平台软件。
列式存储体系架构是 Vertica数据库的核心,实际上Vertica是 世界上第一个列式存储数据库,它是在2005年发表的 学术论文C-Store的基础上推出的适用于大规模并行处理场景的真正意义上的分布式数据库。
投影实际上是一组经过排序和压缩的存储在磁盘上的一个文件集合,这个投影类似于 聚集列索引(它和表的存储有很大的不同),您可以 认为它是只存储了 索引结构。投影的定义类似于带有一个 AS SELECT子句的 物化视图,正如您在上面的图中所看到的三个投影, “CREATE PROJECTION AS SELECT A, B, C FROM sales ORDER BY A;”, “ CREATE PROJECTION AS SELECT B, A, C FROM sales ORDER BY B, A;” , “CREATE PROJECTION AS SELECT C, A FROM sales ORDER BY C;” 。
在大多数情况下,最佳压缩排序和分布式投影的规则很简单,它可以直接从查询中导出。所以我们为什么要花费时间手动处理它呢?通过一种称为 数据库设计器 的特殊工具能够自动创建投影,这种工具根据您的工作负载自动为您建议行存储中的索引。
我们有一个基于磁盘的 列式读取优化存储 ,我们有一个 内存写入优化存储 ,这是任何插入和更新的默认选项。这让Vertica能够支持实时查询这个核心功能,因为它的唯一缺点是能够接受几行数据的插入或更新,并在事务完成以后,内存中的数据只需几毫秒即可用于读取到磁盘,然后在查询时进行合并,通常在几分钟后的某个时间点它通过后台进程刷新到磁盘,形成一个新的排序和压缩的存储容器,然后在通过后台进程再次合并存储容器。如果您批量加载并且不想浪费内存,则可以将数据直接写入磁盘。因为在这种规模上进行实时分析的任何其他选择将涉及多种产品的临时混合架构。
多表联接 是一个性能杀手,请确保您有 合并连接 和 列式存储 之类的功能,让事情变得更好。但是在白天的工作时间之内到了快要下班的时候,你仍然在获取来自多个不同地方的数据,并且很好地将它们连接在一起,这显然需要时间,而且每个查询都需要这样做。这就是为什么 数据集市 长期以来一直是转到“需要频繁查询数据的选项”以查看数据。当数据发生变化时,需要刷新到数据集市,这可能会造成大量耗时的计算,除非您只刷新 已经被更改 的那一部分,但是也存在其他问题。
当我们在上一个特性中讨论 数据集市的主题时,请考虑一下,您正在获取的数据容量每天都在TB级以上。您会怎么做?
不,您可以向表中添加 投影(PROJECTION)功能。它按您需要的所有产品分组并汇总您需要的所有指标,这就是所谓的实时聚合投影,然后与所有其他投影一起刷新,每次提交。
现在您不需要增加逻辑的复杂性或硬件成本和附加软件,将为您进行 内存聚合,现在一切都来了! 开箱即用,更重要的是开箱即用!!!
推荐阅读:
https://www.modb.pro/db/225439
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69949806/viewspace-2909732/ ,如需转载,请注明出处,否则将追究法律责任。