Как настроить django с базой данных postgres в определенном табличном пространстве? - PullRequest
1 голос
/ 15 ноября 2011

Что вы ожидаете ::

settings.py

DATABASES = {
    'default': {
        'NAME': 'db_name',
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'USER': 'user',
        'PASSWORD': 'password',
        'HOST': 'host',
        'PORT': '5432',
        'DEFAULT_TABLESPACE': 'tablespace-name',
    }
}

Когда я использую DEFAULT_TABLESPACE, я ожидаю, что доступ будет предоставлен с использованием этого табличного пространства по умолчанию.Но не важно, что я там использую.Кроме того, если я явно использую db_tablespace в мета-классе моделей, он ничего не делает, насколько я могу судить.

Я также пробовал разных пользователей, но даже пользовательские postgres не работают.Если я определю db_table = "tablespace.tablename", он также не будет работать.

SQL, который будет работать:

select count(*) from schemaname.tablename

Я сделал резервную копию базы данных и восстановил ее локально,без создания табличного пространства.Хорошо импортирует и игнорирует табличное пространство.Тогда это просто работает.

Как настроить Django для postgres с табличными пространствами?Или имя схемы ??На самом деле я ничего не понимаю в этом, поэтому я надеюсь, что вы, ребята, сможете мне помочь.

См. Также: https://docs.djangoproject.com/en/dev/topics/db/tablespaces/

Использование Django 1.3.1, postgresql 8.4, psycopg2

Обновление:

Кажется, что "схема по умолчанию" не используется при использовании табличных пространств.Я попробовал некоторые тесты, и вот результаты с использованием ./manage.py dbshell:

Это работает на моей базе данных без табличных пространств, но не работает на базе данных с табличными пространствами:

select * from parameter;

Это работает на обеих базах данных:

select * from tablespace.parameter;

К сожалению, опция "DATABASE_SCHEMA" в настройках db не работает, как и "db_schema" в метаобъекте моделей.Так что теперь проблема немного яснее.У кого-нибудь есть решение этой проблемы?

1 Ответ

4 голосов
/ 15 ноября 2011

Схема и табличное пространство - это две разные вещи.

схема по сути является пространством имен. табличное пространство - это место в файловой системе.Схемы - это логичные вещи;Табличные пространства - это физические вещи.

Если вы пытаетесь сгруппировать кучу связанных таблиц (и, возможно, других именованных объектов) в пространстве имен, вам нужна схема.

Если выпытаясь увеличить скорость, помещая индексы на быстрый SSD-диск - диск, отличный от таблиц, представлений и т. д., требуется табличное пространство.

...