Может ли Apache инициировать обновление, когда сторонняя база данных SQL Server что-то напрямую изменила?

#ignite #gridgain

Вопрос:

Могу ли я получить несколько советов о том, можно ли действовать так, как описано ниже?

  • Данные SQL Server загружаются в кластер Ignite
  • Данные в SQL Server были изменены.

-> Есть ли какой-либо другой способ отразить эти измененные данные без перезагрузки данных с SQL Server?

При использовании в качестве кэша перед базой данных, когда изменения вносятся непосредственно в базу данных, не проходя через кластер Ignite, могут ли уже загруженные данные кэша быть непосредственно отражены в кэше Ignite? Можно ли задать только изменяемое значение без повторной загрузки данных?

Если возможно, какую часть я должен установить? Пожалуйста.

Ответ №1:

Я полагаю, что реальный вопрос заключается в том, как сначала распространить изменения, примененные к SQL Server, на кластер Apache Ignite. И короткий ответ — вам нужно сделать это самостоятельно, т. Е. вам нужно реализовать некоторую логику синхронизации между двумя базами данных. Это не должно быть сложной задачей, если большинство обновлений данных происходит через Ignite, а первые обновления SQL Server встречаются редко.

Что касается общего подхода, вы можете проверить реализацию шаблона сбора данных об изменениях (CDC). Есть несколько статей о том, как вы можете достичь этого с помощью внешних инструментов, например, CDC Между MySQL и GridGain С помощью Debezium или этого видео.

Стоит отметить, что Apache Ignite в настоящее время работает над собственной собственной реализацией CDC.

Ответ №2:

Взгляните на интеграцию внешнего хранилища Ignite и функции сквозного чтения/записи. См.: https://ignite.apache.org/docs/latest/persistence/external-storage
и https://ignite.apache.org/docs/latest/persistence/custom-cache-store

примеры здесь: https://github.com/apache/ignite/tree/master/examples/src/main/java/org/apache/ignite/examples/datagrid/store