当前位置: 首页 > article >正文

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

在 PostgreSQL(简称 PG)和 MySQL 中,DatabaseSchema 是两个不同层次的概念,而在 MySQL 中,DatabaseSchema 常常被混用。通过结合这两种数据库的设计,我们可以更清晰地理解它们之间的区别。

1. PostgreSQL 中的 DatabaseSchema

Database(数据库):
  • 作用: PostgreSQL 的 Database 是一个独立的存储实体,拥有独立的元数据、表、视图、函数等。
  • 隔离性: 每个数据库是完全独立的,数据库之间的数据和表无法直接相互访问。即便是在同一个 PostgreSQL 实例下,不同数据库的表也是互相隔离的,无法跨数据库直接执行查询。
  • 连接方式: 用户需要单独连接到一个数据库实例内的某个具体数据库,才能对其中的对象进行操作。
Schema(模式):
  • 作用: Schema 是数据库中的逻辑分组,用于组织数据库对象(如表、视图、函数等)。它充当命名空间的角色,使得同一数据库中的不同 schema 可以拥有同名的对象(如表),而不会发生冲突。
  • 隔离性: Schema 提供的是逻辑上的分离,而不是物理隔离。同一数据库内的多个 schema 可以通过 SQL 语句跨 schema 进行操作,只需使用 schema.object_name 的语法来指定具体的 schema。
  • 典型场景: 多个业务模块的数据可以在同一个数据库中使用不同的 schema 进行管理和隔离。

2. MySQL 中的 DatabaseSchema

  • DatabaseSchema 是同义词: 在 MySQL 中,DatabaseSchema 本质上是同一个概念,只是名称不同。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.employeeshr.employees,但它们都位于同一个数据库 company_db 中。

MySQL 示例

假设你有一个 MySQL 实例:

  • Database(也称作 Schema): company_sales(销售部门)

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

    • employees

在 MySQL 中,company_sales.employeescompany_hr.employees 位于两个不同的数据库,隔离性类似于 PostgreSQL 的 Database 层。

5. 总结

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

http://www.kler.cn/a/311280.html

相关文章:

  • Linux的基本指令(二)
  • 学习记录:js算法(九十):N皇后
  • CUDA系统学习之一软件堆栈架构
  • 【机器学习】均方误差根(RMSE:Root Mean Squared Error)
  • C++:lambda表达式
  • MFC图形函数学习06——画椭圆弧线函数
  • 各大搜索引擎提交入口
  • PCIe进阶之TL:TLP Digest Rules Routing and Addressing Rules
  • 什么?blender可以云渲染了!
  • Java 学习笔记(四)
  • 格力嵌入式面试题及参考答案
  • PCL 计算点云距离
  • 【iOS】——JSONModel源码
  • 泳池软管检测系统源码分享
  • Python的基础知识,帮助初学者快速上手
  • 鸿萌数据恢复服务:Mac 文件系统是如何影响 Mac 数据恢复的?
  • 文件格式转换:EXCEL和CSV文件格式互相转换
  • LabVIEW机械手视觉引导系统
  • 登录后继续执行方法
  • Spring Cloud全解析:服务调用之自定义Feign的配置
  • Python计算机视觉 第9章-图像分割
  • 卸载完mathtype后,删除word加载项中的mathtype
  • 避免死锁发生的策略
  • 几种手段mfc140u.dll丢失的解决方法,了解mfc140u.dll
  • 大数据组件详解:Spark、Hive、HBase、Phoenix 与 Presto
  • 数据结构-3.3.栈的链式存储实现