У меня есть мультитенантная база данных Postgresql, каждая схема которой принадлежит одному из наших клиентов (арендаторов).У каждого арендатора есть таблица с именем Messages
.Таким образом, CustomerX.Messages
содержит все сообщения, которые отправляются на CustomerX
.
. Все сообщения поступают через общую конечную точку и обрабатываются немного, чтобы определить, какой клиент должен получить сообщение.Таким образом, конвейер сообщений выглядит следующим образом с высокого уровня:
RAW MESSAGE (public.Messages)
|
|
[PROCESSING]
|
|
DECRYPTED MESSAGE (some_tenant.Messages)
Я хотел бы поместить «предварительно обработанные» сообщения в публичную таблицу, содержащую точный неизмененный ввод в систему.Пройдя через этап обработки, я бы хотел поместить последнее сообщение в таблицу CustomerX.Messages
клиента.
Мой вопрос
Как мне лучше всего это смоделировать?Мне нужно убедиться в следующем:
- В общей схеме есть ровно одно сообщение для каждого сообщения в публичной таблице.
- В общедоступной схеме есть только одно сообщение длякаждое сообщение в схеме клиента.
- По одному сообщению (либо в общедоступной, либо в схеме клиента) я могу найти другое.