【架构】NewSQL
文章目录
- NewSQL
- TiDB
- TiDB 主要组件
- 特点
- 使用场景
- 安装与部署
- 推荐阅读
NewSQL
NewSQL是一种数据库管理系统(DBMS)的类别,它结合了NoSQL数据库的可扩展性和传统SQL数据库的事务一致性。具体来说,NewSQL数据库旨在解决传统关系型数据库在处理大规模并发事务时遇到的性能瓶颈和扩展性问题,同时保持了对SQL语言的支持和ACID(原子性、一致性、隔离性、持久性)事务属性。

以下是NewSQL的一些主要特征:
-
高性能:NewSQL数据库设计用于处理大量并发用户请求,能够在分布式环境中提供高吞吐量和低延迟。
-
可扩展性:NewSQL系统通常支持水平扩展(横向扩展),这意味着可以通过添加更多服务器来提升系统的处理能力,而非仅仅依赖于单台服务器的硬件升级。
-
一致性:尽管强调了扩展性和性能,NewSQL仍然坚持ACID事务特性,确保了数据的一致性和完整性。
-
SQL兼容性:NewSQL数据库保留了SQL的使用习惯,这对于习惯了传统SQL数据库的开发人员来说是一个优点,因为不需要重新学习新的查询语言。
-
分布性:许多NewSQL解决方案采用了分布式架构,可以在多个节点之间复制和分区数据,从而提高可用性和容错能力。
NewSQL的目标市场主要是那些需要传统SQL数据库提供的强一致性和事务支持,但同时也需要NoSQL数据库提供的水平扩展能力的应用场景。NewSQL的例子包括但不限于TiDB(主流)、CockroachDB、FoundationDB等。
由于NewSQL是一个相对较新的概念,并且随着技术的不断发展,NewSQL数据库的具体实现和技术细节可能会有所不同。

TiDB
TiDB(Ti代表Titanium)是一款开源的分布式关系型数据库,它支持 SQL 语法,并兼容 MySQL 协议。TiDB 的设计目标是提供水平可扩展性、强一致性的事务处理、在线分析处理(OLAP)和在线事务处理(OLTP)的混合工作负载支持,以及高可用性。TiDB 采用了分布式架构,主要由以下几个组件构成:
TiDB 主要组件
-
TiDB Server (TiDB):
- 功能:作为 SQL 查询的入口点,处理 SQL 请求,执行 SQL 查询逻辑,并返回结果给客户端。
- 角色:相当于 MySQL 中的 MySQL Server,负责处理客户端请求、执行 SQL 语句以及返回结果。
-
TiKV:
- 功能:是一个分布式的 Key-Value 存储系统,用于存储数据。
- 角色:类似于 NoSQL 数据库,但它支持事务处理和一致性协议(如 Raft)来保证数据的强一致性。
- 特点:TiKV 是一个独立的项目,可以与其他系统集成使用。
-
PD (Placement Driver):
- 功能:是一个调度和管理组件,负责集群范围内的元数据管理,包括存储节点的状态管理、调度决策等。
- 角色:类似于 ZooKeeper,用于管理集群状态和调度。
-
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部署、原理和使用介绍
相关文章:
【架构】NewSQL
文章目录 NewSQLTiDBTiDB 主要组件特点使用场景安装与部署 推荐阅读 NewSQL NewSQL是一种数据库管理系统(DBMS)的类别,它结合了NoSQL数据库的可扩展性和传统SQL数据库的事务一致性。具体来说,NewSQL数据库旨在解决传统关系型数据库在处理大规模并发事务…...
禁止吸烟监测系统 基于图像处理的吸烟检测系统 YOLOv7
吸烟是引发火灾的重要原因之一。烟头在未熄灭的情况下,其表面温度可达200℃-300℃,中心温度甚至能高达700℃-800℃。在易燃、易爆的生产环境中,如化工厂、加油站、仓库等,一个小小的烟头就可能引发灾难性的火灾,造成巨…...
《中国工程科学》
《中国工程科学》为工程科技战略咨询学术期刊,主要发布我国工程科技战略咨询研究成果,以及工程科技各领域前瞻性综合研究成果,为政府科学决策提供参谋、为行业科学发展提供指导、为相关学术研究提供参考。 一、2024年度征稿主题 本刊以专题…...
碳钢液动紧急切断阀QDY421F-16C DN200
在深入探讨碳钢液动紧急切断阀QDY421F-16C DN200的卓越性能与应用场景时,不得不提及其在化工、石油、天然气等高危行业中的核心地位。这款阀门以其高度的自动化控制能力和快速响应机制,成为了保障生产安全、防止介质泄漏的关键防线。 其内置的液动执行机…...
【C++】红黑树的封装——同时实现map和set
目录 红黑树的完善默认成员函数迭代器的增加 红黑树的封装红黑树模板参数的控制仿函数解决取K问题对Key的非法操作 insert的调整map的[]运算符重载 在list模拟实现一文中,介绍了如何使用同一份代码封装出list的普通迭代器和const迭代器。今天学习STL中两个关联式容器…...
Tableau|一入门
一 什么是BI工具 BI 工具即商业智能(Business Intelligence)工具,是一种用于收集、整理、分析和展示企业数据的软件系统,其主要目的是帮助企业用户更好地理解和利用数据,以支持决策制定。 主要功能: 1.数据…...
Android 12系统源码_输入系统(三)输入事件的加工和分发
前言 上一篇文章我们具体分析了InputManagerService的构造方法和start方法,知道IMS的start方法经过层层调用,最终会触发Navite层InputDispatcher的start方法和InputReader的start方法。InputDispatcher的start方法会启动一个名为InputDispatcher的线程&…...
【Elasticsearch系列廿二】特殊参数
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...
Java笔试面试题AI答之设计模式(2)
文章目录 6. 什么是单例模式,以及他解决的问题,应用的环境 ?解决的问题应用的环境实现方式 7. 什么是工厂模式,以及他解决的问题,应用的环境 ?工厂模式简述工厂模式解决的问题工厂模式的应用环境工厂模式的…...
54 循环神经网络RNN_by《李沐:动手学深度学习v2》pytorch版
系列文章目录 文章目录 系列文章目录循环神经网络使用循环神经网络的语言模型困惑度(perplexity)梯度剪裁 循环神经网络 使用循环神经网络的语言模型 输入“你”,更新隐变量,输出“好”。 困惑度(perplexityÿ…...
数据仓库-数据质量规范
一、 数据质量系统概述 1.1 数据质量管理系统1.2 数据质量建设流程1.3 数据质量标准二、 数据质量管理规则 2.1 数据校验规则列表 2.1.1 数据量2.1.2 数据量对比2.1.3 空值检查2.1.4 值域检查2.1.5 规范检查2.1.6 逻辑检查2.1.7 重复数据检查2.1.8 及时性检查...
PostgreSQL 17 发布了!非常稳定的版本
📢📢📢📣📣📣 作者:IT邦德 中国DBA联盟(ACDU)成员,10余年DBA工作经验, Oracle、PostgreSQL ACE CSDN博客专家及B站知名UP主,全网粉丝10万 擅长主流Oracle、My…...
【Python】执行脚本的时,如何指定运行根目录,而不是指定脚本的父级目录
author: jwensh & gpt date: 2024.09.23 python 执行脚本的时,如何指定运行根目录,而不是指定脚本的父级目录 prompt:python 执行脚本的时候,如何指定他的运行根目录,而不是指定脚本的父级目录 在执行 Python 脚…...
JVM(HotSpot):程序计数器(Program Counter Register)
文章目录 一、内存结构图二、案例解读三、工作流程四、特点 一、内存结构图 二、案例解读 我们使用javap对字节码进行反编译,来看下程序计数器怎么体现的。 IDEA写一个简单的Java代码 反编译命令 javap -verbose InitTest.class $ javap -verbose InitTest.clas…...
等保托管怎么样,流程是什么样的?
随着信息技术的快速发展,网络安全问题愈发凸显。为了保护信息系统的安全,国家推出了网络安全等级保护制度(简称“等保”),企业在面对这一制度的同时,也逐渐意识到等保托管的重要性。等保托管旨在通过专业的…...
【HTML】img标签和超链接标签
文章目录 img 标签src 属性alt 属性title 属性width/height 属性border 属性 超链接标签:a表格标签合并单元格 img 标签 img 是一个单标签 src 属性 img 标签必须搭配 src 使用(指定图片的路径) 相对路径: ./xxx.png./img/xxx.…...
智能PPT行业赋能用户画像
智能PPT市场在巨大的需求前景下,已吸引一批不同类型的玩家投入参与竞争。从参与玩家类型来看,不乏各类与PPT创作有关的上下游企业逐步向智能PPT赛道转型进入,也包括顺应生成式AI技术热潮所推出的创业企业玩家。当前,智能PPT赛道发…...
学习C++的第七天!
1.虚函数是在基类中用 virtual 关键字声明的函数,可以在派生类中被重写。纯虚函数是在虚函数的基础上,在基类中被初始化为 0 的函数,含有纯虚函数的类是抽象类,不能被实例化。 2.如果基类的析构函数不是虚函数,当通过…...
Java编程必备:五大高效工具与框架
作为一位Java程序员,在编写Java代码时,通常会使用多种工具和框架来提高开发效率、保证代码质量并简化开发流程。以下是五个常用的Java程序员工具和框架及其简要说明: 1. IntelliJ IDEA 主要功能:IntelliJ IDEA是一个强大的Java集…...
现代桌面UI框架科普及WPF入门1
现代桌面UI框架科普及WPF入门 文章目录 现代桌面UI框架科普及WPF入门桌面应用程序框架介绍过时的UI框架MFC (Microsoft Foundation Class)缺点 经典的UI框架**WinForms****QT****WPF** 未来的UI框架**MAUI****AvaloniaUI** WPF相对于Winform,QT,MFC的独立…...
Linux简单的操作
ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...
c++ 面试题(1)-----深度优先搜索(DFS)实现
操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...
Device Mapper 机制
Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...
Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)
在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马(服务器方面的)的原理,连接,以及各种木马及连接工具的分享 文件木马:https://w…...
Spring是如何解决Bean的循环依赖:三级缓存机制
1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间互相持有对方引用,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...
【Go语言基础【13】】函数、闭包、方法
文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...
PHP 8.5 即将发布:管道操作符、强力调试
前不久,PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5!作为 PHP 语言的又一次重要迭代,PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是,借助强大的本地开发环境 ServBay&am…...
从面试角度回答Android中ContentProvider启动原理
Android中ContentProvider原理的面试角度解析,分为已启动和未启动两种场景: 一、ContentProvider已启动的情况 1. 核心流程 触发条件:当其他组件(如Activity、Service)通过ContentR…...
Qt 事件处理中 return 的深入解析
Qt 事件处理中 return 的深入解析 在 Qt 事件处理中,return 语句的使用是另一个关键概念,它与 event->accept()/event->ignore() 密切相关但作用不同。让我们详细分析一下它们之间的关系和工作原理。 核心区别:不同层级的事件处理 方…...
绕过 Xcode?使用 Appuploader和主流工具实现 iOS 上架自动化
iOS 应用的发布流程一直是开发链路中最“苹果味”的环节:强依赖 Xcode、必须使用 macOS、各种证书和描述文件配置……对很多跨平台开发者来说,这一套流程并不友好。 特别是当你的项目主要在 Windows 或 Linux 下开发(例如 Flutter、React Na…...
