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

Orcal数据库Schema理解、表分区理解

目录

  • 1 Schema
    • 1.1 Orcal数据库示例
    • 1.2 MySQL数据库示例
  • 2 Orcal表分区
    • 2.1 创建表分区
    • 2.2 查看表分区
    • 2.3 查看指定分区数据

此前未了解过Schema的概念,仅知道Orcal数据库比较侧重这个概念,搜遍全网都,都是啰哩吧嗦的搬抄定义,特此在梳理后写下本文,模拟直观的示例通俗易懂,3min拿下理解

1 Schema

1.1 Orcal数据库示例

假设我们有一个多租户的应用,服务多个学校的学生信息。每个学校都有自己的数据,而且我们希望在同一个数据库实例中存储这些信息。使用schema可以很好地实现这个目标。

在这里插入图片描述

通过这种方式,每个学校的数据都被组织在自己的schema下,相互隔离。不同学校的表可以使用相同的名称,而不会发生命名冲突。

1.2 MySQL数据库示例

在MySQL中,相同的多租户场景可以使用不同的数据库来实现,而不需要关心用户和schema的概念。

在这里插入图片描述

在MySQL中,每个数据库是一个独立的命名空间,可以存储相同表名的表而不会发生冲突。因此,MySQL中不同数据库的隔离性通过数据库本身来实现,而不需要显式的用户和schema的概念。

可以这么说,比如你连接mysql环境xxx.xxx.xx.xx:8080,创建的数据库如下

  • 阳光中学数据库
  • 实验中学数据库
  • 彩虹中学数据库
  • 西南科技大学数据库
  • 清华大学数据库
  • 华中科技大学数据库
  • 朝阳街道办数据库
  • 凤凰南路街道办数据库

每个数据库对应不同的需求
你想要获取阳光中学的数据,就在项目中连接阳光中学的数据库
你想要获取西南科技大学的数据,就在项目中连接西南科技大学的数据库
完全没问题,这是mysql的操作,那么orcal如何处理呢

中学数据库

  • 阳光中学 (A)
  • 实验中学 (B)
  • 彩虹中学 (C)

大学数据库

  • 西南科技大学 (D)
  • 清华大学 (E)
  • 华中科技大学 (F)

街道办数据库

  • 朝阳街道办 (G)
  • 凤凰南路街道 (H)

每个数据库对应不同的需求
项目中连接中心数据库
你想要获取阳光中学的数据,就用身份A登陆
你想要获取彩虹中学的数据,就用身份C登陆

2 Orcal表分区

2.1 创建表分区

首先,让我们创建一个简单的分区表,然后演示如何查看分区信息。我们将使用范围分区作为示例。

-- 创建一个范围分区表,分区名为p0,p1, p2, p3
CREATE TABLE sales (
    sale_id INT,
    sale_date DATE,
    amount DECIMAL(10, 2)
) PARTITION BY RANGE (YEAR(sale_date)) (
    PARTITION p0 VALUES LESS THAN (2000),
    PARTITION p1 VALUES LESS THAN (2010),
    PARTITION p2 VALUES LESS THAN (2020),
    PARTITION p3 VALUES LESS THAN MAXVALUE
);

-- 插入一些数据
INSERT INTO sales VALUES
(1, '1999-05-15', 100.50),
(2, '2005-08-20', 150.75),
(3, '2015-03-10', 200.30),
(4, '2022-02-01', 120.90);

这个表分区是什么意思呢?
sale_date字段对应的是时间,将时间分成四档,每个时间关联的那一条数据一起被划分

2.2 查看表分区

查询表分区定义

SELECT * FROM information_schema.partitions WHERE table_name = 'sales';

只需关注PARTITION_NAME 和 PARTITION_DESCRIPTION 字段即可,可以看到,p0分区是2000档,p1是2010档
在这里插入图片描述

2.3 查看指定分区数据

查看 p0 分区的数据


SELECT * FROM sales PARTITION (p0);

在这里插入图片描述


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

相关文章:

  • [运维][Nginx]Nginx学习(1/5)--Nginx基础
  • Unity3D实现视频和模型融合效果
  • 【Vue】Vue3.0(十九)Vue 3.0 中一种组件间通信方式-自定义事件
  • java模拟键盘实现selenium上下左右键 table中的左右滚动条实现滚动
  • 【再谈设计模式】抽象工厂模式~对象创建的统筹者
  • NUXT3学习日记一(在我git中拉取代码、文件讲解)
  • 【kubernetes】k3s集群搭建(正在更新……)
  • 利用mybatis-plus查询时报错?
  • 【C语言】操作符详解(一):进制转换,原码,反码,补码
  • golang开发之个微机器人的二次开发
  • 二叉树03-遍历02
  • vuepress-----13、分割config
  • zotero关闭翻译自动创建标签
  • openlayers地图使用---跟随地图比例尺动态标绘大小的一种方式2
  • 身份认证技术
  • leetcode 面试题 02.02. 返回倒数第k个节点
  • 【小布_ORACLE笔记】Part11-6 RMAN Backups
  • 【Flink系列四】Window及Watermark
  • 小白理解GPT的“微调“(fine-tuning)
  • 数据库隔离级别:从并发冲突到数据一致性的演进历程
  • PVE系列-LVM安装MacOS的各个版本及VNC加密隧道访问
  • 二百一十四、Linux——Linux系统时间比电脑时间慢5分钟
  • K8s 入门指南(一):单节点集群环境搭建
  • 【VSCode】自定义配置
  • 元宇宙:重塑游戏行业体验下一个前沿
  • Linux篇之基于Centos的everything镜像搭建yum镜像源