pg入门2—pg中的database和schema有什么区别

打印 上一主题 下一主题

主题 934|帖子 934|积分 2806

在 PostgreSQL(简称 PG)和 MySQL 中,Database 和 Schema 是两个差别层次的概念,而在 MySQL 中,Database 和 Schema 经常被混用。通过连合这两种数据库的设计,我们可以更清晰地明白它们之间的区别。
1. PostgreSQL 中的 Database 和 Schema

Database(数据库):



  • 作用: PostgreSQL 的 Database 是一个独立的存储实体,拥有独立的元数据、表、视图、函数等。
  • 隔离性: 每个数据库是完全独立的,数据库之间的数据和表无法直接相互访问。即便是在同一个 PostgreSQL 实例下,差别数据库的表也是互相隔离的,无法跨数据库直接实行查询。
  • 连接方式: 用户必要单独连接到一个数据库实例内的某个具体数据库,才能对其中的对象进行操作。
Schema(模式):



  • 作用: Schema 是数据库中的逻辑分组,用于构造数据库对象(如表、视图、函数等)。它充当定名空间的角色,使得同一数据库中的差别 schema 可以拥有同名的对象(如表),而不会发生冲突。
  • 隔离性: Schema 提供的是逻辑上的分离,而不是物理隔离。同一数据库内的多个 schema 可以通过 SQL 语句跨 schema 进行操作,只需使用 schema.object_name 的语法来指定具体的 schema。
  • 典型场景: 多个业务模块的数据可以在同一个数据库中使用差别的 schema 进行管理和隔离。
2. MySQL 中的 Database 和 Schema



  • Database 和 Schema 是同义词: 在 MySQL 中,Database 和 Schema 本质上是同一个概念,只是名称差别。MySQL 没有像 PostgreSQL 那样明确的 schema 概念。在 MySQL 中,创建一个数据库等同于创建一个 schema,二者是可以交换的。
  • 作用: MySQL 的数据库或 schema 主要用于逻辑构造数据表、视图等对象。在 MySQL 中,数据库是数据库对象(如表)的容器。
  • 隔离性: MySQL 数据库之间也是完全隔离的,类似于 PostgreSQL 的 Database 隔离性。差别数据库之间的表无法直接跨数据库查询。不外 MySQL 可以通过连合查询或设置 跨数据库访问权限 来实现数据库间的数据交互。
3. PostgreSQL 和 MySQL 的主要区别

特性PostgreSQL (Database)PostgreSQL (Schema)MySQL (Database/Schema)概念层次实例中的顶层数据存储单位数据库内部的逻辑定名空间实例中的顶层数据存储单位隔离性数据库之间完全隔离Schema 之间逻辑隔离,物理不隔离数据库之间完全隔离定名冲突差别数据库间定名无冲突同一数据库内 schema 可用来避免冲突数据库间定名无冲突跨Schema/Database访问无法跨 Database 查询数据可以跨 Schema 查询数据可以跨数据库访问(通过授权或使用全限定名)典型应用用于项目或应用级别的隔离用于数据库内部的逻辑分组和模块化用于项目或应用级别的隔离 4. 对比示例

PostgreSQL 示例

假设你有一个 PostgreSQL 实例:


  • Database: company_db

    • Schema 1: sales(贩卖部门)
    • Schema 2: hr(人力资源部门)

你可以在 sales schema 中创建一个 employees 表,也可以在 hr schema 中创建一个同名的 employees 表。访问时必要指定 schema,如 sales.employees 或 hr.employees,但它们都位于同一个数据库 company_db 中。
MySQL 示例

假设你有一个 MySQL 实例:


  • Database(也称作 Schema): company_sales(贩卖部门)

    • employees 表

  • Database: company_hr(人力资源部门)

    • employees 表

在 MySQL 中,company_sales.employees 和 company_hr.employees 位于两个差别的数据库,隔离性类似于 PostgreSQL 的 Database 层。
5. 总结



  • PostgreSQL 中,Database 是物理隔离的顶级容器,而 Schema 是数据库内的逻辑分组单位。
  • MySQL 中,Database 和 Schema 是同一个概念,用来构造和隔离数据表等对象,没有 PostgreSQL 中类似的 schema 概念。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

东湖之滨

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表