成功的VoltDB实现

成功的VoltDB实现,voltdb,Voltdb,我已经在一个项目上工作了半年多,从头开始构建医疗软件。当我加入时,MySQL被选为主要数据存储 几个月后,许多令人头痛的事情发生了,我们开始研究替代数据存储,这些数据存储可以提供记录关键且不断变化的医疗数据所需的灵活性 我们已经研究了许多NoSQL解决方案;我们最关注的是MongoDB。能够存储结构化的嵌入式数据将是一个巨大的好处。然而,我们被有关数据丢失/可靠性问题的报告吓跑了 我遇到了一些“NewSQL”数据存储,我对VoltDB特别感兴趣 我很想知道是否有人对Volt有任何经验,或者在项目

我已经在一个项目上工作了半年多,从头开始构建医疗软件。当我加入时,MySQL被选为主要数据存储

几个月后,许多令人头痛的事情发生了,我们开始研究替代数据存储,这些数据存储可以提供记录关键且不断变化的医疗数据所需的灵活性

我们已经研究了许多NoSQL解决方案;我们最关注的是MongoDB。能够存储结构化的嵌入式数据将是一个巨大的好处。然而,我们被有关数据丢失/可靠性问题的报告吓跑了

我遇到了一些“NewSQL”数据存储,我对VoltDB特别感兴趣

我很想知道是否有人对Volt有任何经验,或者在项目中看到过它的实施

编辑:

数据完整性和一致性是最重要的。患者信息丢失可能非常有害,他们可能会受到不适当的治疗等

数据量会有所不同;我们可能会首先支持小型实践。大约700个用户总数。但即使我们扩大到医院,我们也不会关注像流量这样的社交媒体

关于你的问题,是的,数据结构将会演变。除了必须更改现有结构以捕获新的或修改的输入外,我们还必须将现有数据的结构保留为一种快照。我们只能用MySQL实现这种EAV风格


谢谢你的反馈

目前的问题非常主观,但更多的信息可以帮助我们为您指明正确的方向

你的具体要求是什么?在数据完整性和一致性至关重要的情况下,该系统是否有交易需求,例如在交易和金融应用程序中?数据量是多少,有多少并发用户?性能要求是什么

另外,您提到了不断变化的医疗保健数据,这是否意味着数据结构在不断变化和演变?如果是这样,您可能希望远离刚性数据库的性质,而不是考虑关系数据库,而是考虑诸如Mongo之类的文档库,其中无模式的数据结构提供了更多的灵活性。 顺便说一句

不要害怕Mongo上的可靠性故事;你可以找到几乎任何产品的恐怖故事,无论是开源产品还是商业产品;通常情况下,这些糟糕的评论与产品关系不大,而与客户执行不力有关


我最后检查的VoltDB要求所有持久性逻辑都编码为存储过程。这种方法的明显缺点是代码可见性和模块化程度较低,维护需求较高。除此之外,Voltdb的速度非常快,因为传统关系数据库中的大部分开销(如锁定等)都已从核心数据库引擎中消除。

我们去年推出了一款使用Voltdb的应用程序。我们使用kfactor=1 4服务器群集(256 GB内存/服务器),每天存储约15亿条记录,处理5000-9000万个事务。考虑到VoltDB的性能,我们每天可以轻松处理10亿笔交易

到目前为止,我们没有遇到与VoltDB软件相关的问题。我们的经验是,它是真正的酸兼容。通过添加命令日志功能,我相信您可以配置日志参数,以避免丢失任何事务

其他强大的功能包括它的可伸缩性(以及相对简单的添加容量)

选择VoltDB时的一个重要考虑因素是了解VoltDB的分区方案。使用VoltDB实现极高的事务速率取决于通过数据分区实现的并行性。分区对您的应用程序是透明的,但是您的应用程序数据必须能够进行分区以获得最大的性能。如果您的数据不适合进行分区,我认为主要影响将是吞吐量(即事务速率)的降低,而不是停止显示


最后—关于存储过程的说明。VoltDB允许您在不停止数据库的情况下替换存储过程。此外,存储过程的每次调用都构成一个事务。我们利用存储过程的方式可以在不停止数据库的情况下修改/更新应用程序逻辑。

这个问题有点老了,但我给出了一些反馈,因为我们已经使用MongoDB很长时间了,我们希望使用VoltDB,但原因完全不同:

  • 关于mongoDB:4年来,我们一直在生产中使用mongoDB,从未丢失过任何一个字节的数据。“mongodb不可靠”似乎是个神话,至少对我来说是这样。我们每天在mongoDB中管理数百万个新条目,没有任何问题

  • 我们期待VoltDB提供一个不同的用例:提供大量的实时分析。MongoDB在提供分析方面并不差,但是当你超过数百万条要分析的条目时,它开始有点慢。VoltDB在这方面要好得多,但我不建议您使用它来存储数据,尤其是高价值数据。。。。我们使用另一个数据库来存储数据


您知道,MySQL是最不可靠的SQL数据库。。也许在SQLite之后。。甚至Oracle数据库也会爆炸。因此,研究Mongo作为替代方案让我想到了VoltDB,并认为可能那些处于类似情况的人可能会发现涉及这两个方面的讨论是有用的。本文强调,如果升级架构或更改规模(没有弹性),就无法获得高可用性。对于长查询(如报告或批量更改),也没有并发性。请解释您所说的导致更高维护的存储过程是什么意思