运行 VoltDB 定期从 VoltDB 存储过程
Run VoltDB stored procedures at regular interval from VoltDB
有没有办法定期执行 VoltDB 存储过程或在特定时间运行安排存储过程?
我正在探索 VotlDB 以将产品从 RDBMS 转移到 VotlDB。输出写成 java.
大部分查询都可以迁移到 VoltDB 存储过程中。但是在我们的产品中,我们在 oracle 中有定期执行的 cron 作业。现在我在 VoltDB 中找不到这样的功能。
我知道可以定期从应用程序调用 VoltDB 存储过程,但我们的产品以双活模式部署,在这种情况下,所有应用程序都会定期调用存储过程,这不是一个好的解决方案否则,我们必须开发一些机制来仅从一个实例 运行 过程。
所以如果我从 VoltDB 获得 cron 作业功能就好了。
我在 VoltDB 工作。目前 VoltDB 中没有这样的功能,例如 Oracle 中的 DBMS_JOB。
您当然可以在集群中的一台服务器上使用 cron 作业,或者在您网络中的其他服务器上使用 cron 作业,这些服务器可以调用 sqlcmd 来 运行 脚本或回显单个 SQL 语句或者通过sqlcmd对数据库执行过程命令。使 cron 作业高度可用是一个普遍的问题。您可能会发现这些其他讨论有帮助:
- How to convert Linux cron jobs to "the Amazon way"?
- https://www.reddit.com/r/linuxadmin/comments/3j3bz4/run_cronjob_only_on_one_node_in_cluster/
您也可以查看类似 rcron 的内容。
从 RDBMS 转换为 VoltDB 时要注意的一件事是,VoltDB 针对跨多个分区并行处理许多小事务进行了优化。虽然每个分区的序列化执行架构在许多操作和流式工作负载方面表现出色,但它并非设计用于一次对多行执行批量操作,尤其是需要对多个行执行写入的事务,这些行可能位于一个事务中的不同分区中.
如果你有一个周期性的工作做一些像“处理所有满足某些条件的新行”这样的事情,你可能会发现这个事务很慢并且每次它 运行s 它可能会延迟其他部分工作量,尤其是在积累了很多行的情况下。用插入并立即处理数据行的过程替换您可能用来摄取数据(稍后由预定作业处理)的简单 INSERT 语句将更像是“VoltDB 方式”。您甚至可能需要一个过程来检查其他记录并将一小组行作为一个组来处理,例如,将一起出现但可能乱序到达的数据段拼接在一起。通过一次在一个分区内对较少的记录进行操作,这种类型的过程将更具可扩展性,并且可以使数据实时更接近您想要的完成状态,而不是总是有一些数据等待处理。
有没有办法定期执行 VoltDB 存储过程或在特定时间运行安排存储过程?
我正在探索 VotlDB 以将产品从 RDBMS 转移到 VotlDB。输出写成 java.
大部分查询都可以迁移到 VoltDB 存储过程中。但是在我们的产品中,我们在 oracle 中有定期执行的 cron 作业。现在我在 VoltDB 中找不到这样的功能。
我知道可以定期从应用程序调用 VoltDB 存储过程,但我们的产品以双活模式部署,在这种情况下,所有应用程序都会定期调用存储过程,这不是一个好的解决方案否则,我们必须开发一些机制来仅从一个实例 运行 过程。
所以如果我从 VoltDB 获得 cron 作业功能就好了。
我在 VoltDB 工作。目前 VoltDB 中没有这样的功能,例如 Oracle 中的 DBMS_JOB。
您当然可以在集群中的一台服务器上使用 cron 作业,或者在您网络中的其他服务器上使用 cron 作业,这些服务器可以调用 sqlcmd 来 运行 脚本或回显单个 SQL 语句或者通过sqlcmd对数据库执行过程命令。使 cron 作业高度可用是一个普遍的问题。您可能会发现这些其他讨论有帮助:
- How to convert Linux cron jobs to "the Amazon way"?
- https://www.reddit.com/r/linuxadmin/comments/3j3bz4/run_cronjob_only_on_one_node_in_cluster/
您也可以查看类似 rcron 的内容。
从 RDBMS 转换为 VoltDB 时要注意的一件事是,VoltDB 针对跨多个分区并行处理许多小事务进行了优化。虽然每个分区的序列化执行架构在许多操作和流式工作负载方面表现出色,但它并非设计用于一次对多行执行批量操作,尤其是需要对多个行执行写入的事务,这些行可能位于一个事务中的不同分区中.
如果你有一个周期性的工作做一些像“处理所有满足某些条件的新行”这样的事情,你可能会发现这个事务很慢并且每次它 运行s 它可能会延迟其他部分工作量,尤其是在积累了很多行的情况下。用插入并立即处理数据行的过程替换您可能用来摄取数据(稍后由预定作业处理)的简单 INSERT 语句将更像是“VoltDB 方式”。您甚至可能需要一个过程来检查其他记录并将一小组行作为一个组来处理,例如,将一起出现但可能乱序到达的数据段拼接在一起。通过一次在一个分区内对较少的记录进行操作,这种类型的过程将更具可扩展性,并且可以使数据实时更接近您想要的完成状态,而不是总是有一些数据等待处理。