Исходя из вышеприведенного изображения, есть определенные таблицы, которые я хочу видеть во внутренней базе данных (справа). Другие таблицы, которые я хочу реплицировать во внешней базе данных.
В действительности существует только один набор значений, которые НЕ ДОЛЖНЫ реплицироваться. Остальная часть базы данных может быть реплицирована. По сути, столбцы фактической цены в таблице prices
нельзя реплицировать по всему. Он должен оставаться во внутренней базе данных.
Поскольку поставщики являются внешними по отношению к сети, они не имеют доступа к внутреннему приложению.
Мой план состоит в том, чтобы создать реплицированную версию того же приложения и позволить поставщикам отправлять предложения и выбирать товары.
Допустим, реплицированные таблицы имеют как минимум quotations
и quotation_line_items
. Эти таблицы должны быть доступны для записи (с точки зрения данных для INSERT, UPDATE и DELETE) в как во внешней базе данных, так и во внутренней базе данных . Следовательно, в обеих базах данных данные в таблицах quotations
и quotation_line_items
доступны для записи и должны реплицироваться в обоих направлениях.
Данные в других таблицах будут реплицироваться в одном направлении (от внутреннего к внешнему), за исключением столбцов фактических исходных цен в таблице prices
.
Таблица quotation_line_items
будет иметь столбец price_id
. Однако исходные значения цен в таблице prices
не должны отображаться во внешней базе данных.
В конечном счете, я хочу, чтобы данные были согласованы для реплицируемых таблиц в обеих базах данных. Я в порядке с синхронной репликацией, поэтому небольшая задержка (скажем, пара секунд для операций записи) в порядке.
Я наткнулся на пгл. https://github.com/2ndQuadrant/pglogical/tree/REL2_x_STABLE
и у них есть понятие ИЗДАТЕЛЬ и ПОДПИСЧИК.
Я не могу сказать на основании файла readme, кто будет выступать в качестве издателя и подписчика, и как настроить его для моей ситуации.