从VoltDB定期运行VoltDB存储过程

时间:2018-05-02 04:37:25

标签: voltdb

有没有办法定期执行VoltDB存储过程或计划存储过程在特定时间运行

我正在探索VotlDB将产品从 RDBMS转移到VotlDB 。用java编写的产品。

大多数查询都可以迁移到VoltDB存储过程中。但是在我们的产品中,我们在oracle中有cron作业,它定期执行。现在我在VoltDB中找不到这样的功能。

我知道VoltDB存储过程可以定期从应用程序调用,但我们的产品以Active-Active模式部署,在这种情况下,所有应用程序将定期调用存储过程,这不是一个好的解决方案或其他方式,我们必须开发一些机制来从一个实例运行过程。

所以如果我从VoltDB获得cron作业功能会很好。

1 个答案:

答案 0 :(得分:1)

我在VoltDB工作。目前在VoltDB中没有这样的功能,例如Oracle中的DBMS_JOB。

您当然可以在群集中的某个服务器上使用cron作业,或者在网络中的某个其他服务器上使用cron作业,这些服务器可以调用sqlcmd来运行脚本或回显单个SQL语句或通过sqlcmd执行过程命令到数据库。使cron工作高度可用是一个普遍的问题。您可能会发现这些其他讨论很有用:

您还可以查看类似rcron的内容。

从RDBMS转换为VoltDB时要注意的一点是VoltDB已针对跨多个分区并行处理许多小事务进行了优化。虽然每个分区的序列化执行体系结构优于许多操作和流式工作负载,但它并非设计为一次对许多行执行批量操作,尤其是需要在一个事务中可能位于不同分区中的许多行上执行写入的事务。

如果您的定期作业执行“处理满足某些条件的所有新行”之类的操作,您可能会发现此事务很慢,并且每次运行时都可能会延迟工作负载的其他部分,尤其是在有很多行的情况下积累。更多的是“VoltDB方式”来替换一个简单的INSERT语句,该语句可能用于通过插入并立即处理数据行的过程来摄取数据(稍后由预定作业处理)。您甚至可能需要一个检查其他记录并将小行集作为一组进行处理的过程,例如将多个数据段拼接在一起但可能已经无序到达。通过一次在一个分区内一次操作较少的记录,这种类型的过程将更具可扩展性,并使数据实时更接近您期望的完成状态,而不是总是等待处理一些数据。 / p>