产品战略专家梁宁确认出席AICon北京站,分享AI时代下的商业逻辑与产品需求 了解详情
写点什么

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:00630

评论

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

云原生网关哪家强:Sealos 网关血泪史

阿里巴巴云原生

阿里云 云原生 Sealos

2024-01-24:用go语言,已知一个n*n的01矩阵, 只能通过通过行交换、或者列交换的方式调整矩阵, 判断这个矩阵的对角线是否能全为1,如果能返回true,不能返回false。 我们升级一下:

福大大架构师每日一题

福大大架构师每日一题

数仓如何递归查询视图依赖

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 华为云GaussDB(DWS)

光纤的跳线和尾纤

小齐写代码

【Linux技术专题】「夯实基本功系列」带你一同学习和实践操作Linux服务器必学的Shell指令(排查问题指令 - 下)

洛神灬殇

Linux 日志处理 Shell指令 查询日志 2024年第二十篇文章

Koordinator v1.4 正式发布!为用户带来更多的计算负载类型和更灵活的资源管理机制

阿里巴巴云原生

阿里云 云原生 Koordinator

如何从 Jira 成功迁移到极狐GitLab,看这个就够了!

极狐GitLab

uniapp+unicloud开发一个网页端,小程序端,APP端,桌面端的博客CMS系统——万能的三三

万能的三三

JavaScript 小程序 uni-app CMS 博客

数值计算: 精度、溢出、舍入

西格玛

什么是网络地址转换协议

郑州埃文科技

10分钟白嫖一套监控系统

Yestodorrow

可观测性 用户体验 网站监控 # 监控系统

CDP技术系列(三):百万级QPS的人群命中服务接口性能优化指南

京东科技开发者

期待已久!阿里云容器服务 ACK AI 助手正式上线

阿里巴巴云原生

阿里云 容器 云原生

Kube Queue:Kubernetes 任务排队的利器

阿里巴巴云原生

阿里云 Kubernetes Kuber 云原生

Live Home 3D Pro for Mac(苹果电脑3D室内家居设计软件)

Rose

Mac软件 Live Home 3D Pro 家居设计软件 Live Home 室内设计

CDP技术系列(一):使用bitmap存储数十亿用户ID的标签或群体

京东科技开发者

有挑战才有收获!PaddleOCR算法模型挑战赛火热开启!

飞桨PaddlePaddle

人工智能 算法 大赛 百度飞桨 算法模型

夏志刚介绍

管理在线

企业战略管理体系 企业精益管理体系 企业创新管理类体系 企业培训体系 企业标准化管理体系

Apache Dubbo 下一代云原生微服务挑战赛启动报名!五大赛题 50 万奖金池

阿里巴巴云原生

Apache 阿里云 云原生 dubbo

CentOS7下通过sshfs挂载sftp资源教程

百度搜索:蓝易云

centos 运维 云服务器 sftp sshfs

应用监控 eBPF 版:实现高效协议解析的技术探索

阿里巴巴云原生

阿里云 云原生 可观测

DRM音频格式转换好帮手-NoteBurner iTunes DRM Audio Converter 兼容M1和macos14系统

Rose

DRM 音频转换器

mac系统u盘启动盘制作教程,更新至macOS Sonoma 14

Rose

mac系统

提高Nginx网络吞吐量之buffers优化教程

百度搜索:蓝易云

nginx 云计算 运维 云服务器 buffers

Programming Abstractions in C阅读笔记:p248-p253

codists

K8s集群CoreDNS监控告警最佳实践

华为云开发者联盟

开发 华为云 k8s集群 华为云开发者联盟

使用navicat误删mongodb数据库 能够找回吗?

百度搜索:蓝易云

mongodb Linux 运维 云服务器 navicat

左耳听风 - 时间管理「读书打卡 day 15」

Java 工程师蔡姬

读书笔记 程序员 个人成长 时间管理 职业发展

CDP技术系列(二):ClickHouse+Bitmap实现海量数据标签及群体组合计算

京东科技开发者

权威媒体评选:2023年25个最佳开源软件

SEAL安全

开源 AI LLMs

融合创新:传统企业数字化转型的业务、战略、操作和文化变革

天津汇柏科技有限公司

数字化转型

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