用于选择数据存储的条件

本文介绍评估数据存储时要使用的比较条件。 目标是帮助你确定哪些数据存储类型可以满足解决方案的要求。

一般注意事项

选择时,请记住以下注意事项。

功能要求

  • 数据格式:你要存储哪种类型的数据? 常见类型包括事务数据、JSON 对象、遥测、搜索索引或平面文件。
  • 数据大小:需要存储的实体有多大? 这些实体是否需要作为单个文档进行维护,或者是否可以在多个文档、表和集合之间拆分?
  • 规模和结构:您需要多少总储存容量? 您是否考虑对数据进行分区?
  • 数据关系:数据是否需要支持一对多或多对多关系? 关系本身是否是数据的重要组成部分? 是否需要联接或合并来自同一数据集或外部数据集中的数据?
  • 一致性模型:在可以进行进一步更改之前,一个节点中的更新才会出现在其他节点中,这是多么重要? 是否可以接受最终一致性? 是否需要针对事务实现 ACID 保证?
  • 架构灵活性:对数据应用哪些类型的架构? 你会使用固定架构、写入时架构方法还是读时架构方法?
  • 并发:更新和同步数据时要使用的哪种并发机制? 应用程序是否会执行可能冲突的许多更新? 如果是,可能需要实施记录锁定和悲观并发控制。 或者,是否可以支持乐观并发控制? 如果是这样,那么基于时间戳的并发控制是否足够简单,还是需要多版本并发控制的附加功能?
  • 数据移动:解决方案是否需要执行 ETL 任务才能将数据移到其他存储或数据仓库?
  • 数据生命周期:是数据写入一次,多次读取吗? 是否可以将其移动到凉爽存储或冷藏存储中?
  • 其他支持的功能:是否需要任何其他特定功能,例如架构验证、聚合、索引、全文搜索、MapReduce 或其他查询功能?

非功能要求

  • 性能和可伸缩性:数据性能要求是什么? 是否对数据引入速率和数据处理速率有特定要求? 引入数据后查询和聚合数据的可接受响应时间是多少? 您需要数据存储扩大到多大的规模? 工作负载是读取开销更重还是写入开销更重?
  • 可靠性:需要支持哪种整体服务级别协议? 需要为数据使用者提供哪种级别的容错? 需要哪种类型的备份和还原功能?
  • 复制:数据是否需要分布在多个副本或区域之间? 需要哪种类型的数据复制功能?
  • 限制:特定数据存储的限制是否支持缩放、连接数和吞吐量的要求?

管理和成本

  • 托管服务:尽可能使用托管数据服务,除非需要只能在基础结构即服务(IaaS)托管数据存储中找到的特定功能。
  • 区域可用性:对于托管服务,服务是否适用于所有 Azure 区域? 解决方案是否需要托管在某些 Azure 区域中?
  • 可移植性:数据是否需要迁移到本地、外部数据中心或其他云托管环境?
  • 许可:你是否偏好专有许可证类型与 OSS 许可证类型? 对可以使用哪种类型的许可证存在任何其他外部限制?
  • 总体成本:在解决方案中使用服务的总体成本是多少? 需要运行多少个实例来支持运行时间和吞吐量要求? 考虑此计算中的运营成本。 首选托管服务的一个原因是运营成本降低。
  • 成本效益:是否可以将数据分区以更有效地存储数据? 例如,可以将大型对象从昂贵的关系数据库移到对象存储中吗?

安全

  • 安全性:需要哪种类型的加密? 是否需要静态加密? 你想要使用什么身份验证机制连接到数据?
  • 审核:需要生成哪种类型的审核日志?
  • 网络要求:是否需要限制或管理从其他网络资源访问数据的权限? 数据是否需要仅在 Azure 环境中进行访问? 是否需要从特定 IP 地址或子网访问数据? 是否需要从本地或其他外部数据中心托管的应用程序或服务进行访问?

DevOps

  • 技能集:你的团队是否擅长编程语言、作系统或其他技术? 是否有其他人很难与你的团队合作?
  • 客户端:是否对开发语言有良好的客户端支持?

后续步骤