1

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

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

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

我知道可以定期从应用程序调用 VoltDB 存储过程,但是我们的产品以 Active-Active 模式部署,在这种情况下,所有应用程序都会定期调用存储过程,这不是一个好的解决方案,否则,我们有开发某种机制以仅从一个实例运行程序。

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

4

1 回答 1

1

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

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

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

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

如果您有一个定期作业,例如“处理满足某些条件的所有新行”,您可能会发现此事务很慢,并且每次运行时都可能会延迟工作负载的其他部分,尤其是在累积了许多行的情况下。用插入并立即处理数据行的过程替换您可能用于摄取数据(稍后由计划作业处理)的简单 INSERT 语句将更像是“VoltDB 方式”。您甚至可能需要一个过程来检查其他记录并将一小组行作为一个组进行处理,例如将一起出现但可能无序到达的数据段拼接在一起。通过一次在一个分区内操作较少的记录,

于 2018-05-02T18:30:56.360 回答