写点什么

Cloud Directory 更新 – 对类型化链接的支持

  • 2019-11-14
  • 本文字数:2659 字

    阅读完需:约 9 分钟

Cloud Directory 更新 – 对类型化链接的支持

今年早些时候,我谈论了 Cloud Directory – 用于分层数据的云原生目录以及它如何存储大量强类型分层数据。由于 Cloud Directory 可扩展到数亿个对象,因此它非常适合许多云和移动应用程序。在我的原始博客文章中,我已经说明每个目录如何具有一个或多个架构,以及每个架构如何又具有一个或多个分面。每个分面为对象定义所需的和允许的属性集。


类型化链接简介


现在,我们通过增加对类型化链接的支持,来增强 Cloud Directory 模型的表现力。您可以使用这些链接在层次结构中创建对象-对象关系。可以为每个目录定义多种链接 (每种链接类型均是与目录关联的其中一个架构中的单独分面)。除了类型之外,每个链接还可具有一组属性。类型化链接可帮助确保不会无意中删除目前与其他对象有关系的对象,从而保持参考数据的完整性。假定您具有包含位置、工厂、楼层、房间、机器和传感器的目录。上述每个项均可表示为 Cloud Directory 中的一个维度,它在层次结构中具有丰富的元数据信息。您可以定义和使用类型化链接以通过各种方式将对象联系在一起,并创建导致维护要求、服务记录、担保和安全信息的类型化链接,以及链接上用于存储有关源对象和目标对象之间的关系的其他信息的属性。随后,您可以根据链接类型和链接中的属性值来运行查询。例如,您可以找到过去 45 天内未清除的所有传感器,或已超过保修期的所有电机。您可以查找指定楼层的所有传感器,也可以查找给定类型的传感器所在的所有楼层。


使用类型化链接


要使用类型化链接,您只需使用 CreateTypedLinkFacet 函数将一个或多个类型化链接分面添加到架构。然后,调用 AttachTypedLink,并传入源对象和目标对象、类型化链接分面和链接的属性。其他有用函数包括 `` GetTypedLinkFacetInformationListIncomingTypedLinksListOutgoingTypedLinks。要了解更多信息和查看完整函数列表,请查看 Cloud Directory API 参考。就像为对象执行的操作一样,您可以使用属性规则来约束属性值。您可以约束字符串和字节数组的长度、将字符串限定为一组指定的值并将数目限定为特定范围。我的同事分享了一些示例代码来说明如何使用类型化链接。以下是 ARN 和分面名称:


Java


String appliedSchemaArn   = "arn:aws:clouddirectory:eu-west-2:XXXXXXXXXXXX:directory/AbF4qXxa80WSsLRiYhDB-Jo/schema/demo_organization/1.0";String directoryArn       = "arn:aws:clouddirectory:eu-west-2:XXXXXXXXXXXX:directory/AbF4qXxa80WSsLRiYhDB-Jo";String typedLinkFacetName = "FloorSensorAssociation";
复制代码


第一个代码段按以下顺序创建名为 FloorSensorAssociation 的类型化链接分面,带有 sensor_typemaintenance_date 属性 (属性名和值是链接标识的一部分,因此顺序很重要):


Java


client.createTypedLinkFacet(new CreateTypedLinkFacetRequest()                                .withSchemaArn(appliedSchemaArn)                                .withFacet(                                      new TypedLinkFacet()                                          .withName(typedLinkFacetName)                                          .withAttributes(toTypedLinkAttributeDefinition("sensor_type"),                                                          toTypedLinkAttributeDefinition("maintenance_date"))                                          .withIdentityAttributeOrder("sensor_type", "maintenance_date")));
private TypedLinkAttributeDefinition toTypedLinkAttributeDefinition(String attributeName) { return new TypedLinkAttributeDefinition().withName(attributeName) .withRequiredBehavior(RequiredAttributeBehavior.REQUIRED_ALWAYS) .withType(FacetAttributeType.STRING);}
复制代码


下一个代码段创建两个对象 (sourceFloortargetSensor) 之间的链接,带有 sensor_type watermaintenance_date 2017-05-24


Java


AttachTypedLinkResult result =     client.attachTypedLink(new AttachTypedLinkRequest()                               .withDirectoryArn(directoryArn)                               .withTypedLinkFacet(                                   toTypedLinkFacet(appliedSchemaArn, typedLinkFacetName))                                   .withAttributes(                                        attributeNameAndStringValue("sensor_type", "water"),                                        attributeNameAndStringValue("maintenance_date", "2017-05-24"))                                   .withSourceObjectReference(sourceFloor)                                   .withTargetObjectReference(targetSensor));
private TypedLinkSchemaAndFacetName toTypedLinkFacet(String appliedSchemaArn, String typedLinkFacetName) { return new TypedLinkSchemaAndFacetName() .withTypedLinkName(typedLinkFacetName) .withSchemaArn(appliedSchemaArn);}
复制代码


最后一个代码段枚举了 sensor_type watermaintenance_date 的所有传入类型化链接,范围为 2017-05-202017-05-24


Java


client.listIncomingTypedLinks(    new ListIncomingTypedLinksRequest()        .withFilterTypedLink(toTypedLinkFacet(appliedSchemaArn, typedLinkFacetName))        .withDirectoryArn(directoryArn)        .withObjectReference(targetSensor)        .withMaxResults(10)        .withFilterAttributeRanges(attributeRange("sensor_type", exactRange("water")),                                   attributeRange("maintenance_date",                                                   range("2017-05-20", "2017-05-24"))));
private TypedLinkAttributeRange attributeRange(String attributeName, TypedAttributeValueRange range) { return new TypedLinkAttributeRange().withAttributeName(attributeName).withRange(range);}
private TypedAttributeValueRange exactRange(String value) { return range(value, value);}
复制代码


要了解更多信息,请参阅 Cloud Directory 管理指南中的对象和链接


现已推出


类型化链接现已提供,您可以立即开始使用!


本文转载自 AWS 技术博客。


原文链接:


https://amazonaws-china.com/cn/blogs/china/loud-directory-update-support-for-typed-links/


2019-11-14 08:00854

评论

发布
暂无评论
发现更多内容

企业必备:YashanDB数据库部署与优化详解

数据库砖家

【TiDB 高可用实践】基于Haproxy+keepalived实现负载均衡

TiDB 社区干货传送门

TiDB第四届征文-运维开发之旅 TiDB第四届征文-业务场景实战

平凯数据库(TiDB 企业版)敏捷模式数据库试用

TiDB 社区干货传送门

TEM 试用

TiDB MCP Server 实践和思考

TiDB 社区干货传送门

TiDB第四届征文-运维开发之旅

从 MySQL 到 TiDB:调研、测试、迁移、上线全流程实施方案

TiDB 社区干货传送门

MySQL 迁移

利用YashanDB数据库构建企业的信息化管理系统

数据库砖家

两种 TiDB 备份方案任你选择:NFS or S3(内含操作实践/备份/恢复)

TiDB 社区干货传送门

TiDB第四届征文-运维开发之旅 TiDB第四届征文-业务场景实战

从 MySQL 到 TiDB:成本详解

TiDB 社区干货传送门

MySQL 迁移

平凯数据库(TiDB 企业版)敏捷模式部署测试

TiDB 社区干货传送门

平凯数据库(TiDB 企业版)敏捷模式在消防管理平台的实践评估报告

TiDB 社区干货传送门

敏捷模式

YashanDB在数据治理中的作用与效果评估

数据库砖家

TiDB敏捷模式部署测试

TiDB 社区干货传送门

TEM 试用

关于 decimal 精度问题

TiDB 社区干货传送门

8.x 实践

TiDB + AiOps,迈入智能运维新时代

TiDB 社区干货传送门

TiDB第四届征文-业务场景实战

利用YashanDB数据库构建稳定可靠的业务系统

数据库砖家

灵活使用YashanDB实现企业级数据权限管控

数据库砖家

企业必备:YashanDB数据库性能优化全攻略

数据库砖家

平凯数据库敏捷模式体验:助力电商行业实现降本增效

TiDB 社区干货传送门

版本测评 性能测评 敏捷模式

从 1 台服务器起步!TiDB 企业版敏捷模式试用:低成本享分布式数据库核心能力

TiDB 社区干货传送门

集群管理 TEM 试用 部署与初始化

一家“小而杂”的零售SaaS公司,为什么把数据库从 MySQL “搬”上平凯数据库(TiDB 企业版)敏捷模式?

TiDB 社区干货传送门

我和 TiDB 的故事,是偶然也是一种必然

TiDB 社区干货传送门

TiDB第四届征文-运维开发之旅

破解YashanDB数据库性能瓶颈的有效策略

数据库砖家

演讲案例|兆翔科技 x TiDB:利用TiDB 助力福建四大机场核心系统高效运营

TiDB 社区干货传送门

物流 / 交通

TiDB集群运维管控试用

TiDB 社区干货传送门

TEM 试用

国产化浪潮中如何评估一款国产数据库的真实实力

TiDB 社区干货传送门

技术趋势 国产化替代 TiDB第四届征文-运维开发之旅 TiDB第四届征文-业务场景实战

利用YashanDB数据库实现多维数据分析

数据库砖家

利用YashanDB数据库实现数据生命周期管理最佳实践

数据库砖家

离线部署tidb-8.5.3

TiDB 社区干货传送门

# 学生视角下平凯数据库敏捷模式的学习与探索体验

TiDB 社区干货传送门

企业IT架构升级必备:YashanDB数据库应用框架介绍

数据库砖家

TiDB 多列索引功能:以更快响应速度、最小化表扫描和流畅性能应对大规模场景

TiDB 社区干货传送门

性能调优

Cloud Directory 更新 – 对类型化链接的支持_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章