OceanBase数据库-学习笔记1-概论

多租户概念

集群和分布式

  • 随着互联网、物联网和大数据技术的发展,数据量呈指数级增长,单机数据库难以存储和处理如此庞大的数据。
  • 现代应用通常需要支持大量用户同时访问,单机数据库在高并发场景下容易成为性能瓶颈。
  • 单点故障是单机数据库的一个主要问题,一旦发生故障,整个系统可能无法使用。
  • 许多应用需要实时处理和分析数据,单机数据库在实时性方面存在局限。

集群(Cluster)和分布式系统(Distributed System)应运而生,它们都是为了解决大规模计算和数据处理需求而设计的系统架构。

定义

  • 集群(Cluster):
    • 集群是将多台计算机(节点)通过网络连接在一起,作为一个整体系统来工作。
    • 集群中的节点通常位于同一个物理位置(如数据中心),并且共享相同的目标(如提高性能、可用性或容错性)。
    • 集群通常用于高性能计算(HPC)、负载均衡、高可用性等场景。
  • 分布式系统(Distributed System):
    • 分布式系统是由多个独立的计算机(节点)通过网络连接在一起,协同完成一个共同的任务。
    • 分布式系统中的节点可以分布在不同的地理位置,彼此之间通过消息传递进行通信。
    • 分布式系统通常用于大规模数据处理、分布式存储、云计算等场景。

区别

  • 集群更适合需要高性能、低延迟和高可用性的场景,通常用于单一任务或服务的集中式管理。
  • 分布式系统更适合需要大规模扩展、跨地域协作和复杂任务处理的场景,通常用于大规模数据处理和存储。

两者在实际应用中常常结合使用,例如在分布式系统中使用集群来提高局部性能,或者在集群中使用分布式技术来实现更大规模的扩展。

运维和管理

集群和分布式系统的管理通常比单机系统复杂得多,因为它们涉及多个节点、网络通信、数据一致性、故障处理等多方面的挑战。

集群管理的复杂性
  • 节点管理:集群中的每个节点需要单独配置、监控和维护。节点之间的硬件和软件环境需要保持一致。
  • 负载均衡:需要动态分配任务,确保每个节点的负载均衡。负载均衡策略需要根据业务需求调整。
  • 高可用性:需要设计冗余和故障转移机制,确保单点故障不会影响整个集群。需要监控节点状态,及时处理故障。
  • 资源调度:需要合理分配计算、存储和网络资源,避免资源浪费或瓶颈。
  • 一致性维护:在集群中,数据的一致性需要通过分布式锁、选举算法等机制来保证。
分布式系统管理的复杂性
  • 网络通信:分布式系统的节点通常分布在不同的地理位置,网络延迟和分区问题会增加复杂性。需要处理消息丢失、重复、乱序等问题。
  • 数据一致性:分布式系统中,数据的一致性(如 CAP 理论中的一致性、可用性和分区容错性)难以同时满足。需要选择合适的分布式一致性算法(如 Paxos、Raft)。
  • 故障处理:分布式系统中的节点故障、网络分区等问题更加频繁和复杂。需要设计容错机制,如数据复制、故障检测和恢复。
  • 扩展性:分布式系统需要支持动态扩展,添加或删除节点时不能影响系统运行。需要设计无状态服务或数据分片机制。
  • 监控和调试:分布式系统的日志和监控数据分散在多个节点,难以集中分析和调试。需要专门的工具(如 Prometheus、Grafana、ELK Stack)来监控系统状态。
  • 安全性:分布式系统的节点之间需要安全通信,防止数据泄露或篡改。需要配置 SSL/TLS、防火墙、访问控制等安全措施。

分布式数据库

分布式数据库的出现是为了应对大数据时代的数据存储、处理、高并发、高可用性、地理分布、灵活性、成本效益、复杂查询、数据安全、多样化数据模型和实时数据处理等多方面的需求和挑战。OceanBase数据库就是一款分布式数据库(整体分布式,局部集群相结合)。

为了简化大规模部署多个业务数据库的管理并降低资源成本,OceanBase 数据库提供了独特的多租户特性。多租户架构适用于资源整合(Resource Consolidation)、云服务等场景,同时也降低了运维复杂度。

多租户概念

可以这样理解:OceanBase 集群 是一个“超级数据库实例”,包含底层的物理资源。租户是一个逻辑概念,是在 OceanBase 中的逻辑实体,可以理解为一个“虚拟的数据库实例”。
多租户,就是在一个集群中可以有多个租户存在,它们共享同一套物理资源(如 CPU、内存、存储等),但是在逻辑上是一个独立的数据库实例,拥有自己的数据和配置。

可以类比租房子的场景,一栋楼有多个房间,每个房间都可以被租户租取使用,一个租户可以租多个房间。那么从逻辑层面上,多个租户都共享这一栋楼的资源,而每个租户只能使用自己租的房间,相互隔离。这样就不用每个租户都建一套房,那么网格员在管理的时候,就可以只对这栋楼的属性进行管理,降低了管理的复杂度。

传统数据库架构
OceanBase集群架构

为啥要引入多租户

问题背景

  • 在传统架构中,每个业务系统通常需要独立的数据库实例,导致管理复杂度高,运维成本大。
  • 传统架构中,每个业务系统需要独立的硬件资源,导致资源利用率低,成本高。

方案

  • 通过多租户架构,OceanBase 可以在一个数据库集群中支持多个业务系统(每个业务系统作为一个租户)。
  • 管理员只需管理一个 OceanBase 集群,而不是多个独立的数据库实例,大大简化了部署和运维工作。
  • 提供统一的管理工具,支持对多个租户进行集中监控、配置和资源调整。
  • 多租户架构允许多个业务系统共享同一套物理资源(如 CPU、内存、存储等),提高了资源利用率。[1]
  • 通过动态资源分配,可以根据业务需求灵活调整资源使用,避免资源浪费。
  • 减少了硬件投资和运维成本,特别适合大规模部署场景。

[1]: 一个 OceanBase 集群 可以看作一个“超级数据库实例”,它包含了底层的物理资源(如 CPU、内存、存储等)。在这个集群中,可以创建多个 租户(Tenant),每个租户在逻辑上是一个独立的数据库实例。每个租户有自己的数据、用户、权限和配置,就像传统数据库实例一样。
但与传统模式不同的是,这些租户 共享同一个 OceanBase 集群的物理资源,而不是每个租户独占一套硬件资源。

部署模式

OceanBase 数据库支持无共享(Shared-Nothing,SN)模式和共享存储(Shared-Storage,SS)模式两种部署模式。

  • SN模式,常用的部署模式,各个节点之间完全对等,每个节点都有自己的 SQL 引擎、存储引擎、事务引擎。
  • SS模式,一般是在云上提供云原生数据库服务,降低数据库使用成本,提升性能和易用性。

OceanBase 数据库提供企业版和社区版两种形态。

  • OceanBase 数据库企业版:OceanBase 企业版是一款完全自研的企业级原生分布式数据库,在普通硬件上实现金融级高可用,首创“三地五中心”城市级故障自动无损容灾新标准,刷新 TPC-C 标准测试,单集群规模超过 1500 节点,具有云原生、强一致性、高度兼容 Oracle/MySQL 等特性。
  • OceanBase 数据库社区版兼容 MySQL 的单机分布式一体化数据库,具有原生分布式架构,支持金融级高可用、透明水平扩展、分布式事务、多租户和语法兼容等企业级特性。OceanBase 社区版数据库内核开源,与 MySQL 兼容,对接虚拟化和大数据技术及产品,支持多种图形化的开发工具、运维监控工具和数据迁移工具;同时社区版提供开放的接口和丰富的生态能力,支持企业或个人更好的实现定制化业务需求。

以上就是本次的分享,感谢阅读。

上一章:《OceanBase数据库-学习笔记1-概论》
下一章:《OceanBase数据库-学习笔记2-C#/C++程序如何访问》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/79231.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/79231.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络——键入网址到网页显示,期间发生了什么?

浏览器做的第一步工作是解析 URL,分清协议是http还是https,主机名,路径名,然后生成http消息,之后委托操作系统将消息发送给 Web 服务器。在发送之前,还需要先去查询dns,首先是查询缓存浏览器缓存…

Qwen3本地化部署,准备工作:SGLang

文章目录 SGLang安装deepseek运行Qwen3-30B-A3B官网:https://github.com/sgl-project/sglang SGLang SGLang 是一个面向大语言模型和视觉语言模型的高效服务框架。它通过协同设计后端运行时和前端编程语言,使模型交互更快速且具备更高可控性。核心特性包括: 1. 快速后端运…

全面接入!Qwen3现已上线千帆

百度智能云千帆正式上线通义千问团队开源的最新一代Qwen3系列模型,包括旗舰级MoE模型Qwen3-235B-A22B、轻量级MoE模型Qwen3-30B-A3B。千帆大模型平台开源模型进一步扩充,以多维开放的模型服务、全栈模型开发、应用开发工具链、多模态数据治理及安全的能力…

蓝桥杯Python(B)省赛回忆

Q:为什么我要写这篇博客? A:在蓝桥杯软件类竞赛(Python B组)的备赛过程中我在网上搜索关于蓝桥杯的资料,感谢你们提供的参赛经历,对我的备赛起到了整体调整的帮助,让我知道如何以更…

数据转储(go)

​ 随着时间推移,数据库中的数据量不断累积,可能导致查询性能下降、存储压力增加等问题。数据转储作为一种有效的数据管理策略,能够将历史数据从生产数据库中转移到其他存储介质,从而减轻数据库负担,提高系统性能&…

Git Stash 详解

Git Stash 详解 在使用 Git 进行版本控制时,经常会遇到需要临时保存当前工作状态的情况。git stash 命令就是为此设计的,它允许你将未提交的更改暂存起来,在处理其他任务或分支后,再恢复这些更改。 目录 基本概念常用命令示例和…

Windows下Dify安装及使用

Dify安装及使用 Dify 是开源的 LLM 应用开发平台。提供从 Agent 构建到 AI workflow 编排、RAG 检索、模型管理等能力,轻松构建和运营生成式 AI 原生应用。比 LangChain 更易用。 前置条件 windows下安装了docker环境-Windows11安装Docker-CSDN博客 下载 Git下载…

Clang-Tidy协助C++编译期检查

文章目录 在Visual Studio中启用clang-tidyClang-tidy 常用的检查项readability-inconsistent-declaration-parameter-namemisc-static-assert 例子 C/C语言是一门编译型语言,比起python,javascript 这些,有很多BUG可以在编译期被排除掉,当然…

智能工厂规划学习——深入解读数字化工厂规划与建设方案

项目总体思路聚焦于通过智能制造和数字化工厂建设,来优化企业战略并提升信息化水平。首先,企业需学习先进国家已经验证的先进经验,并紧跟其正在变革的方向,以确保自身发展的前瞻性和竞争力。 在企业战略层面,企业正从以产品为中心的业务模式,逐步转变为以服务中心…

Go RPC 服务方法签名的要求

在 Go 中,RPC 方法的签名有严格的要求,主要是为了保证方法的调用能够通过网络正确地传输和解析。具体要求如下: 1. 方法必须是导出的 RPC 服务的方法必须是导出的(即首字母大写)。这是因为 Go 的反射机制要求服务方法…

上位机 日志根据类型显示成不同颜色

前言 在上位机软件开发中日志是一个很重要的信息。一方面显示系统的运行情况,另一方面主要用于排查软件BUG和设备问题的重要参考。为了方面识别日志类型最好的方式是使用不同的颜色进行区分。这样就一目了然了。 效果 实现代码 1.根据 ListBox 控件 进行扩展了一个自定义控件…

CMake解析参数用法示例

cmake_parse_arguments 是 CMake 中用于解析函数或宏参数的工具,特别适合处理带有选项(OPTIONS)、单值参数(SINGLE_ARGS)和多值参数(MULTI_ARGS)的复杂参数列表。以下是用法说明和一个示例&…

自定义JackSon配置

避免前端&#xff08;JavaScript&#xff09;处理大数&#xff08;如 Long、BigInteger&#xff09;时发生精度丢失问题&#xff0c;所以引入了自定义 Jackson 配置。 先看代码&#xff1a; /** 根据id修改员工信息*/PutMappingpublic R<String> update(HttpServletRequ…

Qt入门——什么是Qt?

Qt背景介绍 什么是Qt? Qt 是⼀个 跨平台的 C 图形用户界面应用程序框架 。它为应用程序开发者提供了建立艺术级图形界面所需的所有功能。它是 完全面向对象 的&#xff0c;很容易扩展。Qt 为开发者提供了 ⼀种基于组件的开发模式 &#xff0c;开发者可以通过简单的拖拽和组合…

Linux CentOS 安装Python 3.8.0

在 CentOS 上升级 Python 3.6.8 到 3.8.0&#xff0c;可以按照以下步骤操作&#xff1a; 1. 安装依赖 sudo yum groupinstall -y "Development Tools" sudo yum install -y openssl-devel bzip2-devel libffi-devel zlib-devel wget 如果遇到报错“File "/bin…

Python爬虫(11)Python数据存储实战:深入解析NoSQL数据库的核心应用与实战

目录 引言一、背景&#xff1a;为什么选择NoSQL存储爬虫数据&#xff1f;1.1 爬虫数据的核心挑战1.2 NoSQL数据库的核心优势 二、NoSQL数据库在爬虫中的核心应用2.1 MongoDB&#xff1a;文档型数据库的王者2.2 Redis&#xff1a;内存数据库的极致性能 三、NoSQL选型与性能优化策…

PCB设计工艺规范(一)概述

PCB设计工艺规范&#xff08;一&#xff09; 1.概述2.关键词及引用标准3.PCB板材要求3.1 确定PCB使用板材以及TG值3.2 确定 PCB 的表面处理镀层 4.热设计要求5.器件库选项要求 资料来自网络&#xff0c;仅供学习使用。 1.概述 规范产品的 PCB 工艺设计&#xff0c;规定 PCB 工…

proxychains4系统代理for linux(加速国内github下载速度,pip安装)

1.proxychains4代理安装&#xff1a; sudo apt-get install proxychains42.找到配置文件/etc/proxychains4.conf在[ProxyList]后面添加以下内容&#xff1a; socks5 127.0.0.1 10808 配置如下&#xff1a; 3.使用proxychains4(git clone)&#xff1a; proxychains4 git c…

Seata客户端@GlobalTransactional核心源码解析

文章目录 前言一、GlobalTransactional1.1、wrapIfNecessary1.2、handleGlobalTransaction1.3、invoke 二、总结 前言 Seata是阿里开源的分布式事务解决方案。在Spring传统的事务中&#xff0c;开启事务&#xff0c;执行事务&#xff0c;回滚/提交事务&#xff0c;统一由Spring…

pytorch搭建并训练神经网络

#从小白开始学习人工智能# #学习笔记# 工具&#xff1a;pytorch 一、基础概念 1.神经网络是什么&#xff1f; 神经网络是人类受到生物神经细胞结构启发而研究出的算法体系。又称为人工神经网络&#xff08;Artificial neural network&#xff09; 最简版神经网络结构图&a…