ITPub博客

首页 > 数据库 > NoSQL > vertica 数据库

vertica 数据库

NoSQL 作者:mcxiaoracle 时间:2022-08-09 23:41:43 0 删除 编辑

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级以上。您会怎么做?

  • 从磁盘读取千兆字节的数据并为每个查询冗余聚合?
  • 您是否使用聚合数据创建单独的表并使用复杂的逻辑对其进行更新?
  • 您是否在数据库前放置了一个OLAP引擎来聚合您的数据从而增加了硬件的成本和复杂性?

不,您可以向表中添加 投影(PROJECTION)功能。它按您需要的所有产品分组并汇总您需要的所有指标,这就是所谓的实时聚合投影,然后与所有其他投影一起刷新,每次提交。

现在您不需要增加逻辑的复杂性或硬件成本和附加软件,将为您进行 内存聚合,现在一切都来了! 开箱即用,更重要的是开箱即用!!!




推荐阅读:

https://www.modb.pro/db/225439









 
















来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69949806/viewspace-2909732/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: gbase 数据库
下一篇: spark 架构分析
请登录后发表评论 登录
全部评论
数据方向,了解oracle ,IBM DB2 730

注册时间:2019-09-30

  • 博文量
    286
  • 访问量
    226577