探索非关系数据的特征
关系数据库是一个很好的工具,用于存储和检索具有已知结构的数据,其中包含可以预先定义的字段。 在某些情况下,在数据到达数据库之前,你可能不具备所需的数据结构知识,无法以表格格式将数据记录为一组整齐的行和列。 这是使用各种源(如数据引入管道)的数据的系统中的常见情况。 在这些情况下,非关系数据库可能非常有用。
本单元将更详细地介绍非关系数据库的常见特性。 你将了解如何使用它们来快速捕获数据,并为结构中可能变化的数据建模。
非关系数据的特征是什么?
使用数据库对现实世界的某些方面进行建模。 现实世界中的实体通常具有高度可变的结构。 例如,在存储客户信息的电子商务数据库中,一个客户有多少个电话号码? 客户可能有座机和手机号码,但某些客户可能有业务号码、额外的家庭号码,还可能有多个手机号码。 同样,客户的地址可能并不总是采用相同的格式;不同州和地区的客户的地址可能包含不同的元素,例如美式邮政编码和英式邮政编码。
在另一种情况下,如果要快速引入数据,则需要捕获数据并快速保存数据。 此时,可能不适合处理数据并将其导入到关系数据库中不同表的一组行;稍后可执行这些任务。 引入时,只需要以原始状态和格式来存储数据。
非关系数据库的一个重要方面是,它们使你能够以非常灵活的方式来存储数据。 非关系数据库不会对数据强制一种架构。 相反,非关系数据库关注数据本身,而不是如何进行构建。 这种方法意味着可以以自然格式存储信息,这反映了使用、查询和利用信息的方式。
在非关系系统中,将实体的信息存储在集合或容器中,而不是关系表中。 同一集合中的两个实体可以具有不同的字段集,而不是在关系表中找到的常规列集。 缺少固定架构意味着每个实体都必须是自描述的。 通常,这是通过给每个字段标记它所代表的数据的名称来实现的。 例如,客户实体的非关系集合可能如下所示:
## Customer 1
ID: 1
Name: Mark Hanson
Telephone: [ Home: 1-999-9999999, Business: 1-888-8888888, Cell: 1-777-7777777 ]
Address: [ Home: 121 Main Street, Some City, NY, 10110,
Business: 87 Big Building, Some City, NY, 10111 ]
## Customer 2
ID: 2
Title: Mr
Name: Jeff Hay
Telephone: [ Home: 0044-1999-333333, Mobile: 0044-17545-444444 ]
Address: [ UK: 86 High Street, Some Town, A County, GL8888, UK,
US: 777 7th Street, Another City, CA, 90111 ]
在本示例中,字段以名称作为前缀。 字段还可以有多个带名称的子字段。 在本示例中,多个子字段用方括号表示。
添加新客户就是插入实体,其中的字段以有意义的方式进行标记。 查询此数据的应用程序必须准备好分析所检索的实体中的信息。
非关系数据库的数据检索功能可能会有所不同。 每个实体都应具有唯一键值。 集合中的实体通常按键值顺序进行存储。 在上例中,唯一键是 ID 字段。 最简单的非关系数据库类型使应用程序能够指定唯一键或指定一系列键作为查询条件。 在客户示例中,数据库将使应用程序仅按 ID 查询客户。 筛选其他字段上的数据需要扫描整个实体集合,依次分析每个实体,然后将任何查询条件应用于每个实体以查找任何匹配项。 在以下示例中,通过 ID 提取客户详细信息的查询可以快速识别要检索的实体。 如果查询要尝试查找具有 UK 地址的所有客户,则必须循环访问每个实体,并针对每个实体依次检查每个字段。 如果数据库包含数百万个实体,则运行此查询可能需要相当长的时间。
更高级的非关系系统支持索引,其方式与关系数据库中的索引类似。 然后,查询可以使用索引基于非键字段来识别和提取数据。 非关系系统,如 Azure Cosmos DB(Azure 中可用的非关系型数据库管理系统)支持索引,即使索引数据的结构可能因记录而异。 有关详细信息,请参阅 Azure Cosmos DB 概述中的索引。
设计非关系数据库时,重要的是要了解数据库管理系统的功能以及它必须支持的查询类型。
备注
非关系数据库通常会提供自己的专有语言来管理和查询数据。 此语言可能是程序语言(按顺序遵循一组命令),或者可能类似于 SQL;这取决于数据库管理系统实现数据库的方式。
识别非关系数据库用例
非关系数据库非常适合以下场景:
-
IoT(物联网) 和远程信息处理。 这些系统通常在频繁的突发活动中引入大量数据。 非关系数据库可以非常快速地存储此信息。 此数据随后可用于 Azure 机器学习、Azure HDInsight 和 Microsoft Power BI 等分析服务。 此外,还可使用在数据到达数据库时触发的 Azure Functions 实时处理此数据。
-
零售和市场营销。 Microsoft 将 CosmosDB 用于自己的电子商务平台,这些平台作为 Windows Store 和 Xbox Live 的一部分进行运行。 它还在零售行业中用于存储目录数据和顺序处理管道中的事件源。
-
游戏。 数据库层是游戏应用程序的关键组件。 新式游戏可在移动/控制台客户端执行图形处理,但需依赖云传输自定义的个性化内容,例如游戏中的统计数据、社交媒体集成以及高分排行榜。 游戏通常需要单毫秒的读写延迟来提供游戏体验。 新游戏启动和功能更新期间,游戏数据库需要具备很快的速度,并且要能够处理请求速率中的大量峰值。
-
Web 和移动应用程序。 非关系数据库(如 Azure Cosmos DB)通常用于 Web 和移动应用程序中,同时非常适合用于社交互动建模、与第三方服务集成以及构建丰富的个性化体验。 Cosmos DB SDK(软件开发工具包)可用于通过热门的 Xamarin 框架构建丰富的 iOS 和 Android 应用程序。
关系数据库将数据重组到一种专用于响应特定查询的固定格式。 如果需要非常快地引入数据,或者查询未知且不受约束,那么非关系数据库比关系数据库更适合。