NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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

评论

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

作业5

施正威

What's new in dubbo-go-pixiu 0.4.0

apache/dubbo-go

功能十分全面的项目管理工具(文档协作、项目计划、文件管理等)

优秀

项目管理 项目管理工具

架构实战营第 4 期 -- 模块五作业

烈火干柴烛灭田边残月

架构实战营

MongoDB常用命令(2)

Tom弹架构

Java mongodb 分布式数据库

终极解密输入网址按回车到底发生了什么

码哥字节

HTTP TCP/IP

【LeetCode】Bigram 分词 Java题解

Albert

算法 LeetCode 1月月更

【逆向分析】快速查找指定代码的几种方法

H

网络安全 逆向分析

SpringMVC框架基础知识(03)

海拥(haiyong.site)

28天写作 1月月更

《JavaScript基础入门》环境搭建

IT蜗壳-Tango

IT蜗壳教学 1月月更

牛掰,在IDEA中,你可以安装小傅哥写的插件了!

小傅哥

小傅哥 idea插件 vo2dto转换插件开发 idea plugin 代码织入

智慧巨鹿使用Rainbond落地实践,一个平台管理所有应用系统

北京好雨科技有限公司

恒源云(GPUSHARE)_云GPU服务器如何使用LightGBM?

恒源云

人工智能 算力 框架学习

LevelDB在测试中应用应用

FunTester

数据库 测试开发 leveldb FunTester 有状态服务

spring源码搭建

派大星

Spring5源码解析

Git操作备忘录(持续更新)

IT蜗壳-Tango

git IT蜗壳教学 1月月更

web技术分享| css filter和getUserMedia的联合使用

anyRTC开发者

CSS 前端 Web 音视频 WebRTC

悄悄告诉你,有种管理方法能让设计团队学习、产出两不误!

LigaAI

效率 技术

数字化转型失败,有哪些原因?

禅道项目管理

数字化转型

Cube 技术解读 | Cube 小程序技术详解

蚂蚁集团移动开发平台 mPaaS

小程序 前端 mPaaS cube

作业6

施正威

LigaAI 2021年终总结

LigaAI

团队管理 技术 成长笔记】 年度总结

政法委重点人员联防联控平台开发,跨部门大数据系统搭建

电微13828808271

敏感信息打码就安全了吗?

恒生LIGHT云社区

信息安全

荣获中国专利金奖!百度连续四年AI专利申请和授予量全国第一

百度开发者中心

人工智能 AI

架构实战 - 模块八

唐敏

「架构实战营」

一文了解区块链如何帮助打击虚假信息

CECBC

百分点数据科学实验室:零售行业新店品类配比测算方案

百分点科技技术团队

TDengine在上海电气储能智慧运维系统中的应用

TDengine

数据库 大数据 tdengine

年度盘点|每一个ToB产品都值得被看见

ToB行业头条

找出数组中出现次数超过一半的数字

zdd

算法题

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