postgresql 数据库对象

postgresql 数据库对象

  1. 服务

    1
    Postgresql是一种服务(守护进程)安装的.多个Postgresql服务可以运行于同一台服务器上,它们的端口不能重复,也不能共享同一个数据存储目录
  2. database

    1
    每个Postgresql服务可以包含多个独立的database
  3. schema

    1
    2
    3
    database的下一层逻辑结构就是schema.
    大多数对象是隶属于某个schema的,然后schema又隶属于某个database
    在创建database时,postgresql会默认自动为其创建一个名为public的schema
  4. catalog

    1
    2
    3
    4
    catalog是系统级的schema,用于存储系统函数和系统元数据
    每个database创建好后,默认会有两个catalog:
    * 一个名为pg_catalog,用于存储Postgresql系统自带的函数,表,系统视图,数据类型转换器以及数据类型定义等元数据
    * 一个是information_schema,用于存储ANSI标准中所需求提供的元数据查询视图
  5. 变量

    1
    变量是Postgresql统一配置机制(GUC)的一部分,是可以在多个级别设置的各种选项,这些级别包括服务级别,database级别以及其它级别
  6. 扩展包

    1
    2
    3
    开发人员可以通过该机制将一组相关的函数,数据类型,数据类型转换器,用户自定义索引,表以及GUC等对象打包成一个功能扩展包,该扩展包可以整体安装或整体删除
    安装扩展包可以指定到对应的database,而不必对所有database都安装一遍
    安装扩展包可以指定安装到哪个schema,若不指定,会默认安装到public schema中
  7. 1
    2
    3
    4
    5
    postgresql中,表先属于某个schema,schema又属于某个database,这样就构成了一个三级存储结构
    postgresql的表支持两种强大的功能:
    * 表继承,即一张表可以有父表,又可以有子表
    * 创建一张表的同时,系统会自动为此表创建一种对应的自定义数据类型.
    换句话说,你可以将某个完整的数据结构定义为一张表,然后将该表用作另一个表的一个列
  8. 外部表和外部数据封装器

    1
    2
    3
    外部表是一些虚拟表,通过它们可以直接在本地数据库中访问来自外部数据源的数据.只要数据映射关系配置正确,那么外部表的用法与普通表没有任何区别.
    外部表支持映射到以下类型的数据源:CSV文件,另一个服务器的Postgresql表,SQL Server,Oracle这些异构数据库中的表,redis这样的nosql数据库
    外部表映射关系的建立是通过配置外部数据封装器(FDW)实现的.FDW是Postgresql和外部数据源之间的"桥梁",可实现两边数据的互联互通
  9. 表空间

    1
    2
    3
    表空间是用于存储数据的物理空间
    Postgresql将用于物理存储的表空间和用于逻辑存储的schema分开管理,二者之间无耦合关系.
    这样就很容易在不影响业务逻辑的情况下,将database甚至是单张表和索引在不同物理驱动器之间进行移动
  10. 视图

    1
    大多数关系型数据库都支持视图,通过视图可以大大简化复杂的查询逻辑,另外也可以通过对视图执行更新操作来修改其基表数据
  11. 函数

    1
    2
    postgresql中函数执行后的返回结果可以是一个标量值或几个记录集
    可以在函数中对表数据进行修改,其他数据库对于这种会修改表记录的函数一般称为存储过程
  12. 内置编程语言

    1
    2
    函数是以过程化语言(PL)编写的
    Postgresql默认支持三种内置编程语言: SQL,PL/pgSQL,C语言
  13. 运算符

    1
    运算符本质上是符号化的已命名函数,它需要一个或两个实参,底层有一个相应的函数来实现其运算逻辑
  14. 数据类型

    1
    Postgresql支持常见数据类型:整型,字符型,数组等等,同时还支持符合数据类型
  15. 数据类型转换器

    1
    2
    cast是数据类型转换器,就是将一种数据类型转换为另一种类型工具.
    转换器在其底层其实是通过调用函数来实现真正的转换逻辑的,Postgresql的独到之处在于支持用户自定义转换器,这样就可以改变系统默认的转换逻辑
  16. 序列

    1
    2
    3
    序列控制serial数据类型的自动递增
    在Postgresql中定义serial列时,postgresql会自动创建序列,但你很容易改变初始值,增量和下一个值
    因为序列是独立对象,索引多个表可以共用一个序列对象
  17. 行或记录

    1
    2
    行或记录这两个术语可以互换
    在Postgresql中,记录 这个概念可以脱离表独立存在
  18. 触发器

    1
    2
    触发器机制可以实现对数据修改事件的捕获,并在之后触发用户自定义操作行为
    触发器的触发时机是可实现的,可以是语句级触发或者记录级触发,可以是修改前触发也可以是修改后触发
  19. 规则

    1
    2
    规则是一种能够将一种动作替换为另一种动作的机制
    Postgresql内部就是使用此机制来实现视图的