解决方案架构师修炼之道
上QQ阅读APP看书,第一时间看更新

4.7 根据合理的需求选择合适的存储

数十年来,组织一直在使用传统的关系型数据库,并试图将所有内容都放入其中,无论它是基于键值对的用户会话数据,还是非结构化的日志数据,或是数据仓库的分析数据。但事实上,虽然关系型数据库适用于事务性数据,但不适用于其他数据类型,就像瑞士军刀一样,它虽然有多种工具,但是毕竟能力有限,好比要盖房子,螺丝刀是无法像起重机那样工作的。同样,对于特定的数据需求,应该选择正确的工具,该工具不但可以胜任繁重的工作,还可以在不影响性能的前提下进行伸缩。

解决方案架构师在进行数据存储选型时需要考虑众多因素,以满足相应的技术要求。以下是一些重要的考虑因素:

耐久性要求:应如何存储数据以防止数据损坏?

数据可用性:哪个数据存储系统可以被用来传递数据?

延时要求:数据应该在多短的时间内返回?

数据吞吐量:数据读写的需求是什么?

数据大小:数据存储的需求是什么?

数据负载:需要支持多少并发用户?

数据完整性:如何保持数据的准确性和一致性?

数据查询:数据查询的特征是什么?

表4-1列出了不同的数据类型及其示例,以及适用的存储类型。你需要根据存储类型来制定相应的技术决策。

表4-1 数据类型及其示例与存储类型

从表4-1可以看出,数据有很多属性,例如结构化、半结构化、非结构化、键值对、流等属性。选择正确的存储不仅有助于提高应用程序的性能,还有助于提高其可伸缩性。例如,可以将用户会话数据存储在NoSQL数据库中,这将允许应用服务器在水平伸缩的同时维护用户会话。

在选择存储时,需要考虑数据的温度(数据根据温度可以分为热数据、温数据和冷数据):

□对于热数据,必须使用缓存并且延迟达到亚毫秒级的缓存数据存储。股票交易和实时产品推荐数据都是热数据。

□对于温数据(例如财务报表编制或产品性能报告数据),因为可以承受一定的延迟(从几秒到几分钟),应该使用数据仓库或关系型数据库。

□对于冷数据(例如出于审计需要而存储3年的财务记录),可以以小时为单位规划延迟,并将其存储在存档中。

根据数据的温度选择合适的存储,除了可以达到性能SLA(Service Level Agreement,服务等级协议)之外,还可以节省成本。由于任何解决方案的设计都是围绕数据处理而展开的,因此解决方案架构师始终需要深刻理解其数据,然后选择正确的技术。

在本节中,我们对数据的各个方面进行了高度的审视,以便根据数据特性选择恰当的存储。更多关于数据工程的内容见第13章。使用合适的工具完成正确的作业有助于节省成本并提高性能,因此,必须根据合理的需求选择合适的数据存储。