暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

PostgreSQL 数据库对象(一)之基本对象

原创 lmj 2021-11-24
2315
  • DATABASE – 数据库

database server:一个或多个数据库instance 运行的一台物理机或虚拟机。
database cluster(数据库集簇):是多个数据库的集合,多个数据库是由一个运行着的数据库server中单个数据库instance管理的。
database instance:计算机资源的组合。
数据库集群:相对于mogdb来说,一套流复制就相当于一个数据库集群,一个数据库集群包含多个数据库instance。
一个数据库server 对应多个数据库instance,一个数据库instance 管理着一个数据库cluster,一个数据库cluster包含多个数据库。

- 创建数据库
```plsql
create database dbtest;
```
- 修改数据库:
```plsql
ALTER DATABASE name RENAME TO new_name 
ALTER DATABASE name OWNER TO { new_owner | CURRENT_USER | SESSION_USER } 
ALTER DATABASE name SET TABLESPACE new_tablespace 
ALTER DATABASE name SET configuration_parameter { TO | = } { value 	| DEFAULT }
```
更多修改数据库语法详见:`\h alter database`
- 删除数据库
```plsql
DROP DATABASE [IF EXISTS] name
```
  • SCHEMA – 模式

一个数据库包含一个或多个模式,模式中又包含了表、函数及操作符等数据库对象。创建新数据库时,PostgreSQL会自动创建名为public的模式。如果有几张表可以放在public模式下,如果有成千上万的表,则需放在不同的模式下。

例:

postgres=# create schema fist_schema ;
CREATE SCHEMA
postgres=# \dn
    List of schemas
    Name     |  Owner
-------------+----------
 fist_schema | postgres
 public      | postgres
(2 rows)
  • TABLE – 表

表是任何数据库的工作区。任何数据的操作都是在表的基础上进行
PostgreSQL表的优点:1)标识父表和子表,即表继承。这种层次结构简化了数据库设计,并可以在查询类似表时节省大量循环代码;2)创建表会自动生成一个附带的自定义数据类型。换句话说,可以将完整的数据结构定义为表,然后将其用作另一个表中的列。

PS:数据库 > 模式 > 表

  • TABLESPACE – 表空间

表空间实际上是为表指定一个存储的目录,表空间是数据的物理存储位置。
创建数据库时可以指定默认的表空间,这样以后在这个数据库中创建表、索引时就会自动存储到这个表空间指定的目录下。
PostgreSQL允许独立管理表空间,因此可以将数据库甚至单个表和索引移动到不同的表空间。

  • VIEW – 视图

视图就是由查询语句定义的虚拟表,对用户来说,看到的视图就如同一张真的表。从视图中看到的数据可能来自数据库中的一张或多张表,也可能来自外部,主要取决于视图的查询语句如何定义。
大多数关系数据库产品提供用于抽象查询的视图,并允许通过视图更新数据。PostgreSQL提供了相同的功能,并允许9.3及更高版本中的自动可更新单表视图,而无需额外编写规则或触发器即可使其可更新。对于涉及多个表的更复杂的逻辑或视图,仍然需要触发器或规则来使视图可更新。9.3版引入了物化视图,缓存数据以加速常用查询。

  • INDEX – 索引

索引是数据库中一种快速查询数据的方法。索引记录了表中一列或多列的值与其物理位置之间的对应关系,就好比一本书的目录,通过页码可以快速定位到要查询的内容。

  • 优点:加快对表中记录的查找或排序。唯一索引还可以起到唯一约束作用。
  • 缺点:索引会增加数据库的存储空间,插入和修改数据时索引要更新,所以会花费较多时间。

一般情况下创建索引时 PG 会锁定表以防止写入,然后对表做全表扫描,从而完成创建索引操作。在这个过程中,其他用户仍然可以读取表,但是插入更新删除等擦做会被阻塞,直到索引创建完毕。
PG支持并发创建索引(CONCURRENTLY),不长时间阻塞更新的情况下创建索引。如果在创建并发索引时被强行取消,会留下一个无效的索引,且这个索引仍然会导致更新变慢。

  • foreign table and foreign data wrapper – 外部表和外部数据包装器

PostgreSQL实现了部分的SQL/MED规定,允许我们使用普通SQL查询来访问位于PostgreSQL之外的数据。这种数据被称为外部数据。外部表是链接到PostgreSQL数据库外部数据的虚拟表。
外部数据可以在一个外部数据包装器的帮助下被访问,通过外部数据包装器(FDW)配置外部表。
配置链接后,可以像查询任何其他表一样查询它们。外部表可以链接到CSV文件、另一台服务器上的PostgreSQL表、不同产品(如SQL server或Oracle)中的表、NoSQL数据库(如Redis)甚至web服务(如Twitter或Salesforce)。
许多程序员已经为他们自由共享的流行数据源开发了FDW。也可以尝试创建自己的FDW。使用扩展框架安装FDW。安装后,pgAdmin将在名为“外部数据包装器”的节点下显示它们。

最后修改时间:2021-12-08 17:12:14
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论