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

【架构】NewSQL

文章目录

    • NewSQL
    • TiDB
      • TiDB 主要组件
      • 特点
      • 使用场景
      • 安装与部署
    • 推荐阅读

NewSQL

NewSQL是一种数据库管理系统(DBMS)的类别,它结合了NoSQL数据库的可扩展性和传统SQL数据库的事务一致性。具体来说,NewSQL数据库旨在解决传统关系型数据库在处理大规模并发事务时遇到的性能瓶颈和扩展性问题,同时保持了对SQL语言的支持和ACID(原子性、一致性、隔离性、持久性)事务属性。
在这里插入图片描述

以下是NewSQL的一些主要特征:

  1. 高性能:NewSQL数据库设计用于处理大量并发用户请求,能够在分布式环境中提供高吞吐量和低延迟。

  2. 可扩展性:NewSQL系统通常支持水平扩展(横向扩展),这意味着可以通过添加更多服务器来提升系统的处理能力,而非仅仅依赖于单台服务器的硬件升级。

  3. 一致性:尽管强调了扩展性和性能,NewSQL仍然坚持ACID事务特性,确保了数据的一致性和完整性。

  4. SQL兼容性:NewSQL数据库保留了SQL的使用习惯,这对于习惯了传统SQL数据库的开发人员来说是一个优点,因为不需要重新学习新的查询语言。

  5. 分布性:许多NewSQL解决方案采用了分布式架构,可以在多个节点之间复制和分区数据,从而提高可用性和容错能力。

NewSQL的目标市场主要是那些需要传统SQL数据库提供的强一致性和事务支持,但同时也需要NoSQL数据库提供的水平扩展能力的应用场景。NewSQL的例子包括但不限于TiDB(主流)、CockroachDB、FoundationDB等。

由于NewSQL是一个相对较新的概念,并且随着技术的不断发展,NewSQL数据库的具体实现和技术细节可能会有所不同。

在这里插入图片描述

TiDB

TiDB(Ti代表Titanium)是一款开源的分布式关系型数据库,它支持 SQL 语法,并兼容 MySQL 协议。TiDB 的设计目标是提供水平可扩展性、强一致性的事务处理、在线分析处理(OLAP)和在线事务处理(OLTP)的混合工作负载支持,以及高可用性。TiDB 采用了分布式架构,主要由以下几个组件构成:

TiDB 主要组件

  1. TiDB Server (TiDB)

    • 功能:作为 SQL 查询的入口点,处理 SQL 请求,执行 SQL 查询逻辑,并返回结果给客户端。
    • 角色:相当于 MySQL 中的 MySQL Server,负责处理客户端请求、执行 SQL 语句以及返回结果。
  2. TiKV

    • 功能:是一个分布式的 Key-Value 存储系统,用于存储数据。
    • 角色:类似于 NoSQL 数据库,但它支持事务处理和一致性协议(如 Raft)来保证数据的强一致性。
    • 特点:TiKV 是一个独立的项目,可以与其他系统集成使用。
  3. PD (Placement Driver)

    • 功能:是一个调度和管理组件,负责集群范围内的元数据管理,包括存储节点的状态管理、调度决策等。
    • 角色:类似于 ZooKeeper,用于管理集群状态和调度。
  4. TiFlash(可选):

    • 功能:是一个可选组件,为 TiDB 提供了列式存储的能力,可以加速 OLAP 查询。
    • 角色:TiFlash 可以与 TiKV 集成,使 TiDB 同时支持 OLTP 和 OLAP 工作负载。

特点

  • 水平可扩展性:TiDB 设计为水平可扩展,可以通过增加更多的 TiKV 节点来扩展存储容量和吞吐量。
  • 强一致性:通过 Raft 协议保证数据的一致性和可靠性。
  • 高可用性:即使部分节点失败,系统仍然可以继续正常工作。
  • SQL 兼容性:支持 SQL 语法,与 MySQL 协议兼容,使得迁移和使用变得更加容易。
  • 混合事务处理(HTAP):支持同时处理 OLTP 和 OLAP 工作负载,无需在不同的数据库之间切换。
  • 分布式事务:支持多行事务处理,确保数据操作的原子性、一致性、隔离性和持久性(ACID)。

使用场景

TiDB 适用于需要高可用、强一致性的分布式数据库场景,尤其是那些需要水平扩展能力和混合事务处理能力的应用,例如:

  • 金融行业:处理高频交易、实时结算等。
  • 电子商务:支持高并发的购物车、订单处理等。
  • 物联网:存储和处理大量的传感器数据。
  • 大数据分析:结合 TiFlash 进行实时分析和报表生成。

安装与部署

TiDB 的安装和部署相对简单,可以通过官方文档提供的指南来进行。一般而言,安装 TiDB 需要先安装 PD、TiKV、TiDB 以及可选的 TiFlash 组件。这些组件可以通过二进制包、Docker 容器或者 Kubernetes 部署。

推荐阅读

TIDB简介及TIDB部署、原理和使用介绍

相关文章:

  • 去中心化自治组织(DAO)
  • [Python学习日记-34] 一篇文章让你弄懂 Python 中牛逼的递归函数
  • 【前端安全】js逆向之微信公众号登录密码
  • Golang | Leetcode Golang题解之第440题字典序的第K小数字
  • java-快速将普通main类变为javafx类,并加载自定义fxml
  • go 安装三方库
  • Unity开发绘画板——01.前言
  • C++之String类(下)
  • TypeScript 算法手册【插入排序】
  • 五、CAN总线
  • 《NoSQL》非关系型数据库MongoDB 学习笔记!
  • 2024年3分钟手把手教你激活Guitar Pro 8破解版
  • 工业现场干扰问题及处理方法
  • 移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——15.红黑树
  • Eclipse 快捷键:提高开发效率的利器
  • Angular 响应式表单 基础例子
  • Java 11 发布计划来了,已确定 3个 新特性!!
  • javascript面向对象之创建对象
  • Java程序员幽默爆笑锦集
  • Linux各目录及每个目录的详细介绍
  • Linux后台研发超实用命令总结
  • PHP的Ev教程三(Periodic watcher)
  • 短视频宝贝=慢?阿里巴巴工程师这样秒开短视频
  • 机器学习中为什么要做归一化normalization
  • 试着探索高并发下的系统架构面貌
  • 学习Vue.js的五个小例子
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • ​【经验分享】微机原理、指令判断、判断指令是否正确判断指令是否正确​
  • ​VRRP 虚拟路由冗余协议(华为)
  • # AI产品经理的自我修养:既懂用户,更懂技术!
  • # 数论-逆元
  • #1015 : KMP算法
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (笔试题)分解质因式
  • (回溯) LeetCode 40. 组合总和II
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (已更新)关于Visual Studio 2019安装时VS installer无法下载文件,进度条为0,显示网络有问题的解决办法
  • (转)fock函数详解
  • .describe() python_Python-Win32com-Excel
  • .mkp勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .mysql secret在哪_MYSQL基本操作(上)
  • .net 4.0发布后不能正常显示图片问题
  • .NET Core WebAPI中封装Swagger配置
  • .NET 中各种混淆(Obfuscation)的含义、原理、实际效果和不同级别的差异(使用 SmartAssembly)
  • .NET中的十进制浮点类型,徐汇区网站设计
  • 。。。。。
  • :not(:first-child)和:not(:last-child)的用法
  • @Autowired多个相同类型bean装配问题
  • [ vulhub漏洞复现篇 ] JBOSS AS 4.x以下反序列化远程代码执行漏洞CVE-2017-7504
  • [<MySQL优化总结>]
  • [AI 大模型] Meta LLaMA-2
  • [Algorithm][综合训练][kotori和气球][体操队形][二叉树中的最大路径和]详细讲解
  • [ARM]ldr 和 adr 伪指令的区别
  • [C#]C# winform部署yolov8目标检测的openvino模型