使用Vertica数据库获取OLTP数据?

使用Vertica数据库获取OLTP数据?,vertica,Vertica,Vertica数据库可以用于OLTP数据吗? 如果是这样的话,这样做的利弊是什么 正在寻找Vertica与Oracle之争:)既然Oracle许可证如此昂贵,Vertica会以更好的价格完成这项工作吗? thx all首先-考虑到电信使用案例-您是在做CDR还是其他什么 要回答您最初的问题,Vertica可能非常适合,但这取决于您如何加载数据、如何进行更新、数据大小以及SLA。我对这个领域非常熟悉,因为我在当时工作的一家电信公司实现了Vertica。使用Vertica作为事务数据库是个坏主意。它

Vertica数据库可以用于OLTP数据吗?
如果是这样的话,这样做的利弊是什么
正在寻找Vertica与Oracle之争:)
既然Oracle许可证如此昂贵,Vertica会以更好的价格完成这项工作吗?
thx all

首先-考虑到电信使用案例-您是在做CDR还是其他什么


要回答您最初的问题,Vertica可能非常适合,但这取决于您如何加载数据、如何进行更新、数据大小以及SLA。我对这个领域非常熟悉,因为我在当时工作的一家电信公司实现了Vertica。

使用Vertica作为事务数据库是个坏主意。它被设计成一个数据仓库工具。本质上,它以优化的方式读取和写入数据。大量交易?这不是它设计的目的

我建议你调查一下VoltDB。迈克尔·斯通布雷克(Michael Stonebreaker)是Vertica的幕后推手,也是该公司的创始人。他的基本理念是,Oracle、SQL Server等在高性能方面做得不好,因为它们的设计目的是做所有事情。未来是为特定任务设计数据库

所以他有一些数据仓库的概念,后来成为Vertica。对于事务数据库,有VoltDB。记录在案,并非惠普所有


作为记录,我没有使用VoltDB。据我所知,作为一种解决方案,它并不像Vertica那样成熟,但它似乎有很多希望。

HP Vertica是一种列存储数据库。数据在列存储中的组织方式本质上不适合快速写入

HP Vertica通过拥有WOS(写优化存储)和ROS(基于文件的读优化存储)解决了这一问题

数据以相当快的速度从WOS移动到ROS中,ROS本身有一个“合并”过程,该过程将小的ROS文件合并到一起,形成更大的文件,因此更容易扫描

如果您尝试将Vertica用于OLTP,那么将会发生的情况是,您将获得大量ROS容器,并且可能很快达到1024个ROS容器的默认限制

如果您使用某种形式的排队机制在存储区前面传递更大批量的记录,那么这将导致越来越少的ROS文件。它可以工作,但是如果您想让您的OLTP系统的读取非常接近它的写入活动,那么它就不适合这个用例


WOS/ROS机制是解决列存储数据库中写操作的基本性能损失的一种巧妙方法,但从根本上说,Vertica不是OLTP数据库,而是一种可以近实时接收数据的数据集市技术

我认为有不同的方法来理解这个问题

  • 您可以使用Vertica作为OLTP数据库吗 首先,我将对这个问题做一点定义。OLTP数据库意味着数据库本身负责事务处理,而不仅仅是接收一些规范化的数据

    我的答案绝对不是,除非它是一个单用户数据库。在DELETE/UPDATE上实际上没有RI,没有RI锁,表锁,并且在正常的OLTP类型使用中可能会累积一个DELETE向量

    您可以通过一些广泛的中间件编程(分布式锁、大量避免删除/更新等)来解决其中一些问题。但是为什么呢?有很多选项不是Oracle的,不需要昂贵的价格,但可以为您提供OLTP所需的一切

  • 您可以使用Vertica接收和查询OLTP数据吗 是的,当然。不过,最好使用Vertica来发挥其优势。Vertica中的查询往往有相当大的开销,您可以轻松地浏览大量数据,甚至可以进行规范化处理。我不会使用Vertica来主要运行点查询,到处抓取几行。这并不是说你不能,但是你不能以与其他数据库相同的并发性来达到这个目的


    TL;DR为正确的工作使用正确的工具。我真的很喜欢使用Vertica,但仅仅因为我喜欢挥动锤子并不意味着每个问题都是钉子。

    这个问题现在有点老了,但我将分享我的经验

    除非你仔细考虑你的工作量,否则我不会把Vista建议为OLTP。 如其他答案中所述,Vertica有两种存储方式。ROS是读优化存储,WOS是写优化存储。WOS完全在内存中,因此它对插入执行得更好,但查询速度较慢,因为所有的小更新都需要查询和联合。Vertica在理论上可以处理小负载,但在实践中,它对我们的性能影响不大。WOS也有缺点,即当数据库出现故障时,当它回滚到上一个好纪元时,WOS不一定被保留。(ROS也不是,但在实践中,ROS的损失要小得多)

    ROS更加可靠,并提供更好的读取性能,但是如果没有仔细的设计,您将永远无法处理超过一定数量的查询。尽管vertica是水平可伸缩的,但实际上大型表在所有节点上都是分段的,因此查询必须在所有节点上运行。因此,添加更多节点并不意味着处理更多并发查询,它只意味着每个查询的工作量更少。如果您的表足够小,无法进行分段,那么这对您来说可能不是问题

    另外值得注意的是,OLTP通常意味着大量并发事务,因此您需要非常仔细地规划资源池。默认情况下,vertica对常规资源池的计划并发性为每台服务器或RAM/2GB的最少内核数。基本上,该值的作用是确定分段查询的每个节点的默认内存分配。因此,在默认情况下,vertica不允许您运行比核心更多的查询。您可以调整此值,但一旦遇到