数据架构:概念与冷热分离

简介: 关于架构,大家都有了解和理解。通常一个业务或项目,在做架构设计时,可能会包含业务架构和技术架构。其中技术架构是我们作为开发角色,在做设计时重点的工作内容。但还有架构类型的划分方式,会包括业务架构、技术架构、数据架构和应用架构四种。

一 什么是数据架构

   关于架构,大家都有了解和理解。通常一个业务或项目,在做架构设计时,可能会包含业务架构和技术架构。其中技术架构是我们作为开发角色,在做设计时重点的工作内容。但还有架构类型的划分方式,会包括业务架构、技术架构、数据架构和应用架构四种。

   数据架构管理的内容包括管理对象、管理流程、管理组织,管理对象又包括数据标准、数据模型、数据库、数据质量。总之,数据架构就是由一定的管理组织,通过一系列管理流程,来实现对数据对象的管理。数据架构构成如下图所示:

二 为什么需要数据架构

   “经验来源于实践”。经历过一个或多个中大型项目/产品生命周期的朋友,大多会有这样的经验。在项目早期时,为了快速验证,会以尽快上线运行为最主要的目标,架构设计会有数据结构部分,但不会过多设计。在项目快速发展之后,频繁的表结构变更、数据类型变化会带来一系列的问题,尤其是当可能发生拆库、分表等动作之后,带来几个典型的数据问题:

2.1 数据标准不一致

  • 列名相同,数据类型不同;
  • 列名相同,数据类型相同,长度不同;
  • 列名定义没有统一标准,识别困难;
  • 列名定义不统一,类型不统一,长度不同;

2.2 数据模型混乱

  • 表、字段缺乏注释;
  • 表无主键、允许为NULL列;
  • 表关系不清晰;
  • 不合理的冗余设计;

2.3 性能问题

  • 对表结构、索引理解、使用不当;
  • SQL的编写与开发者的技术水平有关,当sql编写不当且缺乏审核导致带入线上,就会导致性能问题

2.4 数据缺乏安全管理

表结构规范;

索引合理性设计、创建检查;

SQL质量;

数据安全管理(插入、删除、更新,以及批量查询动作)

三 数据架构生命周期

   数据架构的重点是数据的标准化处理,这会贯穿于系统/项目的整个生命周期。包括数据架构设计阶段、开发阶段、迁移阶段、测试阶段等等。

四 数据冷热分离

4.1 大数据存储方案

   关于大数据量的存储方案,常用的有分库分表方案,可以选用多种分库分表技术和中间件来实现。但有一个问题,当单表数据量到达多少的时候执行分库分表?

4.2 单表上限2000w的起源

  一直有这样一种说法,MySQL 单表数据量大于 2000 万行,性能会明显下降。冷热分离之 OTS 表格存储实战这篇文章中给出了来源:这个传闻据说最早起源于百度。“具体情况大概是这样的,当年的 DBA 测试 MySQL性能时发现,当单表的量在 2000 万行量级的时候,SQL 操作的性能急剧下降,因此,结论由此而来。然后又据说百度的工程师流动到业界的其它公司,随之也带去了这个信息,所以,就在业界流传开这么一个说法。再后来,阿里巴巴《Java 开发手册》提出单表行数超过 500 万行或者单表容量超过2GB,才推荐进行分库分表。对此,有阿里的黄金铁律支撑,所以,很多人设计大数据存储时,多会以此为标准,进行分表操作。”

   背后的原理,大家也可以仔细阅读这篇文章,简单来说,这个说法源于Mysql的InnoDB引擎的存储结构和索引结构。记录数过多时导致B+树高度过高从而需要多次IO,导致性能明显下降。

4.3 冷热分离

4.3.1 数据的冷热划分

   首先,绝大部分场景,数据都可以分为“冷数据”和“热数据”。数据划分的原则,可以根据时间远近、热点/非热点用户等等。例如在以往项目中的实例,用户通常只访问一段时间之内的数据,例如近一周或一个月。如果数据不做划分,必然会导致一定程度上的性能、成本损耗。

4.3.2 冷热分离好处

   通过合理的冷热分离设计,可以达到的好处:

  • 降低单表数据量,提升单表性能
  • 大量业务冷数据转冷存,存储成本可以降低很多,至少50%+

五 冷热分离方案

   需要考虑的包括存储方案、数据迁移方案,另外需要做历史查询时也需要支持聚合查询和自动的冷热查询路由。

5.1 存储方案

   存储方案,包括本地方案和云方案。本地的存储介质,通常是硬盘,但通常机械硬盘会受限于磁盘空间和IO瓶颈,这也是单表限制的主要原因。所以一般处于性能提升的考虑,会使用固态硬盘(SSD)。但SSD成本较高(远高于机械硬盘),所以不适合海量数据存储,这时候就需要考虑磁盘阵列等等。另外,磁带也是一种方案,但仅适合历史数据的持久化保存,和必要时做数据恢复,本身并不适合查询。

   如果能够接受云方案,那么可选的就有云硬盘作为DB的存储介质、或者是云服务上提供的冷热存储(blob、表格存储)。阿里云的OTS就是一种表格存储实现,其技术架构如下图所示:

5.2 迁移方案

   数据有冷热划分,那么就会有界限、生命周期。新的数据写入时,其属性是“热”的;当到达某个时间节点或预设阈值时,就需要把数据迁移到“冷”数据存储。这里又涉及到几个问题:

  • 冷热数据标记
  • 迁移方法。时效性保障
  • 数据一致性

另外,为了保证冷热数据迁移过程中业务系统的稳定性,在数据迁移的过程中还一定要做到:可灰度[降低影响,提前发现],可一键回滚[快速止血]。

总结

   本文介绍了数据架构的概念、意义,以及数据的冷热分离,并阐述了冷热分离方案和注意事项。本篇作为综述,在后续系列文章中会通过实际案例来进一步探究数据架构的内容。

参考文章

数据架构-什么是数据架构

相关实践学习
阿里云表格存储使用教程
表格存储(Table Store)是构建在阿里云飞天分布式系统之上的分布式NoSQL数据存储服务,根据99.99%的高可用以及11个9的数据可靠性的标准设计。表格存储通过数据分片和负载均衡技术,实现数据规模与访问并发上的无缝扩展,提供海量结构化数据的存储和实时访问。 产品详情:https://www.aliyun.com/product/ots
相关文章
|
2月前
|
存储 负载均衡 分布式数据库
bigdata-27-HBase架构与概念
bigdata-27-HBase架构与概念
60 1
|
2月前
|
消息中间件 存储 缓存
Kafka【基础知识 01】消息队列介绍+Kafka架构及核心概念(图片来源于网络)
【2月更文挑战第20天】Kafka【基础知识 01】消息队列介绍+Kafka架构及核心概念(图片来源于网络)
111 2
|
3月前
|
SQL 分布式计算 Hadoop
Azkaban【基础 01】核心概念+特点+Web界面+架构+Job类型(一篇即可入门Azkaban工作流调度系统)
【2月更文挑战第6天】Azkaban【基础 01】核心概念+特点+Web界面+架构+Job类型(一篇即可入门Azkaban工作流调度系统)
102 0
|
4月前
|
领域建模
架构设计 DDD领域建模 核心概念
【1月更文挑战第6天】架构设计 DDD领域建模 核心概念
|
7月前
|
监控 负载均衡 测试技术
服务网格简介:探索现代微服务架构中的服务网格概念和价值
服务网格简介:探索现代微服务架构中的服务网格概念和价值
115 0
|
7月前
|
XML Java 数据格式
Spring框架(二) 底层架构核心概念解析-四万字你值得一看
上面说到解析为BeanDefintion之后会注册到Spring容器中 , 那么什么是容器? 其实在DefaultListableBeanFactory这个类中就有体现 , 源码中是这样定义的
60 0
|
5月前
|
存储 分布式计算 Hadoop
【大数据技术Hadoop+Spark】HDFS概念、架构、原理、优缺点讲解(超详细必看)
【大数据技术Hadoop+Spark】HDFS概念、架构、原理、优缺点讲解(超详细必看)
151 0
|
3天前
|
监控 云计算 开发者
探索云计算中的无服务器架构:从概念到实践
无服务器架构作为云计算领域的新兴技术,正在以其高效、灵活的特性吸引着越来越多的开发者和企业。本文将深入探讨无服务器架构的概念及其在云计算中的应用,通过实际案例展示如何利用无服务器架构构建可靠、可扩展的应用系统。
|
12天前
|
安全 Java 数据安全/隐私保护
Spring Boot优雅实现多租户架构:概念与实战
【4月更文挑战第29天】在多租户系统中,一个应用实例服务于多个租户,每个租户享有独立的数据视图,而应用的基础设施被共享。这样的架构不仅优化了资源使用,还能降低维护和运营成本。本文将详细介绍如何在Spring Boot中实现多租户架构,并提供具体的实战案例。
38 2
|
14天前
|
敏捷开发 运维 监控
【专栏】微服务架构,以敏捷、灵活著称,通过拆分大型应用为小型自治服务,简化开发运维
【4月更文挑战第27天】微服务架构,以敏捷、灵活著称,通过拆分大型应用为小型自治服务,简化开发运维。本文探讨其基本概念、起源,核心优势(如敏捷开发、高可伸缩性)及挑战(系统复杂度、数据一致性),并分享实施策略(服务划分、技术选型、CI/CD)与实践案例(Netflix、Uber、Spotify),展示微服务如何重塑软件开发,并成为未来复杂应用系统的基础。