Децентрализация структуры базы данных - PullRequest
1 голос
/ 11 января 2012

Хотя этот вопрос интересует PostgreSQL, он все еще является общим вопросом о БД.

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

В PostgreSQL-land децентрализованная структура выглядит следующим образом:

DB Server (`some-server.com:5432`)
    >> Database (`fizz`)
        >> Schema (`buzz`)
            >> Table (`foo`)

Таким образом,Полное доменное имя для таблицы [foo] равно fizz.buzz.foo.

Я понимаю, что «база данных» - это логическая группа таблиц.Например, организация может иметь базу данных «домен», в которой сохраняются все POJO / VO, базу данных «заказы», ​​где хранится вся информация, связанная с продажами, и базы данных «журналирования», где все сообщения журнала отправляются для будущего анализа,и т. д.

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

Мне интересно, кто-нибудь может дать мне непрофессиональное описание не только того, что эта конструкция "схемы" находится в сфере PostgreSQL (и как она связывает базы данных с таблицами), но я 'Мне интересно, что это значит для структур баз данных в целом.

Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 11 января 2012

Думайте о схемах как о пространствах имен.Мы можем использовать их для логической группировки таблиц (таких как People схема).Кроме того, мы можем назначить безопасность для этой схемы, чтобы мы могли позволить некоторым людям просматривать схему Customer, но не схему Employee.Это позволяет нам иметь гранулярность контроля безопасности чуть выше уровня объекта, но ниже уровня базы данных.

Вероятно, безопасность является наиболее важной причиной для использования схем, но я видел, что они используются для логических группЧто ж.Это зависит только от того, для чего они вам нужны.

0 голосов
/ 02 октября 2018

Поздно на вечеринку, но ..

Я использую схемы для разделения таблиц на группы, которые используются различными приложениями, например, с несколькими таблицами.

  • users
  • application1
  • application2

Здесь, если мы войдем в систему с app1, мы увидим users + application1; если мы войдем в app2, мы увидим users и application2. Таким образом, наши пользовательские данные могут быть разделены между обоими, не подвергая пользователей app1 данным app2. Это также означает, что суперпользователь может выполнять запросы к обоим наборам данных.

...