• Как лучше синхронизировать 20 бд?

    rozhnev
    @rozhnev
    Fullstack programmer, DBA, медленно, дорого
    Есть вариант использовать Kafka. В каждой из 20 баз данных устанавливается плагин который публикует все измения данных в Kafka. В Kafka, используя KSQL потоки данных объединяются в один и уже объединенный результирующий поток пишется в результирующую базу.
    Ответ написан
    Комментировать
  • Как лучше синхронизировать 20 бд?

    @Miron11
    Пишу sql 20 лет. Срок :)
    Архитектура синхронизации данных на самом деле содержится в структурах данных передовых создателей СУБД. Прекрасный пример для подражания - SQL Server.
    У него, начиная с версии 2008 или 2012 есть опция обратной проверки странички файла хранящих данные - сумма кратно усеченных значений из 8 полей. Если функция и значение разнятся, страничка объявляется испорченной, после чего включается механизм подгружающий копию той же странички с машины, где эта страничка "здоровая".
    Как разбить данные в таблице на блоки / странички, какая функция лучше для подсчета и как осуществить коммуникации между базами это наверное параметры, которые Вы можете подсказать. Если Вас заинтересовал этот подход, пожалуйста напишите, чтобы сделать полноценное решение.
    Ответ написан
    Комментировать
  • Как лучше синхронизировать 20 бд?

    @galaxy
    Я бы настроил logical replication нужной таблицы (таблиц)

    Только таблицы в DB1-21 придется положить в разные схемы, т.к. постгрес не умеет реплицировать в таблицу с другим именем. Т.е получится что-то типа:

    DB1 (schema1.table) -> DB21 (schema1.table)
    DB2 (schema2.table) -> DB21 (schema2.table)
    DB3 (schema2.table) -> DB21 (schema3.table)
    ...

    Дальше уже объединяйте данные в DB21 из schemaN.table как вам надо. Можно (вроде... честно говоря не проверял) сделать таблицы schemaN.table партициями общей таблицы, например. Или организовать materialized view.

    Также можно подключить таблицы с DB1-20 через foreign data wrapper и перекачивать с них данные (тут уже ваша задача написать скрипт/запрос так, чтобы ничего не пропадало и не тормозило).

    Это, конечно, все при условии, что у вас базы могут коннектиться друг к другу.
    Ответ написан
    Комментировать