Django OneToOneField на иностранном столе

Я пытаюсь настроить новый сервер с внешними таблицами (используя postgres_fdw), которые ранее не были внешними таблицами, и у меня есть некоторые поля OneToOneFields, указывающие на эти таблицы. Это не работает "из коробки" - OneToOneFields использует внешние ключи, а postgres_fdw не поддерживает внешние ключи для внешних таблиц.

Внешние таблицы находятся в базе данных только для чтения на том же сервере.

Есть ли простой способ заставить это работать?

1 ответ

Решение

После небольшого исследования я думаю, что ответ "не делай этого". Обработка внешних ключей для внешних таблиц не реализована, и любое решение, которое пыталось бы преодолеть этот разрыв, имело бы серьезные проблемы с производительностью и / или согласованностью.

pglogical выглядит как лучшее решение - вместо того, чтобы извлекать данные через postgres_fdw, реплицируйте таблицы в новую базу данных, чтобы они были локальными. Существуют и другие проекты для репликации только определенных таблиц, но pglogical включен в PostgreSQL 10.

Другие вопросы по тегам