分散数据库结构

时间:2012-01-11 16:39:14

标签: postgresql database-design database-schema

虽然这个问题很喜欢PostgreSQL,但它仍然是一个普通的DB问题。

我一直对 schema 一词感到好奇,因为它与数据库有关。最近,我们转而使用PostgreSQL,其中该术语对底层数据库结构具有实际意义。

在PostgreSQL-land中,分散结构如下:

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

因此,表[foo]的FQDN为fizz.buzz.foo

我理解“数据库”是表的逻辑分组。例如,一个组织可能有一个“域”数据库,其中所有POJO / VO都是持久的,一个“订单”数据库,其中存储了所有与销售相关的信息,以及一个“日志记录”数据库,其中所有日志消息都被发送以供将来分析,等

在数据库和它的表之间引入这个“模式”构造让我非常困惑,并且对于像我这样的新手来说,PostgreSQL文档有点过于沉重(而且缺乏很好的例子)。 / p>

我想知道是否有人能给我一个外行人的描述,不仅仅是这个“架构”构造在PostgreSQL领域内(以及它如何将数据库与表格联系起来),但我想知道这对数据库意味着什么结构一般。

提前致谢!

2 个答案:

答案 0 :(得分:2)

将模式视为名称空间。我们可以使用它们对表进行逻辑分组(例如People模式)。此外,我们可以为该架构分配安全性,以便我们可以允许某些人查看Customer架构,但不能查看Employee架构。这使我们能够在对象级别之上但在数据库级别之下具有安全性控制的粒度。

安全性可能是使用模式的最重要原因,但我也看到它们也用于逻辑分组。这取决于你需要它们。

答案 1 :(得分:0)

晚了聚会,但是..

例如,我使用模式将表分成多个组,供共享几个表的不同应用程序使用。

  • users
  • application1
  • application2

在这里,如果我们使用app1登录,则会看到users + application1;如果我们登录到app2,则会看到usersapplication2。因此,我们的用户数据可以在两者之间共享,而无需将app1用户暴露给app2数据。这也意味着超级用户可以对两组数据集进行查询。