03. 主流产品剖析
主流的存储&数据库系统架构,经典产品剖析
3.1 单机存储
本地文件系统
Key-value 存储
linux哲学:一切皆文件
文件系统:
kv存储:
常见数据机构:LSM-TREE,牺牲读性能,追求写入性能-> 内存和磁盘都是遵循有序数据结构,左边黄色满了,就会刷入灰色里面,然后刷入sorted stage table(有序集合),然后不断往下刷level0->1->2
最后要读的话,要读多层的数据合在一起给出答案
建议看levelDB源码,而不是rocksDB
3.2 分布式存储
分布式存储 = 单机基础上实现分布式协议,大量网络交互
分布式文件存储的基础:HDFS——大数据时代的基石
分布式存储万金油:ceph-》非常好的源码阅读
3.3 单机数据库系统
单机关系型数据库
商业产品oracle称王,开源MySQL & PostgreSQL
每次page修改会有redo log生成
temp data临时数据是内存不够了的时候将结果线变成临时数据,在后面用到的时候再拼接结果
硬盘中有:page,redo log事务日志,临时文件
单机非关系型数据库
MongoDB, Redis 和 Elasticsearch三足鼎立
各自优势:
elsticsearch使用案例:内嵌模糊搜索
3.5 分布式数据库
容量问题 disk不够用 -》存储节点池化,动态扩缩容
弹性问题-》cpu资源紧张不够用了需要升级数据库,能够扩容cpu,搬迁全量数据,还能缩容cpu和磁盘
性价比问题
问题: 单写vs多写
磁盘弹性到内存弹性
分布式事务优化
04. 新技术演进
老系统结合新技术,如何持续演进走向新生
新架构
新硬件
新理论
人工智能
数据库和存储系统新技术:
1. 全闪存储的普及
全闪存储(All-Flash Storage)利用固态硬盘(SSD)提供高性能、低延迟的数据存储解决方案。近年来,随着SSD技术的成熟和成本的降低,全闪存储在企业级存储市场中的占比持续上升。据IDC统计,全闪存储阵列在传统企业级存储市场的份额已上升至39%。全闪存储凭借其高IOPS、低时延和高可靠性,广泛应用于金融、证券等关键行业。
2. 分布式存储的广泛应用
分布式存储通过将数据分散存储在多个节点上,提供高扩展性和可靠性。在互联网、人工智能、大数据和云计算等新兴场景中,分布式存储被广泛采用。据IDC统计,2022年分布式存储的市场份额为23%,预计到2026年将达到28%。分布式存储支持块、文件、HDFS和对象等多种协议,适用于内容资源池、备份归档、视频存储和云平台存储等多个场景。
3. 计算型存储的兴起
计算型存储(Computational Storage)将部分数据处理任务下放到存储层,减少数据迁移,降低时延和能耗。在大规模并行计算场景中,如VR/AR、无人驾驶和车联网,计算型存储展现出高带宽、低时延和低功耗的优势。目前,计算型存储在产业细分领域引发创业浪潮,受到投资界和产业界的高度关注。
4. 智能运维(AIOps)的发展
随着数据量的爆炸式增长,传统的人工运维已难以满足需求。AIOps通过人工智能技术实现存储系统的自我管理、自我修复和自我调优,提高系统性能、稳定性和易用性,降低运维复杂度。Gartner预测,到2025年,30%的企业级存储将使用AIOps进行IT硬件管理和维护,而2022年这一比例还不到3%。
5. 分布式数据库的兴起
随着移动互联网、大数据、人工智能、物联网和5G等技术的发展,数据量和复杂性不断增加。传统关系型数据库在应对某些极端场景时面临挑战,分布式关系型数据库利用分布式技术,突破了传统集中式数据库的容量与性能瓶颈,简化了运维工作,并有效降低了对高性能硬件的依赖。近年来,中国分布式关系型数据库市场呈现百花齐放的态势,新兴数据库厂商、云厂商、大数据厂商等相继推出新产品。
6. 云原生数据库的发展
云原生数据库设计用于在云环境中运行,充分利用云计算的弹性和可扩展性。它们通常采用微服务架构,支持自动扩展和高可用性,满足现代应用对数据存储的需求。例如,阿里云、腾讯云等厂商在2023年上半年推出了多项云数据库产品更新,提升了性能和功能。
7. 向量数据库的应用
随着人工智能和机器学习的发展,向量数据库用于存储和检索高维向量数据,支持快速的相似性搜索。在推荐系统、图像检索和自然语言处理等领域,向量数据库发挥着重要作用。AI大模型的兴起催生了向量数据库的新应用,满足了对高效数据检索的需求。
综上所述,近两年数据库系统和存储系统在全闪存储、分布式存储、计算型存储、智能运维、分布式数据库、云原生数据库和向量数据库等方面取得了显著进展,推动了数据管理和存储技术的持续创新。
hive是什么?
Hive 是一个构建在 Hadoop 之上的开源数据仓库工具,用于处理和分析大规模结构化数据。它提供了一种 SQL 类似的查询语言,称为 HiveQL(Hive Query Language) ,使用户可以通过类 SQL 的方式操作存储在 Hadoop 分布式文件系统(HDFS)或兼容存储系统(如 Amazon S3)中的大规模数据,而不需要直接编写 MapReduce 程序。
Hive 的核心概念
- 数据仓库:
• Hive 是一个数据仓库工具,用于存储和分析大规模的结构化数据。
• 它为分析型工作负载设计,不适合在线事务处理(OLTP)。
- HiveQL:
• Hive 提供了一种类似 SQL 的查询语言,称为 HiveQL,支持传统 SQL 的大部分功能。
• 同时扩展了 Hadoop 的能力,例如支持 MapReduce 任务的用户自定义函数(UDF)。
- Hadoop 集成:
• Hive 的查询会被转换为底层的 MapReduce 作业(或其他执行引擎如 Spark 或 Tez)运行在 Hadoop 集群上,从而利用 Hadoop 的分布式计算能力。
- 存储模型:
• Hive 的数据以表的形式存在。
• 表数据存储在 HDFS 上,Hive 中的表可以是分区的,也可以是桶(bucketed)的。
- 延迟执行:
• Hive 的设计是为了处理批处理任务,查询的执行会有较高的延迟,因此不适用于实时分析。
Hive 的架构
- 用户界面:
• CLI(命令行接口)
• JDBC/ODBC 接口
• Web UI(提供简单的界面供用户提交查询)
- 元数据存储:
• Hive 使用 Metastore 管理元数据,包括表名、列名、分区信息、数据的存储位置等。
• Metastore 通常基于关系型数据库(如 MySQL 或 PostgreSQL)实现。
- 查询引擎:
• 查询由 HiveQL 编写,查询引擎将其解析并优化,最终将其转换为 MapReduce 或其他执行框架的任务。
- 存储层:
• Hive 的底层数据存储在 HDFS 或类似的分布式存储系统中。