Запускайте хранимые процедуры VoltDB через равные промежутки времени от VoltDB - PullRequest
0 голосов
/ 02 мая 2018

Есть ли способ выполнять хранимые процедуры VoltDB через регулярные промежутки времени или процедуру сохранения расписания для запуска в определенное время ?

Я изучаю VotlDB для перевода продукта с RDBMS на VotlDB . Наша продукция написана на языке Java.

Большая часть запроса может быть перенесена в хранимые процедуры VoltDB. Но в нашем продукте есть работа cron в oracle, которая выполняется через равные промежутки времени. Сейчас я не нахожу таких возможностей в VoltDB.

Я знаю, что хранимые процедуры VoltDB могут вызываться из приложения через регулярные промежутки времени, но наш продукт развертывается в режиме Active-Active, в этом случае все приложения будут вызывать хранимые процедуры через равные промежутки времени, и это не является хорошим решением или иным образом. , нам нужно разработать какой-то механизм для запуска процедуры только из одного экземпляра.

так что было бы хорошо, если бы я получил функцию задания cron от VoltDB .

1 Ответ

0 голосов
/ 02 мая 2018

Я работаю в VoltDB. В настоящее время в VoltDB нет такой функции, как, например, DBMS_JOB в Oracle.

Вы, безусловно, можете использовать задание cron на одном из серверов в кластере или на каком-либо другом сервере в вашей сети, который может вызывать sqlcmd для запуска сценария или вывода отдельных операторов SQL или выполнения команд процедур через sqlcmd для базы данных. Обеспечение высокой доступности рабочих мест в cron является общей проблемой. Вам могут пригодиться эти другие обсуждения:

Вы также можете посмотреть что-то вроде rcron .

При преобразовании из СУБД в VoltDB следует соблюдать особую осторожность, так как VoltDB оптимизирован для параллельной обработки множества небольших транзакций во многих разделах. Несмотря на то, что архитектура сериализованного выполнения для каждого раздела превосходна для многих рабочих и потоковых рабочих нагрузок, она не предназначена для выполнения массовых операций со многими строками за раз, особенно для транзакций, которые должны выполнять записи во многие строки, которые могут находиться в разных разделах в одной транзакции. ,

Если у вас есть периодическое задание, которое выполняет что-то вроде «обработки всех новых строк, соответствующих некоторым критериям», вы можете обнаружить, что эта транзакция медленная и каждый раз, когда она выполняется, она может задерживать другие части рабочей нагрузки, особенно если во многих строках есть накоплена. Было бы больше «Пути VoltDB» заменить простую инструкцию INSERT, которую вы можете использовать для загрузки данных (для последующей обработки запланированным заданием), процедурой, которая вставляет и немедленно обрабатывает строку данных. Возможно, вам даже понадобится процедура, которая проверяет другие записи и обрабатывает небольшие наборы строк в виде группы, например, склеивая сегменты данных, которые идут вместе, но, возможно, вышли из строя. Работая с меньшим количеством записей за раз в пределах одного раздела за раз, этот тип процедуры будет более масштабируемым и будет держать данные ближе к желаемому конечному состоянию в реальном времени, а не всегда иметь некоторые данные, ожидающие обработки.

...