Vertica数据库可以用于OLTP数据吗?
如果可以,这样做的利弊是什么?
期待一场Vertica与Oracle的竞争 :) 由于Oracle许可证价格昂贵,是否使用Vertica能以更好的价格胜任其工作?
谢谢大家。
Vertica数据库可以用于OLTP数据吗?
如果可以,这样做的利弊是什么?
期待一场Vertica与Oracle的竞争 :) 由于Oracle许可证价格昂贵,是否使用Vertica能以更好的价格胜任其工作?
谢谢大家。
HP Vertica是一种列式存储数据库。由于数据在列式存储中组织的方式并不适合快速写入,因此需要寻找解决方法。
HP Vertica通过拥有WOS(写优化存储)和ROS(基于文件的读优化存储)来解决这个问题。
数据被快速地从WOS移动到ROS中,ROS本身还有一个“合并”过程,将小的ROS文件合并成更大且更容易扫描的文件。
如果您尝试使用Vertica进行OLTP,则可能会很快就会遇到1024个ROS容器的默认限制,并导致大量ROS容器。
如果您使用某种排队机制将记录传递给存储,就可以减少ROS文件的数量并增加它们的大小。虽然它可以工作,但如果您想使OLTP系统在非常接近其写入活动的情况下读取数据,那么它就不适合该用例。
WOS / ROS机制是解决列式存储DB写入性能问题的简便方法,但从根本上讲,Vertica不是OLTP DB,而是一种数据集市技术,可以实现数据近乎实时地摄取。
我认为这个问题有不同的解读方式。
首先,我需要对这个问题进行一些定义。OLTP数据库意味着数据库本身负责事务处理,而不仅仅是接收一些规范化的数据。
我的答案是绝对不能,除非它是一个单用户数据库。在普通的OLTP类型使用中,几乎没有引用完整性、没有引用完整性锁定、删除/更新时会出现表锁,而且你很可能会积累一个删除向量。
你可以通过一些广泛的中间件编程来解决其中的一些问题(分布式锁、避免删除/更新等)。但是为什么要这样做呢?有很多选项可供选择,它们不是Oracle,不带有巨大的价格标签,但可以为你提供OLTP所需的一切。
是的,绝对可以。最好利用Vertica的优势。在Vertica中,查询通常具有相当大的开销,即使是规范化的大量数据,也可以轻松地处理。我不会使用Vertica来主要运行点查询,抓取一些行。这并不是说你不能,但你不能像其他专门用于此目的的数据库那样进行并发操作。
简而言之,要使用正确的工具来处理正确的工作。我非常喜欢使用Vertica,但仅仅因为我喜欢挥舞锤子,并不意味着每个问题都是钉子。
Up_one - 考虑电信用例 - 你是在做CDR还是其他什么?
回答你最初的问题,Vertica可能非常适合,但这取决于你如何加载数据,如何进行更新,你的数据大小和SLA是什么。我真的很熟悉这个领域,因为我曾经在一家电信公司实施了Vertica。