PostgreSQL教程--逻辑结构:实例、数据库、schema、表之间的关系
mba什么时候出成绩1 PG的逻辑结构
PG的逻辑结构详见下图:
北京英孚教育怎么样第⼀层是实例(Instance)。
好男人英文第⼆层是数据库(Databa);⼀个实例下有多个数据库;每个数据库之间是完全独⽴的。
第三层是Schema;数据库下⾯有多个Schema;其中“public” 是数据库创建时产⽣的。
每个Schema下⾯可以创建表,视图,索引,函数,序列,物化视图,外部表等等。
pg_class记录表和⼏乎所有具有列或者像表的东西。这包括索引(但还要参见pg_index)、序列(但还要参见pg_quence)、视图、物化视图、组合类型和TOAST表,参见relkind。
实践报告格式此表记录了表对应的表空间、命名空间、但未记录此表属于哪⼀个数据库
注意:
在PostgreSQL每个数据库是完全独⽴的;所以访问同⼀个实例下其他数据库需要借⽤ 或者)。
在PostgreSQL同⼀实例下,不能直接访问其它数据库【MySQL可以,因为MYSQL跟PostgreSQL逻辑结构不⼀样,MYSQL实例中的数据库相当于PostgreSQL的第三层的Schema】
2 PG数据库中的Schema
卜居通过系统表pg_databa可以查到数据库,通过系统表pg_class可以查到数据库object。
⽽pg_databa、pg_class存放在⼀个名为pg_catalog的Schema下。其中pg_catalog是系统级的schema,⽤于存储系统函数和系统元数据、⽽每个 databa 创建好后,默认会有3个Schema。
comet
pg_catalog: ⽤于存储Postgresql系统⾃带的函数、表、系统视图、数据类型转换器、数据类型定义等元数据
information_schema: ⽤于存储所需求提供的元数据查询视图, ⽬的是以符合ANSI SQL规范,可单独删除
public: ⽤于存储⽤户创建的数据表。不建议项⽬的表存放在public下,原因如下:奇异恩典英文版
是数据安全;
表存放混乱
不利于后期维护等等
查看隐藏的schema
lect table_schema from information_schema.tables group by table_schema;
葫芦丝学习班3 PG数据库中的catalog
新建⼀个数据库会在表空间对应的⽬录下创建⼀个 oid(数据库oid)的⽬录;⽤于存放这个数据库对应的数据库⽂件。
PG同实例下数据库之间不仅物理结构完全独⽴,逻辑结构也是完全独⽴
查询数据库的oid
在数据库存储⽬录查看数据,21338就是数据库的oid /home/postgres_data/ba/21338
查询table catalog, 名称就是数据库名称
--数据库id
lect oid, datname from pg_databa where datname='test';
-- 查询table catalog
lect table_catalog from information_schema.tables group by table_catalog;
每个数据库的pg_class是同⼀个吗?
通过下⾯的验证,结果是:
在逻辑结构上;同实例下每个数据库是完全独⽴;表是在存放在同库名的catalog下;例如nacos数据库的表存放在nacos的catalog 下,可以把catalog理解为databa。
在物理结构上;同实例下每个数据库的pg_class对应的数据⽂件也是独⽴存放的。
每个 databa 创建时;会默认为库创建pg_catalog/information_schema
参考英语社区
布基纳法索英文