В настоящее время я устанавливаю новую версию PostGIS 2.0.2 и PostgreSQL 9.1.6 в Ubuntu. Недавно я наткнулся на некоторую информацию о том, что использование публичной схемы для хранения всех данных не очень хорошая идея.
По этой причине я создал схему с именем data и стал владельцем, но это хорошая идея?
Мои опасения:
- Помимо установки владельца, мне может понадобиться обратить внимание на вещи на вкладке Привилегии при создании этой новой схемы (через pgAdmin III);
- Я не могу получить те же преимущества, храня свои данные в общедоступной схеме и выгружая все данные в отдельную схему перед выполнением резервного копирования / восстановления (это позволит сэкономить несколько нажатий клавиш при использовании ogr2ogr); и
- У меня могут возникнуть проблемы из-за отсутствия таблиц и представлений PostGIS по умолчанию в моей новой схеме данных (они находятся в общедоступной схеме в одной базе данных).
public
входящими в схему. Другой вопрос касается установки объектов расширения PostGIS в схему, отличную отpublic
. Это две разные вещи!Ответы:
Это теперь решается на официальном сайте на странице под названием Переместить расширение PostGIS в другую схему . Правильный метод - установить расширение в
public
. Это единственный вариант. Расширение больше не поддерживает перемещение. Далее нужно выполнить следующие команды (скопировано с сайта),источник
data
схеме (они находятся вpublic
схеме в одной и той же базе данных)». Этот ответ полезен, и это то, что я искал, но он не имеет прямого отношения к вопросу.Когда вы пространственно включаете базу данных PostGIS, соответствующие функции, таблица SRS и представления помещаются в общедоступную схему, как вы заявляете. Это не означает, что все или любые ваши собственные пространственные таблицы должны быть в одной общедоступной схеме. PostGIS по-прежнему будет работать со всеми пространственными данными в «новых» схемах.
Фактически, я обычно помещаю свои таблицы для приложений в отдельную схему. Таким образом, если вам необходимо обновить основную версию до PostGIS, вы можете сохранить резервные копии и восстановление таблиц для своего приложения в качестве отдельной процедуры от процедуры, заменяющей пространственные инструменты.
Так что, я думаю, у тебя все хорошо. Наконец, если вы еще этого не сделали, рекомендуется добавить новую схему в путь поиска:
ALTER DATABASE my_db SET search_path = gc, public;
источник
public
? Добавление данных с помощью, например.shp2psql
по -test.table
прежнему ставит данныеpublic
?Одна из возможных организационных стратегий, которую вы можете построить с помощью схем, - разрешить пользователю безудержно работать в одной схеме, но не сможет испортить ситуацию в другой. Поэтому, если вы хотите использовать схемы таким способом, это можно сделать на вкладке привилегий pgAdmin. Но это не обязательно, так что если вы просто хотите поддерживать одинаковые привилегии для нескольких схем, это нормально.
Основываясь на статьях, на которые вы ссылаетесь, проблема с тем, чтобы держать все в открытом доступе, заключается в том, что при сбрасывании данных вы можете смешивать системные таблицы и отношения с вашими данными. Если вы переместите все свои данные в новую схему, вам больше не придется об этом беспокоиться.
Не беда, вообще. (Для доказательства обратите внимание, что вам не нужно указывать public.spatial_ref_sys, когда вы хотите выполнить поиск в таблице SRS.)
источник
Еще один совет (возможно, вы уже сталкивались с этим). Вы, вероятно, захотите добавить схему «data» в путь поиска пользователя по умолчанию. Что-то вроде:
Что касается вашей точки 2, иногда вам нужно восстановить, когда у вас больше нет доступа к исходной БД. (Это одна из причин создания резервных копий ...) поэтому у вас может не быть возможности переместить ваши данные в отдельную схему, когда она вам действительно понадобится.
источник
Мы используем открытую схему для временного анализа / результатов таблицы разработчиков, а затем переходим к более организованным схемам (папкам?) Для постоянного использования.
источник