创建和编辑弹性表
弹性表是 Microsoft Dataverse 托管的表。 弹性表带来与标准表同样的熟悉用户体验和 API。 它们与标准表在许多方面和选项相同,但是有自己独有的特性和功能,这些特性和功能由 Azure Cosmos DB 提供支持。
和标准表一样,您的 Dataverse 数据库容量使用量中包含弹性表。
观看此视频,了解有关弹性表的信息。
何时考虑使用 Dataverse 弹性表?
弹性表用于实时处理大量数据。 使用弹性表,您可以导入、存储和分析大量数据,而不会出现扩展性、可伸缩性或性能问题。
弹性表具有灵活的架构、水平缩放和一段时间之后自动删除数据的独特功能。
弹性表可自动扩展为每小时吸收上千万行。 后台进程可以整理 IoT 信号,预测维护要求和提前安排技术人员。
请考虑以下情形:Contoso 是拥有数百万现有客户的零售商。 Contoso 拥有庞大的客户数据库,并正在寻求在留住客户的同时提高销售额。 根据以前的客户历史记录,他们正在寻找使用针对客户和产品的不同优惠券的 24 小时快闪销售活动。 他们估计每场销售市场活动需要的优惠券数量超过 1 亿张。 市场营销计划举办多场针对不同客户细分市场的 24 小时市场活动。
Contoso 的市场营销应用程序要求是,必须可以在数小时内吸收多达 1 亿或更多优惠券详细信息,每小时读取上百万优惠券,以及向客户发送优惠券。
弹性表将针对这种高吞吐量场景自动扩展。
例如,在上面的场景中,可以将一个包含上百万条记录的弹性表 Coupon 与 Contact(客户信息)和 Offer(自定义的标准表)之类 Dataverse 标准表关联。 由于弹性表独立于标准表,因此不会对整体市场营销应用程序的性能造成负面影响。 此外,弹性表(本场景中为 Coupon)的生存时间功能允许在固定时间段后自动删除数据,从而确保优化存储容量。
弹性表的使用场景:
- 您的数据可能是非结构化数据或半结构化数据,或者您的数据模型可能持续改变。
- 您需要自动进行水平缩放。
- 您需要处理大量读取和写入请求。
标准表的使用场景:
- 您的应用程序需要强一致性。
- 您的应用程序需要关系建模,并且在插件执行阶段需要跨表的交易容量。
- 您的应用程序需要复杂联接。
应基于应用程序的具体需求选择表。 可以使用这两种表的组合。
水平缩放和性能
随着业务数据增长,弹性表将根据应用程序工作负荷提供无限的自动扩展性(存储大小和吞吐量),例如,在给定时间范围内创建、更新或删除的记录数量。
如果您的业务场景需要极大量的数据写入,应用程序制作者可以使用 Dataverse 多请求 API(例如 CreateMultiple
、UpdateMultiple
和 DeleteMultiple
)在 Dataverse 限制内达到更大吞吐量。 详细信息:开发人员指南:批量操作消息和优化批量操作的性能
自动删除数据
生存时间 (TTL) 策略可确保您始终处理最新且准确的信息,同时优化资源并降低风险。 为记录设置的 TTL 生存值以秒为单位,并且解释为自上次修改记录以来的时间增量。
具有 JSON 列的灵活架构
通过弹性表,您可以存储和查询结构不同的数据,而无需预定义的架构或迁移。 无需编写自定义代码以将导入的数据映射到固定架构中。 详细信息:开发人员指南:查询弹性表中的 JSON 列通过弹性表,您可以存储和查询结构不同的数据,而无需预定义的架构或迁移。 无需编写自定义代码以将导入的数据映射到固定架构中。 详细信息:开发人员指南:查询弹性表中的 JSON 列
使用弹性表时的注意事项
虽然弹性表非常适合大规模处理大量请求,请不要忘记,有得则有失:
- 弹性表不支持多记录事务。 这意味着,在单个请求执行过程中发生多个写入操作时,这些操作不会相互作用。 例如,如果您在弹性表中
Create message
的PostOperation
阶段注册同步插件步骤,插件中的任何错误都不会回滚在 Dataverse 中创建的记录。 预插件中的验证仍将正常工作,因为它们在主阶段之前运行。 - 弹性表只有在逻辑会话内才支持强一致性。 在会话上下文外部,可能不会立即看到对行的更改。 详细信息:开发人员指南:一致性级别
- 通常在使用 API 创建视图、高级查找或任何查询时,弹性表不支持对相关表使用筛选器。 如果您经常需要筛选相关表列,建议您对相关表中的列进行非规范化,这需要在主表本身中进行筛选。 假设一位零售商有两个弹性表:客户和地址。 一个客户有多个地址。 您希望从客户表中返回其地址表中的城市值为纽约的所有客户的查询结果。 在此示例中,在查询客户表时,您希望对相关地址表的城市列应用筛选器。 弹性表不支持这一点。 其中一种实现方法是非规范化客户表中的城市列,从而使客户表本身包含所有客户的城市值。
弹性表功能支持
- 创建、检索、更新、删除 (CRUD) 操作,包括 API 多个操作(针对高吞吐量)、批量删除和插件请求。
- 关系:
- 一对多
- N 表是标准表时的多对一关系
- 记录所有权、更改跟踪、审核、移动脱机和 Dataverse 搜索。
- 具有文件类型属性的文件列
安全功能支持
弹性表采用 Dataverse 安全模型。
创建弹性表时,您可以设置:
- 负责的用户或组织
- 字段级安全性
弹性表目前不支持的功能
弹性表目前不支持的表功能:
- 业务规则
- 图表
- 业务流程流
- 一个适用于 Power BI 的 Dataverse 连接器
- 标准表的多对多 (N:N) 关系
- 备用键
- 重复检测
- 计算和汇总列
- 货币列
- 查询中的列比较
- 表共享
- 复合索引
- 级联操作:删除、重定父级、分派、共享、取消共享
- 对查找列筛选
- 聚合查询:
- 按
attribute2
值排序时的非重复attribute1
值 - 具有多个非重复值时的分页
- 具有多个排序依据时的非重复值
- 排序依据加分组依据
- 链接实体的分组依据(左外部联接)
- 用户负责的表中的非重复值
- 按
- 表连接
- 访问团队
- 队列
- 附件
弹性表目前不支持列数据类型:
- 货币
- 公式
- 非无的整数格式(持续时间、语言代码和时区)
- 基于“客户”选项的查找
创建弹性表
创建弹性表就像在 Dataverse 中创建其他任何新表。
- 登录到 Power Apps,然后在左侧导航窗格上选择表。 如果项目不在侧面板窗格中,请选择 …更多,然后选择所需项目。
- 在命令栏上选择新建表 > 设置高级属性。
- 在右侧属性窗格上,输入显示名称和复数名称。
- 展开高级选项,然后选择弹性作为表类型。
- 选择所需属性,然后选择保存。
将为弹性表自动创建生存时间列。 您可以根据需要添加以秒为单位的时间段值。 指定时间段后数据将自动删除。
有关表的详细信息:高级选项
已知问题
- 当对某一行使用生存时间 (TTL) 时,该行将在 TTL 过期后从弹性表中删除。 如果在 TTL 过期之前使用 Azure Synapse Link for Dataverse 将其同步到数据湖,则不会将其从数据湖中删除。
- 时间点还原不会还原“已更新”记录,因为更新未备份。 仅还原已创建和已删除的记录。
- 如果删除弹性表中的特定列,该列值不会从表行中删除(如果它有数据)。 在删除特定列之前,请删除该列的所有行中的数据。
大量弹性表和管理 Dataverse API 限制
使用批量操作消息。 这使您可以在相同的 Dataverse API 限制下达到 10 倍的吞吐量。 开发人员可以参考下一节中提供的更多链接。
面向开发人员
开发人员为 Dataverse API 使用表时,弹性表的行为和功能与标准表不同。 以下开发人员文章介绍这些差异: