Лучший способ установить hstore на несколько схем в базе данных Postgres?
Я работаю над проектом, который нужно использовать hstore
на несколько схем.
"Публичная" схема, где hstore
расширение устанавливалось не везде, потому что моя область не ищет в "public". На некоторых пробах я создал расширение в схеме под названием "hstore" и использовал схему в каждой доступной области (пути поиска).
основываясь на этом, у меня есть несколько вопросов:
можно ли создать схему только для продление? Или лучше создать расширение на каждой отдельной схеме (например,
customer_1
,customer_2
и так далее...)?влияет ли создание расширения в отдельной схеме на то, где хранятся данные? Я использую несколько схем, чтобы упростить резервное копирование / восстановление, и действительно не хочу, чтобы pg хранил все мои
hstore
данные в скрытой таблице (например,pg_large_objects
для blobs) на одной схеме.
2 ответов
Не разрешается устанавливать расширения несколько раз для каждой базы данных. Цитата руководство CREATE EXTENSION
:
помните, что расширение само по себе не считается внутри любого схема: расширения имеют неквалифицированные имена, которые должны быть уникальными базы данных. Но объекты, принадлежащие расширению, могут находиться внутри схем.
если вы не хотите включать public
в своем search_path
установите "публичных" расширения в выделенную схему (пример:extensions
). Я бы использовал одну схему для всех из них, а не отдельную схему для каждого расширения. их довольно много.
CREATE EXTENSION
предлагает возможность установки на существующую схему по вашему выбору:
CREATE EXTENSION hstore SCHEMA extensions;
и убедитесь, что схема включена в search_path
пользователей, которые могут захотеть его использовать.
хранение данных не зависит от схемы, в которой находится расширение.