使用 Amazon Neptune 构建抵押贷款支持证券数据模型 数据库博客
使用Amazon Neptune构建抵押贷款支持证券数据模型
作者:Vijaykumar Pannirselvam Supreeth Shettar Tim Seyfried发布日期:2024年1月18日分类: 进阶 (300),Amazon API Gateway,Amazon Aurora,Amazon Neptune,AWS数据库迁移服务,AWS Lambda,技术如何做永久链接评论
关键要点
抵押贷款支持证券MBS在技术变革中面临着巨大的转型需求。使用Amazon Neptune等专门构建的数据库可以简化MBS数据建模。通过构建知识图谱,能够更有效地进行风险建模和数据消费。本文介绍了迁移数据、构建知识图谱模型及数据消费的流程。随着组织逐渐采纳现代应用架构如微服务,应用团队倾向于将一刀切的数据库进行改造。由于API采用等一系列新技术,抵押贷款行业正经历史无前例的变革。在抵押贷款行业中,基于API的软件允许贷方、发行人、借款人等将不同功能集成到他们的门户中,从而使原本孤立的数据得以整合。
抵押贷款支持证券MBS是由房屋及其他房地产贷款担保的债券。在法律实体下将几个通常具有相似特征的贷款汇集在一起时,便创造了这些证券。在本文中,我们展示了如何利用如Amazon Neptune这样的专用数据库来对抵押贷款支持证券数据进行建模。通过将数据迁移到Neptune,我们能够通过知识图谱的方法拆除数据源之间的壁垒,这为更好的风险建模和通过多个API进行数据消费提供了基础。
如今,抵押贷款支持证券对贷款、借款人、物业、池、证券、服务商、发起人及其他相关实体提供全面视图的需求迫在眉睫。这些证券模型通常是层级结构的,由一组如贷款、池贷款池、证券“n”级别等实体构成,这使得在传统数据库中建模复杂性增加。此外,向现有模型中添加新实体通常需要对已有设置的数据进行更改。本文将介绍从现有关系数据库卸载源数据、构建知识图谱模型以及数据消费的全过程。
解决方案概述
以下图示展示了解决方案架构:
解决方案包括以下关键服务:
Amazon API Gateway 一项完全托管的服务,使得创建、发布、维护、监控和保护任何规模的API变得简单。API Gateway帮助管理后端系统的流量,将输入请求转化为特定图形语言的查询,并以更易读的方式返回输出。API Gateway使用AWS Lambda作为服务实现的代理。
AWS Lambda 一种无服务器执行环境,使您可以使用Gremlin查询接口与Neptune进行交互。Lambda通过REST接口提供底层连接数据的查询功能。我们还使用Lambda将样本MBS源数据集加载到Amazon Aurora PostgreSQL中。
Amazon Aurora PostgreSQL 兼容版本 一种完全托管、兼容PostgreSQL且符合ACID的关系数据库引擎,结合了Amazon Aurora的速度、可靠性和可管理性,且具备开源数据库的简单性和经济性。我们展示了如何使用Amazon Aurora PostgreSQL建模实体,源数据将存储在此。
Amazon Neptune 一项快速、可靠、完全托管的图形数据库服务,便于构建和运行应用程序。我们展示了如何从源数据构建知识图谱。Neptune是我们的目标数据存储。
AWS数据库迁移服务 AWS DMS帮助我们将数据从源数据库Amazon Aurora PostgreSQL迁移到目标数据库Neptune。我们将在构建迁移所需的映射文件时进行介绍。
Amazon简单存储服务 Amazon S3是一种对象存储服务,提供领先行业的可扩展性、数据可用性、安全性和性能。我们使用Amazon S3进行源数据集的暂存和AWS DMS迁移任务。
关系实体数据模型
下图展示了不同实体如何通过其属性相互关联。在本文中,我们将使用以下表作为源数据来迁移到Neptune并构建图模型。
抵押贷款支持证券是通过合并抵押贷款形成的。借款人与贷方合作完成抵押贷款交易,从而产生抵押贷款。抵押贷款是以物业作为抵押的贷款。在抵押贷款发行后,由服务商对其进行服务。抵押贷款支持证券的模式在此简化。
源数据是手动生成的合成数据,类似于真实数据。合成数据的主要目的是提高系统的隐私和完整性。其贷款和证券的数量相对有限。
图数据模型
我们首先需要通过AWS DMS迁移任务将关系数据模型转换为具有顶点和边的图数据模型。用于转换的图映射文件定义可以参考我们的源代码路径:
resources/config/dmsjsonmappings/targetmappingsjson
下图展示了等效实体作为顶点,并且关系则作为边。
图数据可视化
Gremlin是一种用于属性图的图遍历语言。Gremlin中的查询是由离散步骤组成的遍历,每个步骤沿着边到达节点。如需更多信息,请参阅TinkerPop文档。在本文中,我们使用Gremlin和Amazon Neptune工作台创建加载到Neptune数据库中的数据的可视化图。有关更多详细信息,请参见Neptune工作台中的图可视化。
与此数据集相关的一个Gremlin查询示例如下:
gremlin p VoutEinVinEoutV
//查找安全顶点ID 369WAU713的所有出边和入边,并移动到所有入边相邻的顶点,重复两次。使用属性名称的映射表示法检索遍历路径的历史。
gV(369WAU713)repeat(bothE()inV())times(2)path()by(valueMap(truename))
我们可以扩展此查询以获取基于贷款活动的报告期内的证券值及更多类似用例。下图展示了在Neptune中根据证券369WAU713可视化的相同源数据图。
从图中可以看到,中心蓝色的MBS顶点有许多连接。它包含一组抵押贷款,其中每笔贷款以物业作为抵押,以及相应的服务商,提交给每笔抵押贷款的贷款活动等。
以下表格展示了数据集的列表形式。
通过API消费数据
我们为使用保存在Neptune数据库中的数据添加了一些REST API,并通过API Gateway将它们公开为API端点。
以下是用于构建每个API的Gremlin查询:
根据CUSIP统一证券识别码获取所有贷款:gV(ltCUSIPgt)outE()inV()valueMap()by(unfold())toList()
根据卖方获取所有贷款:gV()hasLabel(seller)has(ideq(ltselleridgt))outE()inV()valueMap()by(unfold())toList()
根据服务商获取所有贷款:
gV()hasLabel(servicer)has(ideq(ltserviceridgt))outE()inV()valueMap()by(unfold())toList()
想象一下,如果您想连接城市统计区MSA,也就是一个城市及其周边社区的正式组合,您可以通过通过扩展现有数据集,添加与物业邮政编码相关的新顶点和边来轻松实现。此外,补充联邦储备、宏观经济数据和失业数据等附加数据集将有助于企业提供有意义的推论和风险洞察。图形数据库使得各种数据集的集成变得更加容易,使开发者能够专注于解决业务问题。
我们简化了创建基础架构、从源数据库加载样本集、将其迁移到目标图数据库并通过API消费数据的过程,仅需通过一个AWS Cloud Development KitAWS CDK项目即可完成。
成本考虑
本文中的解决方案包括如Amazon虚拟私有云Amazon VPC、VPC端点、AWS密钥管理服务AWS KMS、API Gateway、Lambda、Neptune、Amazon Aurora PostgreSQL及AWS DMS等服务。在验证部署后,不要忘记按照后面的说明销毁这些资源。
前置条件
为了顺利进行本教程,您需要满足以下前置条件:
Python 版本39Docker 版本201012Postman 用于测试您的API配置好的AWS命令行界面AWS CLI,以便部署资源拥有与AWS账户中的资源进行交互的适当AWS凭证已安装的AWS CDK v2部署解决方案
您可以按照以下步骤部署解决方案:
在完成前置条件后,将项目GitHub仓库克隆到本地计算机:git clone https//githubcom/awssamples/awsneptunemortgagebackedsecuritydatamodelgit
创建并激活一个虚拟环境:python3 m venv venv
对于MacOS / Linux激活,请运行以下命令:
source venv/bin/activate
对于Windows激活,请运行:
venvScriptsactivatebat
安装Python依赖包:pip install r requirementstxt
运行以下命令进行AWS环境的引导:使用以下命令获取账户号码
aws sts getcalleridentity query Account output text
使用以下命令设置区域
aws configure set region useast1
引导AWS环境。用以上命令获取的值替换ACCOUNTNUMBER
cdk bootstrap aws///useast1
验证Docker守护进程是否正在运行。部署AWS CDK项目:cdk deploy all requireapproval never
整个过程可能需要大约45分钟。
验证部署
要验证抵押贷款支持证券的迁移及从Neptune消费数据的情况,请完成以下步骤:
在API Gateway控制台中,导航到API MbsApi。在导航窗格中,选择API密钥。找到API授权密钥,该密钥您将在后续步骤中通过Postman访问API时需要进行传递。在导航窗格中选择阶段。找到用于将样本数据集加载到Amazon Aurora PostgreSQL数据库中的dbloader POST方法的API端点。将invoke URL复制到Postman。在标头部分设置先前获得的xapikey。点击发送。对于此API,不需要有效负载。
现在,您已准备好使用AWS DMS将数据加载到Neptune中。
在AWS DMS控制台,选择导航窗格中的数据库迁移任务。选择mbsrdsneptunemigration任务。在操作菜单中,选择重启/恢复。任务完成后,状态应更改为加载完成。
您可以在表统计信息选项卡上确认所有行成功加载。
通过Postman验证mbsget API,复制invoke URL。在请求主体部分输入以下JSON:{queryStringParameters {id 369WA714param loansbycusip}}
在标头部分设置之前获取的xapikey。点击发送 。您可以更改queryStringParameters以验证其他API。例如,在以下截图中,我们获取所有卖方的贷款。
小熊加速器npv在以下截图中,我们获取所有服务商的贷款。
![根据服务商获取贷款](https//d