可以将Vertica数据库用于OLTP数据吗?
如果有的话,这样做有什么优点和缺点?
寻找一个Vertica与甲骨文的战斗:)
由于Oracle许可证如此昂贵,Vertica会以更好的价格工作吗? thx全部将Vertica数据库用于OLTP数据?
回答
Up_one - 考虑电信用例 - 你在做CDR还是别的什么?
要回答你的原始问题是Vertica可能非常适合,但这取决于你如何加载数据,你如何做更新,你的数据大小和你的SLA是什么。我对这个领域非常熟悉,因为我在当时为我工作的电信中实施了Vertica。
将Vertica用作事务数据库是个不错的主意。它被设计成一个数据仓库工具。实质上,它以优化的方式读取和写入数据。很多交易?这不是它设计的目的。
我建议你看看VoltDB。 Vertica背后的力量Michael Stonebreaker也创建了该公司。他的基本理念是,Oracle,SQL Server等在高性能方面表现不佳,因为它们都是为了完成任何事情而设计的。未来是为特定任务设计数据库。
因此,他对于成为Vertica的数据仓库有一些概念。对于事务数据库,有VoltDB。不属于惠普,备案。
为了记录,我没有使用过VoltDB。据我所知,它不像Vertica那样成熟,只是看起来有很多承诺。
Thx回复Geoff, – 2012-07-13 13:35:14
Thx Geoff,
True Vertica设计不适合OLTP使用,通过在OLTP中使用它,您可以将其取消为WOS,而ROS会使其与其他人不同。
奇怪的是,它仍然使OLTP RDBMS的一切都变得更好,到目前为止速度非常快。
至于像你说的VoltDB还不成熟,wicth很难向客户展示。
但是是一个DB让我的眼睛:)。
。我将尝试与其他OLTP RDBMS一起实施Vertica,也许有了5年计划,我们可能会从$$$中获得很好的回报! –
2012-07-13 13:58:38
HP Vertica是一个列存储数据库。数据在列存储中组织方式的本质不适合快速写入。
HP Vertica通过拥有WOS(写入优化存储)和ROS(基于文件的读取优化存储)来解决此问题。
数据很快从WOS移出到ROS中,ROS本身有一个“合并”过程,需要小的ROS文件并将它们合并在一起形成更大的,因此更容易扫描的文件。
如果您尝试将Vertica用于OLTP,那么将会发生的情况是您将获得大量ROS容器,并可能非常快速地达到1024个ROS容器的默认限制。
如果你用某种形式的排队机制向商店前进,以较大的批次通过记录,那么这将导致更少和更大的ROS文件。它可以工作,但如果你想让你的OLTP系统阅读与其写作活动非常接近,那么它就不适合用例。
的WOS/ROS机制是一个整洁的工作围绕在列存储数据库写入的基本性能损失,但是从根本上Vertica的是不是一个OLTP数据库,而是一个数据集市技术,可以近乎实时地提取数据
Thx的回复,在这一点上我已经达到Vertica的Arquitect水平! Thx无论如何 – 2014-06-10 13:41:37
纠正在这里,没有1024容器的限制有1024个分区的限制。我有有6500K + ROS容器的桌子,他们的功能很好。在考虑设计之前,容器的数量并不多。我们有很多投影和很多分区,并且会生成很多容器,但是如果您有一个分区和一个投影,那么拥有大量容器会损坏您的性能。 – user1084563 2015-05-22 22:08:51
@ user1084563错误。 ROS限制不在桌面上,而是在每个节点的每个投影上。分区决定了这些ROS容器的粒度,因此,如果您不小心,可能会导致很多ROS容器,并且如果超出限制,则会回滚ROS。 – woot 2015-05-25 19:46:47
我认为有不同的方法来阅读这个问题。
- 您可以将Vertica用作OLTP数据库吗?
首先我要定义这个问题。OLTP数据库意味着数据库本身负责事务处理,而不仅仅是接收一些标准化的数据。
我的答案绝对不是,除非它可能是单用户数据库。实际上没有RI,没有RI锁定,DELETE/UPDATE上的表锁,并且您可能在正常的OLTP类型用法中累积了一个删除向量。
您可以解决其中的一些与一些广泛的中间件编程(分布式锁,避免重删除/更新的,等等)。但为什么?这里有很多不是Oracle的选项,不会带有巨大的价格标签,但可以为您提供OLTP所需的一切。
- 你可以使用Vertica的摄取和查询OLTP数据?
是的,当然。尽管如此,最好使用Vertica来发挥它的优势。 Vertica中的查询往往会有相当多的开销,并且您可以轻松浏览大量数据,甚至可以规范化。我不会将Vertica用于主要的运行点查询,在这里和那里抓取几行。这并不是你无法做到的,但你不能与其他数据库具有相同的并发性。
TL; DR使用正确的工具进行正确的工作。我真的很喜欢使用Vertica,但仅仅因为我喜欢摆动锤子并不意味着每个问题都是钉子。
非常好! Thx是伟大的职位。 – 2015-05-25 13:40:14
这个问题现在有点老了,但我会分享我的经验。
我不会建议vertica作为OLTP,除非你非常仔细地考虑你的工作量。
正如其他答案中所述,Vertica有两种类型的存储。 ROS是读取优化存储,WOS是写入优化存储。 WOS纯粹是在内存中,所以它对插入效果更好,但查询速度较慢,因为所有小型更新都需要查询和联合。 Vertica理论上可以处理小负载,但在实践中,它对我们的性能表现并不理想。 WOS也存在一些缺点,即当数据库失败时,WOS在回滚到最后一个良好时间时不一定保留。 (ROS不是,但实际上你会从ROS中损失很少)。
ROS是很多更可靠,提供更好的读取性能,但你永远都能够处理超过一定数量的查询更没有精心的设计。虽然vertica是可水平扩展的,但实际上大表在所有节点上都是分段的,因此查询必须在所有节点上运行。因此添加更多的节点并不意味着处理更多的并发查询,这意味着每个查询的工作量减少。如果你的桌子足够小以至于不可分割,那么这对你来说可能不是问题。
另外值得注意的是OLTP通常意味着大量的并发事务,所以你需要非常仔细地规划资源池。默认情况下,vertica对于每个服务器的最小内核数量或RAM/2GB的通用资源池具有计划的并发性。基本上这个值做的是确定分段查询的默认内存分配PER NODE。因此,默认情况下,vertica不会让您运行比核心更多的查询。你可以调整这个值,但是一旦你达到了内存上限,你就无法做到这一点,因为内存是为每个节点分配的,所以添加更多的节点甚至都没有帮助。如果您为资源池内存分配命中任何错误,那么这是您应该查看的第一个配置。
此外,Vertica的是坏与删除和更新(这决心删除,并在后台的插件),所以如果这些都是你的工作量的常规部分,然后Vertica的可能是一个不错的选择。我们个人使用MySQL作为需要删除/更新的维度表,然后将这些数据定期同步到Vertica中用于连接。
我个人使用Vertica作为OLTP-ish realtime-ish数据库。我们将我们的负载分成5分钟的时间间隔,这使得Vertica在插入物的数量/大小方面感到高兴。这些批次是使用COPY DIRECT插入的,因此它们完全避免了WOS(如果它们是大批量的,那么这会强制执行ROS容器的创建,如果您经常这样做可能会很糟糕)。由于许多预测都是不分段的,因此可以实现更好的扩展性,因为这使得查询仅击中1个节点并仅在1个节点上分配内存。到目前为止,它对我们运行良好,我们每天加载大约50亿行,并通过我们的用户界面实时查询。
它通过了一段时间,但您的帖子仍然是有用的,时间过去了,我已经更多地进入Vertica,你说的全都是“一次写入” - 这种交易使得Vertica在某些部分表现出色。但正如你所做的那样: - 将MySQL(高级反编译器)与Vertica愚蠢的快速加载混合在一起:)它是最好的选择。 – 2015-05-25 13:35:12
有没有办法让我在我的网站http://www.aodba.com/en/about/上给我留下一个联系信息?我对自动化有疑问。谢谢 – 2015-05-25 13:43:46
- 1. 数据仓库 - OLTP
- 2. 数据库(OLTP)和报告
- 3. 从OLTP关系数据库填充数据仓库
- 4. OLTP应用程序读取数据仓库数据设计
- 5. oltp数据库的基本基准
- 6. Vertica数据库中的总和查询
- 7. vertica数据库中的投影
- 8. Vertica admintools - 无法连接到数据库
- 9. 将OLTP SQL Server数据库中的表复制/复制到另一个报表SQL Server数据库?
- 10. 在Elasticsearch中存储数据 - OLTP
- 11. 如何获取Vertica数据库参数的值?
- 12. 使用循环与Dbvisualizeer SQL(数据库Vertica的)
- 13. 使用adodbapi在python中创建到Vertica数据库的连接
- 14. Shiny:ProgressBar用于将数据从数据库加载到数据表(DT)
- 15. 具有OLTP和OLAP数据库的CQRS有意义吗?
- 16. 为SQL Server OLTP数据库推荐放置tempdb和日志
- 17. OLAP层集中式OLTP数据库设计
- 18. 应用由于数据库
- 19. 用于更新数据库
- 20. 无法使用Sqoop将数据从Vertica导入到Cassandra
- 21. 使用Apache Nifi将数据从vertica转移到Redshift
- 22. 通过Vertica查询Parquet数据(Vertica Hadoop集成)
- 23. 从postgres迁移/复制数据到vertica
- 24. 将数据库1中的数据复制到数据库2
- 25. 将数据插入SQL Server数据库使用ADO.Net数据集
- 26. 使用数据表将xml数据载入数据库
- 27. 用于过滤数据库的数据库设计
- 28. Upate-数据库-script不用于创建数据库
- 29. 用于备份的mySql数据库自动复制数据库?
- 30. 关于将数据保存到sql数据库的问题
你用什么工具加载数据? – 2013-06-10 21:59:56