PostgreSQL中的模式(Schema)

ops/2025/3/1 12:01:06/

        PostgreSQL 中的 模式Schema 是数据库内的一种逻辑分组机制,用于组织和管理表、视图、函数、索引等对象。它类似于操作系统中的目录结构,不同模式下的对象可以同名且相互独立,通过 模式名.对象名 的形式访问。以下是其核心作用与使用场景的总结:

一、模式的核心作用

  1. 命名空间隔离

    • 不同模式下的对象名称允许重复,例如 schema1.users 和 schema2.users 可以共存,避免命名冲突。
    • 默认情况下,所有用户共享 public 模式,但建议为不同用户或应用创建独立模式以隔离对象。
  2. 权限精细化管理

    • 可对模式单独授权,例如 GRANT USAGE ON SCHEMA schema1 TO user1,控制用户对特定模式的访问权限
    • 支持按模式批量管理对象权限,简化安全管理
  3. 数据逻辑组织

    • 将业务模块(如销售、人力资源)或功能单元(如日志、配置)划分到不同模式中,提升可维护性
    • 示例:在多租户系统中,每个租户可拥有独立模式,实现数据物理隔离
  4. 兼容性与扩展性

    • 第三方插件或应用可安装在独立模式中,避免与现有对象冲突
    • 支持动态调整搜索路径(SET search_path TO schema1, public),灵活切换操作上下文

二、典型应用场景

  1. 多租户系统
    为每个租户创建独立模式,存储其专属数据,通过权限控制实现数据隔离

  2. 模块化开发
    将不同功能模块(如用户管理、订单系统)分配到不同模式,便于团队协作和版本管理

  3. 历史数据归档
    将历史表迁移到独立模式(如 archive),通过调整搜索路径控制访问范围

  4. 第三方工具集成
    将 GIS 插件(如 PostGIS)或 BI 工具的表单独存放,避免与业务表混淆

三、操作示例

  1. 创建模式

    CREATE SCHEMA sales;  -- 创建名为 sales 的模式
    CREATE SCHEMA hr AUTHORIZATION admin;  -- 指定模式所有者

        2  模式访问对象

SELECT * FROM sales.orders;   -- 显式指定模式
SET search_path TO hr, public;  -- 设置默认搜索路径

        3权限控制

GRANT USAGE ON SCHEMA hr TO user1;  -- 允许 user1 使用 hr 模式
REVOKE CREATE ON SCHEMA public FROM PUBLIC;  -- 禁止所有用户在 public 模式创建对象

四、与数据库、表空间的关系

  • 数据库(Database):包含多个模式,不同数据库完全隔离,无法直接跨库访问
  • 表空间(Tablespace):定义物理存储路径,一个表空间可服务多个模式
  • 层级关系:表空间 → 数据库模式 → 表/视图等对象

总结

        模式是 PostgreSQL 中实现逻辑分组的核心机制,适用于多租户隔离、模块化开发、权限控制等场景。合理使用模式能显著提升数据库的可维护性和扩展性。如需更详细的操作指南,可参考官方文档。


http://www.ppmy.cn/ops/162229.html

相关文章

在Spark中如何配置Executor内存以优化性能

在Spark中,配置Executor内存以优化性能是一个关键步骤。以下是一些具体的配置方法和建议: 一、Executor内存配置参数 在Spark中,Executor的内存配置主要通过以下几个参数进行: --executor-memory 或 spark.executor.memory&…

汽车离合器片检具设计

摘 要 随着科学技术的飞速发展,检具作为产品质量检测的专用设备,其在机械制造行业,汽车行业,航空航天,国防以及科研领域等的使用越来越多,现已成为机械行业中不可或缺的检测设备。当前,检具的设…

Spark技术系列(一):初识Apache Spark——大数据处理的统一分析引擎

Spark技术系列(一):初识Apache Spark——大数据处理的统一分析引擎 1. 背景与核心价值 1.1 大数据时代的技术演进 MapReduce的局限性:磁盘迭代计算、中间结果落盘导致的性能瓶颈Spark诞生背景:UC Berkeley AMPLab实验室为解决复杂迭代计算需求研发(2010年开源)技术定位…

leetcode:2164. 对奇偶下标分别排序(python3解法)

难度:简单 给你一个下标从 0 开始的整数数组 nums 。根据下述规则重排 nums 中的值: 按 非递增 顺序排列 nums 奇数下标 上的所有值。 举个例子,如果排序前 nums [4,1,2,3] ,对奇数下标的值排序后变为 [4,3,2,1] 。奇数下标 1 和…

React入门基础(一):为什么说React是现代前端的必然选择?

目录 一、React的核心优势:重新定义前端开发范式 1. 组件化:构建可复用的原子世界 2. 声明式编程:让代码更贴近业务本质 3. 生态霸权:一个React等于整个前端宇宙 二、框架选型指南:React在技术矩阵中的定位 1. 横…

DeepSeek-R1-671B大模型满血版私有化部署高可用教程-SparkAi系统集成图文教程

DeepSeek官网服务器繁忙的主要原因是由于用户数量激增导致的服务器资源紧张。‌为了解决这一问题,DeepSeek团队已经暂停了API服务充值,以避免对用户造成业务影响。目前,存量充值金额仍可继续调用,但充值功能暂时不可用‌。 DeepSe…

GS Quant——一个用于量化金融的 Python 工具包

GS Quant是一个用于量化金融的 Python 工具包,GS 其实就是 Goldman Sachs 高盛集团的缩写。 GS Quant 的功能主要涵盖了以下几个方面: 内置很多金融衍生品定价模型,涵盖多个资产类别 提供了公司内部及市场的数据接口,便于监测 …

【OMCI实践】ONT上线过程的omci消息(七)

引言 在前四篇文章中,主要介绍了ONT上线过程的OMCI交互的第一、二、三个阶段omci消息,从第五篇开始介绍第四个阶段,OLT下发配置到ONT。前三个阶段,每个厂商OLT和ONT都遵循相同标准,OMCI的交换过程大同小异。但第四个阶…