如何搭建一个专业的网站教程?
摘要:做网站教程流程,搭建自己的网站,wordpress边栏时间,Iis 建网站为什么说没有该用户✅作者简介:大家好,我是Leo,热爱Java后端开发者&a
做网站教程流程,搭建自己的网站,wordpress边栏时间,Iis 建网站为什么说没有该用户✅作者简介#xff1a;大家好#xff0c;我是Leo#xff0c;热爱Java后端开发者#xff0c;一个想要与大家共同进步的男人#x1f609;#x1f609; #x1f34e;个人主页#xff1a;Leo的博客 #x1f49e;当前专栏#xff1a; 赠书活动专栏 ✨特色专栏#xff1a;…✅作者简介大家好我是Leo热爱Java后端开发者一个想要与大家共同进步的男人 个人主页Leo的博客 当前专栏 赠书活动专栏 ✨特色专栏 MySQL学习 本文内容 Leo赠书活动-26期 不同数据库背后的数据存储方案 个人知识库 Leo知识库欢迎大家访问 目录 01 关系型数据库NoSQL数据库NewSQL数据库1. 关系型数据库2. NoSQL数据库3. NewSQL数据库 02 OLTPOLAPHTAP对比1. OLTP数据库2. OLAP数据库3. HTAP数据库 03 总结 在大数据和AI时代数据库成为各类应用不可或缺的重要组成部分。而数据库中的数据依赖存储引擎进行管理包括数据的存储、查询、更新和删除等。因此在设计系统时选择正确的数据库存储引擎方案变得尤为重要。这篇文章将以关系型、NoSQL和NewSQL数据库以及OLTP、OLAP和HTAP处理方式为切入点深入探讨不同类型的数据库背后的存储引擎方案选型取舍。
01 关系型数据库NoSQL数据库NewSQL数据库
下图展示了关系型数据库、NoSQL数据库、NewSQL数据库的发展过程。 1. 关系型数据库
关系型数据库也称为SQL数据库最早的数据库发展可以追溯至1970年IBM研发的第一个SQL数据库System R这也是最早的SQL数据库再后来19801990年这段时间涌现出来了一些SQL数据库产品例如Oracle、DB2、SQL Server、PostgreSQL、MySQL等。
到2000年左右关系型数据库越来越丰富出现了很多迄今一直在发挥重要的组件例如MySQL、Oracle等。
SQL数据库按照以“行”为单位的二维表格存储数据这种方式最符合现实世界中的实体同时通过事务的支持为数据的一致性提供了非常强的保证。因此SQL数据库主要适合的场景是读多写少的场景。
关系型数据库中为了适配不同的应用场景通常会将存储引擎设计为插件式的接口。然而主流的存储引擎仍然是读多写少的特点。以MySQL为例InnoDB存储引擎被广泛运用它通过B树来存储索引和数据。B树这种数据结构由于其独特的特性使得查询的性能非常高。
B树存储引擎适用于需要高效的数据查找、范围查询和顺序访问的场景。它在关系型数据库中被广泛应用如MySQL的InnoDB存储引擎和Oracle的B树索引。然而B树存储引擎对于频繁的数据插入和删除操作可能会有一定的开销因为这会触发节点的分裂和合并操作。
2. NoSQL数据库
在面对海量数据存储、高并发访问的场景下关系型数据库的扩展性和性能会受到限制。随着互联网的飞速发展到2000年左右存储海量数据、高并发处理读写的需求变得非常明显。这对SQL数据库提出了巨大挑战。为了解决这个问题出现了支持数据可扩展性、最终一致性的NoSQL数据库。因此NoSQL数据库可以看作是基于SQL数据库的缺陷而诞生的一种新产品。
NoSQL组件普遍选择牺牲复杂SQL的支持及ACID事务功能以换取弹性扩展能力和更高的读写性能。这类系统主要存储半结构化或非结构化数据。根据存储的数据种类NoSQL数据库主要分为基于文档存储的文档数据库Document-based Database、基于键-值存储的键值数据库Key-Value Database、图数据库Graph-based Database、时序数据库Time Series Datebase、宽列式存储Wide Column-based Store以及多模数据库Multi-Model Database。
不同类型的NoSQL数据库特性如下图所示。 NoSQL数据库典型的特点是具备很高的读写性能但数据一致性保证较弱。绝大多数的NoSQL数据库适合写多读少、写多读多的场景。以列式数据库、时序数据库而言它们通过LSM的思想提供了非常高的写入性能。这类系统的存储引擎广泛意义上也称为LSM Tree存储引擎这些系统单机的存储引擎有RocksDB、LevelDB等。此外再以键值数据库为例它们绝大部分通过利用哈希表这种数据结构外加内存介质存储数据。实现非常高的读写性能。Redis就是这类系统的典型代表。
3. NewSQL数据库
虽然NoSQL数据库解决了关系型数据库存储的缺陷但它也没法完全替代掉关系型数据库。
