写点什么

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

评论

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

共36万字!为上岸Alibaba,我把Github上Java面试题都整理了一遍

Java你猿哥

Java Spring Boot ssm 面经 春招

阿里三面46题:java高级+数据库+网络+架构设计!含答案大赠送!

Java你猿哥

Java 阿里巴巴 后端 面经 春招

12家辽宁AI领先企业加入昇腾万里伙伴计划

科技热闻

如何分析网站监控中的数据报表,都有哪些关键信息?

云智慧AIOps社区

监控 监控宝 云智慧 监控安全 网站监控

触达率提升 20%,融云推送优化实践

融云 RongCloud

产品 实践 融云

先巩固下 Java 线程这些基础操作,再开始多线程编程也不迟

Java你猿哥

Java 多线程 开发

对象存储BOS: 通过安卓SDK使用HTTPDNS服务

百度开发者中心

对象存储

WeOpsV3.15持续拓展监控能力,支持硬件设备IPMI智能监控

嘉为蓝鲸

IT

Python十大实用技巧【附源码】

我爱娃哈哈😍

Python 开发技巧

xx产品介绍

andy

直播回顾 | 告警全生命周期管理的思路与落地实践

嘉为蓝鲸

IT

【广州银行信用卡中心】5分钟实现一键发布!

嘉为蓝鲸

IT

Spring生态简介

Java你猿哥

Java spring Spring Boot 后端 ssm

如何通过C#/VB.NET从PowerPoint文档中提取图片

在下毛毛雨

C# .net PowerPoint 提取图像

在线教育≠在线观看:风变科技应用无影打造自动化实训教学模式

云布道师

无影

NFT游戏藏品开发DApp系统搭建

薇電13242772558

NFT

软件测试 | 黑盒测试方法—因果图法

测吧(北京)科技有限公司

测试

与高校开发者面对面,昇腾AI开发者创享日首次走进沈阳高校

科技热闻

唯一入选的制品库!嘉为蓝鲸CPack制品管理平台成功入选!

嘉为蓝鲸

IT

【中远海运特运】WeOps产品为业务系统安全稳定保驾护航!

嘉为蓝鲸

丝滑的打包部署,一套带走

Java你猿哥

Java Docker ssm 部署

软件测试/测试开发丨聊聊后端Web开发框架(Python)的简单使用

测试人

软件测试 自动化测试 测试开发

2021年第十一届数据技术嘉年华(DTC)资料分享

墨天轮

数据库 GaussDB TiDB 国产数据库 南大通用

软件测试|教你如何用Python获取昨天今天明天的日期

霍格沃兹测试开发学社

人工智能深入油气领域 百度智能云与石化盈科共建合同智能化应用平台

百度开发者中心

人工智能

信通院MLOps旗舰级评测,业内首批通过!

百度开发者中心

人工智能 深度学习‘’ 文心一言

嘉为科技与工银科技正式启动数字研运一体化合作项目

嘉为蓝鲸

打造江西数智产业高地,百度飞桨人工智能产业赋能中心落户南昌青山湖

百度开发者中心

人工智能 百度飞桨

一文带你掌握轻量化模型设计原则和训练技巧!

Openlab_cosmoplat

工业互联网 开源社区 轻量化模型 openlab

软件测试/测试开发丨数据持久化技术(Python)的使用

测试人

软件测试 自动化测试 测试开发

研云运一体,嘉为蓝鲸助力中国智造扬帆出海!

嘉为蓝鲸

IT

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