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

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.mrgr.cn/news/30536.html

相关文章:

  • 【资料分析】刷题日记2
  • 图书管理系统(面向对象的编程练习)
  • 【STL】priority_queue 基础,应用与操作
  • VirtualBox增加磁盘并给docker用
  • shell常用命令
  • Qwen 2.5:阿里巴巴集团的新一代大型语言模型
  • 二进制补码及与原码的互相转换方法-成都仪器定制
  • web - JavaScript
  • Snowflake怎么用?
  • MacOS安装homebrew,jEnv,多版本JDK
  • microchip中使用printf给AVR单片机串口重定向
  • Goland滑动窗口
  • Linux安装、Nginx反向代理、负载均衡学习
  • Linux 线程控制
  • 【分立元件】案例:新人加了个TVS管为什么可能导致系统不能正常工作
  • python 绘制 y=x^3 图像
  • 2024年华为杯广东工业大学程序设计竞赛 B.你是银狼(反悔贪心)
  • 我的创作纪念日-20240919
  • 基于三维地籍的全生命周期“一码管地”
  • 八股文-JVM