更改架构' PostgreSQL数据库中的结构

时间:2014-10-16 00:13:41

标签: sql postgresql multi-tenant

我有一个带有一些模式的Postgres数据库(都具有相同的结构),我想知道是否有可能更改同一数据库中所有模式的结构(表名,新列等)。是否可能或数据库中模式的目的是什么?

感谢。

1 个答案:

答案 0 :(得分:2)

我将专注于问题的后半部分,因为我认为它会回答上半部分(而且我不确定我理解上半场)。

  

数据库中模式的目的是什么?


当我第一次从MySQL切换到PostgreSQL时,这让我很困惑。 Postgres模式与MySQL数据库基本相同。事实上,根据MySQL Reference Manual

  

在MySQL中,物理上 架构 数据库 同义。


这引出了什么是PostgreSQL数据库的问题呢?来自PostgreSQL Documentation

  

更准确地说,数据库是模式的集合,模式包含表,函数等。因此,完整的层次结构是:服务器,数据库,模式,表(或某种其他类型的对象,如函数)


所以PostgreSQL数据库本质上是一个模式集合?看起来有点无意义,为什么我们需要层次结构中的那一步?我们来看一下PostgreSQL schema的文档:

  

PostgreSQL数据库群集包含一个或多个命名数据库。用户和用户组在整个群集中共享,但不跨数据库共享其他数据。与服务器的任何给定客户端连接只能访问单个数据库中的数据,即连接请求中指定的数据。

     

数据库包含一个或多个命名的架构,而这些架构又包含表格。模式还包含其他类型的命名对象,包括数据类型,函数和运算符。相同的对象名称可以在不同的模式中使用而不会发生冲突;例如,schema1myschema都可以包含名为mytable的表。与数据库不同,模式不是严格分开的:用户可以访问他所连接的数据库中任何模式中的对象,如果他有权这样做的话。


因此,在PostgreSQL中,模式包含表,函数等。数据库管理用户/组连接以及特定模式集群的访问/角色。通常,我在一个数据库下工作,并将信息分解为模式以分割信息。