Azure架构设计之选择合适的数据存储服务
前篇我们谈到了选择合适的Azure计算资源,本文主要介绍选择您合适的数据存储资源,帮助我们确定哪些数据存储类型可以满足您的业务架构设计需求。
Azure支持许多类型的数据存储解决方案,每个都提供了不同的特性和功能。选择合适的数据存储之前,首先需要收集关于数据存储的需求,然后和Azure现有的数据存储解决方案进行匹配进行筛选。
功能要求:
数据格式 |
打算存储什么类型的数据?常见类型包括事务数据、JSON 对象、遥测、搜索索引或平面文件。 |
数据大小 |
需要存储的实体有多大?这些实体是需要保持为单个文档,还是可以将它们拆分到多个文档、表和集合中? |
规模和结构 |
需要的存储容量总量是多少?是否预期对数据进行分区? |
数据关系 |
数据是否需要支持一对多或多对多关系?关系本身是否是数据的重要部分?是否需要联接或组合来自同一数据集或来自外部数据集的数据? |
一致性模型 |
确保在一个节点中所做更新出现在其他节点中后才能做进一步更改有多重要?是否可以接受最终一致性?是否需要针对事务实现ACID保证? |
架构灵活性 |
将向数据应用什么类型的架构?将使用固定架构、写入时架构方法还是读取时架构方法? |
并发 |
在更新和同步数据时希望使用什么类型的并发机制?应用程序是否将执行可能会冲突的许多更新?如果是,你可能需要实施记录锁定和悲观并发控制。或者,是否可以支持乐观并发控制?如果是,采用简单的基于时间戳的并发控制已经足够,还是需要附加的多版本并发控制功能? |
数据移动 |
解决方案是否需要执行ETL任务将数据移动到其他存储或数据仓库? |
数据生命周期 |
数据是否写入一次读取多次?是否可以将其移动到冷存储中? |
支持的其他功能 |
是否需要任何其他特定功能,例如架构验证、聚合、索引、全文搜索、MapReduce或其他查询功能? |
非功能性要求:
性能和可伸缩性 |
数据性能要求有哪些?对数据引入速率和数据处理速率是否有特定要求?在引入数据后,查询和聚合数据时可接受的响应时间是多少? 需要将数据纵向扩展到多大的规模?工作负荷是读取开销更重还是写入开销更重? |
可靠性 |
选择的数据存储解决方案的SLA?需要为数据使用者提供什么级别的容错?需要什么类型的备份和还原功能? |
复制 |
数据是否需要分布在多个副本或区域中?需要什么类型的数据复制功能? |
限制 |
特定数据存储的限制是否可以支持你对规模、连接数和吞吐量的要求? |
管理和成本
托管服务 |
如果可能,请使用托管数据服务,除非你需要只有IaaS托管数据存储中才提供的特定功能。 |
区域可用性 |
对于托管服务,服务是否在所有Azure区域中都可用?解决方案是否需要托管在特定的Azure区域中? |
可移植性 |
需要将数据迁移到本地、外部数据中心还是其他云托管环境? |
许可 |
在专有许可证类型与OSS 许可证类型之间,你是否有偏好?对于可以使用哪些类型的许可证,是否有任何其他外部限制? |
总体成本 |
使用云端数据存储服务的总体成本是多少?需要运行多少个实例来支持运行时间和吞吐量要求?在此计算中,请考虑运营成本。 首选使用托管服务的一个原因是降低了运营成本 |
成本效益 |
是否可以对数据进行分区以便经济高效地存储数据?例如,是否可以将大型对象从昂贵的关系数据库移动到对象存储中? |
安全性
安全性 |
需要哪种类型的加密?是否需要静态加密?希望使用哪种身份验证机制来连接到数据? |
审核 |
需要生成哪种类型的审核日志? |
网络要求 |
是否需要限制或管理从其他网络资源对数据的访问?是否要求只能从Azure环境内访问数据?是否要求可以从特定的IP地址或子网访问数据?是否要求可以从在本地或其他外部数据中心内托管的应用程序或服务访问数据? |
DevOps
技能集 |
是否有你的团队特别善于使用的特定编程语言、操作系统或其他技术? 是否有你的团队难以使用的其他技术? |
客户端 |
对于你的开发语言是否有良好的客户端支持? |
下面各部分从业务系统的工作负荷配置文件、数据类型和典型使用场景等方面对各种数据存储模型进行了比较。
关系数据库管理系统 (RDBMS),主要产品有:
Azure SQL 数据库:
https://azure.microsoft.com/zh-cn/services/sql-database/
Azure Database for MySQL:
https://azure.microsoft.com/zh-cn/services/mysql/
Azure Database for PostgreSQL:
https://azure.microsoft.com/zh-cn/services/postgresql/
业务负载 |
|
数据类型 |
|
典型使用场景 |
|
文档数据库,主要产品有Azure Cosmos DB:
https://azure.microsoft.com/zh-cn/services/cosmos-db/
业务负载 |
|
数据类型 |
|
典型使用场景 |
|
键/值存储,主要产品有
Azure Cosmos DB:
https://azure.microsoft.com/zh-cn/services/cosmos-db/
Azure Redis 缓存
https://azure.microsoft.com/zh-cn/services/cache/
业务负载 |
|
数据类型 |
|
典型使用场景 |
|
图形数据库,主要产品有Azure Cosmos DB:
https://azure.microsoft.com/zh-cn/services/cosmos-db/
业务负载 |
|
数据类型 |
|
典型使用场景 |
|
消息队列数据库,主要产品有:HDInsight 中的 HBase
https://docs.microsoft.com/zh-cn/azure/hdinsight/hbase/apache-hbase-overview
业务负载 |
|
数据类型 |
|
典型使用场景 |
|
搜索引擎数据库,主要产品有:Azure Search
https://azure.microsoft.com/zh-cn/services/search/
业务负载 |
|
数据类型 |
|
典型使用场景 |
|
数据仓库,主要产品有Azure SQL数据仓库
https://azure.microsoft.com/zh-cn/services/sql-data-warehouse/
业务负载 |
|
数据类型 |
|
典型使用场景 |
|
时序数据库,主要产品有Azure 时序见解
https://azure.microsoft.com/zh-cn/services/time-series-insights/
业务负载 |
|
数据类型 |
|
典型使用场景 |
|
对象存储,主要产品有Azure Blob Storage
https://azure.microsoft.com/zh-cn/services/storage/blobs/
业务负载 |
|
数据类型 |
|
典型使用场景 |
|
共享文件,主要产品有Azure File
https://azure.microsoft.com/zh-cn/services/storage/files/
业务负载 |
|
数据类型 |
|
典型使用场景 |
|
当然,Azure也提供磁盘存储,Azure中的虚拟机将磁盘用作存储操作系统、应用程序和数据的位置。所有Azure虚拟机都至少有两个磁盘,即Windows/Linux操作系统磁盘和临时磁盘。操作系统磁盘基于映像创建,操作系统磁盘和该映像都存储在Azure存储帐户中的虚拟硬盘 (VHD) 内。虚拟机还可以有一个或多个数据磁盘。
磁盘存储:https://azure.microsoft.com/zh-cn/services/storage/disks/
- 标准HDD:低成本存储,用于不频繁的数据访问
- 标准SSD:经济高效的一致性能高级
- 高级SSD:亚毫秒级延迟以及超高可缩放性能
- 超级SSD:用于生产工作负载的高性能磁盘存储
本文固定链接: http://365vcloud.net/2019/01/26/choosing-the-right-data-storage-in-azure/ | 365vCloud的云计算之旅