热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

猿创征文|国产数据库,我看好分布式数据库TiDB

前言每当提及我们国家必须要自主掌握和创新的一些关键核心技术,相信大多数人都会优先考虑到芯片,但其实还有一种非常核心的IT技术也至关重要,

在这里插入图片描述

前言

每当提及我们国家必须要自主掌握和创新的一些关键核心技术,相信大多数人都会优先考虑到芯片,但其实还有一种非常核心的 IT 技术也至关重要,那就是 数据库

面对中国这样的人口大国,人们生活中的每一个角落、每一秒都在产生着海量数据。那么面对如此庞大的数据体量,数据库的处理是否安全可靠便成了重中之重,对数据库处理能力的安全性、可靠性的要求极高。

在业务爆发式增长的过程中,很多企业面临的一大难题就是面对庞大的数据体系,基于 MySQL 构建的传统的关系型数据库服务,已不能再满足复杂的数据库存储、管理与运维。所以分布式数据库应运而生,TiDB 便是其典型代表,也可以称得上是国产数据库的佼佼者。

那么什么叫分布式数据库呢?

首先,分布式数据库是由多个数据节点组成的,当数据想要增加算力时,那么只需增加数据节点即可,这也叫数据库的水平拓展。通俗的讲,分布式与集中式的区别在于,集中式数据库的拓展不会增加系统成员数量,但是这个成员所需要承担的任务会更多更重;分布式数据库则不会改变原有成员的工作量,而是会再增加若干系统成员 —— 人多力量大。

除此之外,随着数字经济蓬勃发展,高并发成为了当前最大挑战。当需求量巨大或者响应要求高时,传统集中式的结构很难拓展,这时就需要分布式结构的数据库“大显身手”了。简单来说就是,数据量越大,分布式的优势越明显



认识 TiDB

TiDB 是一个分布式的、具备水平扩展能力、支持 HTAP 及 AICD 事务的关系型数据库,是一款定位于在线事务处理/在线分析处理的数据库产品,实现了一键水平伸缩、强一致性的多副本数据安全、分布式事务等重要功能,同时兼容 Mysql 协议和生态。也可以将它理解为 Mysql 增强版。

面对当下云原生体系的不断发展,传统数据库诸如资源难以动态伸缩、单点问题、吞吐量受限、单表海量数据性能存在瓶颈等不足愈发明显,TiDB 则很好的弥补了这些不足。

TiDB 主要有以下特性:

分布式:系统在物理上是分布的,但在逻辑上是集中的。从架构上来看 TiDB 的计算节点、和存储节点是分离的,两者互不干扰,即使某一节点挂掉,也不会影响到其他部分的工作。

支持水平扩缩容:这个特性可以说是分布式数据库最基本的要求,TiDB 允许用户按需对计算、存储分别进行在线的扩容或缩容,避免 资源不足资源浪费 的问题。

高可用:通常指通过设计减少系统不能提供服务的时间,也就是做到 冗余 以及 自动故障转移

HTAP:混合事务分析处理,即联机事务处理(OLTP)、联机分析处理(OLAP)的混合版,可同时实现两种功能。

在这里插入图片描述

ACID 事务:ACID 事务指数据库在写入资料的过程中,为保证事务正确可靠所必须具备的 原子性一致性隔离性持久性

SQL 支持:兼容 Mysql 5.7 协议和 Mysql 生态。由于 TiDB 和 MySQL 语法和特性高度兼容,几乎不需要任何改动,就能完成数据库从 MySQL 到 TiDB 的转换。

在这里插入图片描述

正是这些特性,使得 TiDB 成为了云原生数据库的佼佼者,更加契合云原生架构。



实操演示:本地安装和部署 TiDB

那么在我们的服务器中,应如何安装和使用 TiDB 呢?TiDB 支持主流 Linux 操作系统环境,在这里我使用 CentOS 虚拟机演示如何去部署一个本地的 TiDB 实例。

第一步:TiUP 的安装

在各种软件的安装过程中,都少不了包管理工具的应用,例如 CentOS 的 yum。同样的,TiDB 4.0 开始引进了一个新的工具 TiUP,它就承担着 包管理器 的角色。

部署 TiDB 集群第一步要先安装 TiUP,执行一行指令即可;

curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh

如下;

在这里插入图片描述

安装完成后,执行提示的指令 source /root/.bash_profile to use it,然后就可以使用 tiup;

如下使用 tiup --version 查看 tiup 版本信息。

在这里插入图片描述
出现版本信息,说明 TiUP 安装成功。

第二步:使用 tiup playground 启动一个 TiDB 实例

安装 TiUP 后就可以使用 tiup playground 相关指令了,tiup playground 包含以下常用操作;

#启动集群
tiup playground v4.0.0 --kv 3 --pd 3 --db 3 --monitor
#查看集群
tiup playground display
#扩容集群
tiup playground scale-out--pd 1
#缩容集群
tiup playground scale-in --pid <pid>

我们使用 tiup playground 启动一个本地 TiDB&#xff1b;

tiup playground v4.0.0 --kv 1 --pd 1 --db 1 --monitor

首次启动时&#xff0c;需要下载一些新的东西所以速度稍慢。出现绿色代码即启动成功&#xff0c;且处于启动状态&#xff1b;

在这里插入图片描述
接下来新开一个窗口&#xff0c;使用提示的连接命令连接 TiDB 数据库&#xff1b;

在这里插入图片描述

扩容缩容等其他操作使用相关指令即可。


TiDB 不仅功能强大&#xff0c;且与 Mysql 高度兼容&#xff0c;操作简单&#xff0c;数不清的优点使得 TiDB 在众多国产数据库中脱颖而出。美团点评数据库专家团队曾对 TiDB 做出了高度评价&#xff1a;

“我们看好 TiDB 的发展&#xff0c;未来会加速推进 TiDB 在更多业务系统中的使用。”


推荐阅读
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 本文介绍了adg架构设置在企业数据治理中的应用。随着信息技术的发展,企业IT系统的快速发展使得数据成为企业业务增长的新动力,但同时也带来了数据冗余、数据难发现、效率低下、资源消耗等问题。本文讨论了企业面临的几类尖锐问题,并提出了解决方案,包括确保库表结构与系统测试版本一致、避免数据冗余、快速定位问题等。此外,本文还探讨了adg架构在大版本升级、上云服务和微服务治理方面的应用。通过本文的介绍,读者可以了解到adg架构设置的重要性及其在企业数据治理中的应用。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • MyBatis错题分析解析及注意事项
    本文对MyBatis的错题进行了分析和解析,同时介绍了使用MyBatis时需要注意的一些事项,如resultMap的使用、SqlSession和SqlSessionFactory的获取方式、动态SQL中的else元素和when元素的使用、resource属性和url属性的配置方式、typeAliases的使用方法等。同时还指出了在属性名与查询字段名不一致时需要使用resultMap进行结果映射,而不能使用resultType。 ... [详细]
  • Tomcat/Jetty为何选择扩展线程池而不是使用JDK原生线程池?
    本文探讨了Tomcat和Jetty选择扩展线程池而不是使用JDK原生线程池的原因。通过比较IO密集型任务和CPU密集型任务的特点,解释了为何Tomcat和Jetty需要扩展线程池来提高并发度和任务处理速度。同时,介绍了JDK原生线程池的工作流程。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • JDK源码学习之HashTable(附带面试题)的学习笔记
    本文介绍了JDK源码学习之HashTable(附带面试题)的学习笔记,包括HashTable的定义、数据类型、与HashMap的关系和区别。文章提供了干货,并附带了其他相关主题的学习笔记。 ... [详细]
  • MySQL中的MVVC多版本并发控制机制的应用及实现
    本文介绍了MySQL中MVCC的应用及实现机制。MVCC是一种提高并发性能的技术,通过对事务内读取的内存进行处理,避免写操作堵塞读操作的并发问题。与其他数据库系统的MVCC实现机制不尽相同,MySQL的MVCC是在undolog中实现的。通过undolog可以找回数据的历史版本,提供给用户读取或在回滚时覆盖数据页上的数据。MySQL的大多数事务型存储引擎都实现了MVCC,但各自的实现机制有所不同。 ... [详细]
  • 统一知识图谱学习和建议:更好地理解用户偏好
    本文介绍了一种将知识图谱纳入推荐系统的方法,以提高推荐的准确性和可解释性。与现有方法不同的是,本方法考虑了知识图谱的不完整性,并在知识图谱中传输关系信息,以更好地理解用户的偏好。通过大量实验,验证了本方法在推荐任务和知识图谱完成任务上的优势。 ... [详细]
  • 单点登录原理及实现方案详解
    本文详细介绍了单点登录的原理及实现方案,其中包括共享Session的方式,以及基于Redis的Session共享方案。同时,还分享了作者在应用环境中所遇到的问题和经验,希望对读者有所帮助。 ... [详细]
author-avatar
czx_91_673
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有