欢迎访问深圳敏捷云计算科技有限公司!

利用甲骨文云OCI函数实现对象存储上传后自动更新NoSQL表的高效方案

2024-01-15 原创文章

云原生、事件驱动和无服务器架构,这不仅是一种建立和部署应用的方法,更是一种利用云计算资源和服务的智慧,实现规模化、高效率和灵活性的体现。

这里,我们看到甲骨文云基础设施事件和OCI函数的无缝融合,它们能自动更新Oracle NoSQL数据库云服务(Oracle NoSQL)表,这种更新发生在OCI对象存储桶中创建或修改对象时。

我们面对的是一个常见的商业场景:每当OCI对象存储桶中添加或修改文件时,解析并更新Oracle NoSQL表。OCI事件提供了一种基于各种云资源状态变化来自动执行任务的强大解决方案。它允许创建规则,将事件传递到特定的OCI服务,如OCI流媒体、OCI函数(作为处理事件数据和与其他OCI服务集成以执行多样化行动的有价值工具)和OCI通知。

此外,OCI函数可以包含代码来处理从OCI事件接收的有效载荷数据,并根据特定的业务需求调整Oracle NoSQL表的更新。

这种参考架构为我们提供了一个全面的概览,展示了如何利用OCI函数与OCI事件结合,来更新在OCI对象存储桶中创建或修改对象时的Oracle NoSQL表。

架构

这一参考架构展示了如何利用OCI函数和OCI事件,在OCI对象存储中创建或更新文件时更新Oracle NoSQL表。

架构图展示了从向指定OCI对象存储桶上传文件开始的数据流。事件服务触发器根据特定事件规则条件进行配置。反过来,生成的事件调用了一个能够从上传的文件中提取数据、根据业务需求进行额外处理,最终用处理后的数据更新Oracle NoSQL表的函数。这种方法通过利用事件驱动架构和促进实时数据处理,提供了重大优势。当需要在更新目标表前对数据进行预处理并执行必要的健全性检查以确保数据完整性时,这种方法显得尤为宝贵。

下面是在OCI对象存储桶中创建或更新文件时需要解析和更新Oracle NoSQL表的业务用例,可以使用以下方法实现:

  1. 在OCI事件中设置事件规则,以便在OCI对象存储桶中创建或更新对象时触发OCI函数。
  2. 创建一个接收由事件规则触发的事件的函数。此函数将处理解析和更新Oracle NoSQL表中的数据。
  3. 在函数内部,实现解析OCI对象存储桶中对象数据所需的逻辑。
  4. 使用适当的OCI SDK或API与Oracle NoSQL服务进行交互,根据解析数据在Oracle NoSQL表中插入或更新记录。

通过结合OCI事件、OCI函数和Oracle NoSQL服务,我们可以自动化在OCI对象存储桶中创建或更新文件时解析和更新Oracle NoSQL表中数据的过程。这种方法允许高效、流畅地处理数据,并在OCI对象存储和Oracle NoSQL之间进行数据同步。下图说明了这一参考架构。

开始之前

  1. 使用OCI控制台,设置您的函数应用并创建一个Oracle NoSQL表。
  2. 收集配置函数应用环境变量所需的以下值:
  • 用户ID:用于身份验证的用户的OCID。
  • 租户ID:租户OCID。可以在用户配置文件中找到。
  • 指纹:用于验证OCI API的身份。
  • 区域:创建请求的区域标识符。
  • API私钥:API私钥文件位置。
  • 分区OCID:创建Oracle NoSQL表的分区OCID。
  • NoSQL表:示例表格person table。请按照以下属性创建它。

这个架构包含以下几个组成部分:

租户

当您注册Oracle云基础设施时,Oracle会在Oracle云中为您设置一个安全且隔离的分区,这就是租户。在您的租户内,您可以创建、组织和管理Oracle云中的资源。租户等同于一个公司或组织。通常,一家公司会有一个租户,并在该租户内反映其组织结构。一个租户通常与一个订阅关联,而一个订阅通常只有一个租户。

区域

Oracle云基础设施区域是包含一个或多个数据中心(称为可用性域)的地理区域。区域与其他区域相互独立,它们之间可以相隔很远(跨越国家甚至大洲)。

分区

分区是Oracle云基础设施租户内的跨区域逻辑分区。使用分区来组织Oracle云中的资源、控制对资源的访问以及设置使用配额。要控制对特定分区中资源的访问,您需要定义策略,以指定谁可以访问这些资源以及他们可以执行哪些操作。

可用性域

可用性域是区域内独立、自主的数据中心。每个可用性域中的物理资源与其他可用性域的资源相互隔离,从而提供了容错能力。可用性域不共享基础设施,如电力或冷却系统,或内部可用性域网络。因此,一个可用性域的故障不太可能影响该区域内其他可用性域。

故障域

故障域是一个可用性域内的硬件和基础设施分组。每个可用性域都有三个带有独立电力和硬件的故障域。当您将资源分布在多个故障域中时,您的应用程序可以承受物理服务器故障、系统维护和故障域内的电力故障。

虚拟云网络(VCN)和子网

VCN是您在Oracle云基础设施区域中设置的可定制的、软件定义的网络。与传统数据中心网络一样,VCN使您能够完全控制您的网络环境。VCN可以有多个不重叠的CIDR块,您可以在创建VCN后更改这些块。您可以将VCN划分为子网,这些子网可以限定在一个区域或一个可用性域。每个子网由一系列连续的地址组成,这些地址与VCN中的其他子网不重叠。您可以在创建后更改子网的大小。子网可以是公共的或私有的。

安全列表

对于每个子网,您可以创建安全规则,指定必须允许进出子网的源、目的地和流量类型。

服务网关

服务网关提供从VCN到其他服务(如Oracle云基础设施对象存储)的访问。从VCN到Oracle服务的流量通过Oracle网络结构传输,不经过互联网。

对象存储

对象存储提供快速访问大量结构化和非结构化数据,包括数据库备份、分析数据和丰富内容,如图像和视频。您可以安全地存储数据,然后直接从互联网或云平台内检索数据。您可以无缝扩展存储,而不会经历性能下降或服务可靠性降低。对于需要快速、立即和频繁访问的“热”存储,使用标准存储。对于长时间保留且很少或几乎不访问的“冷”存储,使用归档存储。

事件

Oracle云基础设施服务发出的事件是描述资源变化的结构化消息。这些事件涵盖创建、读取、更新或删除(CRUD)操作、资源生命周期状态变化和影响云资源的系统事件。

函数

Oracle云基础设施函数是一个完全托管的、多租户的、高度可扩展的、按需的函数即服务(FaaS)平台。它由Fn项目开源引擎提供动力。函数使您能够部署代码,并直接调用它或响应事件触发它。Oracle函数使用托管在Oracle云基础设施注册中心的Docker容器。

日志

日志是一个高度可扩展且完全托管的服务,提供从云中资源获取以下类型日志的访问:

  • 审计日志:由审计服务发出的事件相关日志。
  • 服务日志:由各个服务(如API网关、事件、函数、负载平衡、对象存储和VCN流量日志)发出的日志。
  • 自定义日志:包含来自自定义应用程序、其他云提供商或本地环境的诊断信息的日志。

Oracle NoSQL

Oracle NoSQL数据库云服务是一个完全托管的数据库云服务,适用于需要预测性、单位毫秒级延迟响应的简单查询的数据库操作。一旦您对Oracle云账户进行身份验证,您就可以创建Oracle NoSQL表,并为该表指定吞吐量和存储需求。Oracle为满足您的需求而保留和管理资源,并为您配置容量。容量通过读写单位指定吞吐量,以GB为单位指定存储单位。

建议

以下建议可作为起点。您的需求可能与此处描述的架构不同。

VCN

  • 创建VCN时,根据您计划附加到VCN子网中的资源数量,确定所需CIDR块的数量和每个块的大小。使用标准私有IP地址空间内的CIDR块。
  • 选择不与您打算建立私有连接的任何其他网络(在Oracle云基础设施、您的本地数据中心或其他云提供商)重叠的CIDR块。
  • 创建VCN后,您可以更改、添加和移除其CIDR块。
  • 设计子网时,考虑您的流量流向和安全需求。将特定层或角色内的所有资源附加到同一个子网,这可以作为一个安全边界。

Cloud Guard

  • 克隆并自定义Oracle提供的默认配方,以创建自定义检测器和响应器配方。这些配方使您能够指定哪种类型的安全违规会产生警告,以及允许对它们执行哪些操作。例如,您可能希望检测将可见性设置为公共的对象存储桶。
  • 在租户级别应用Cloud Guard,以涵盖最广泛的范围,并减少维护多种配置的管理负担。
  • 您还可以使用管理列表功能将特定配置应用于检测器。

函数

  • 本架构中的OCI函数使用Python开发。请注意,OCI函数支持多种编程语言,您可以选择您喜欢的语言来开发函数并部署它们。

Oracle NoSQL

  • 确保在适当的分区中创建Oracle NoSQL表,并使用OCI身份和访问管理(IAM)策略管理访问。在创建表之前准确估计读写容量至关重要。请参考Oracle文档,并查看详细指导建议。
  • 在此解决方案中,使用名为“person”的示例表作为示例。根据您的具体需求,记得自定义函数和表名。

OCI对象存储

  • 本架构使用标准对象存储上传文件。请确保启用对象事件发射,以便可以触发事件服务。对于敏感数据,还建议使用私有桶。

OCI事件

  • 在本架构中,配置OCI事件服务以监听OCI对象存储中的“对象创建”和“对象更新”事件。服务在对象上传到OCI函数后被调用,并调用函数进行处理。

开启您的Oracle云之旅:Agilewing - 您的智能云服务伙伴

作为Oracle的高级合作伙伴,Agilewing正重新定义企业体验Oracle云服务的方式。借助于其简化的开户流程和一流的技术支持,Agilewing将复杂的开户和操作流程转化为一种轻松、直观的体验。通过我们的一站式服务,您可以迅速开启并享受Oracle云的全方位服务,从而无缝融入云端世界。

Agilewing的AgileCDN服务,结合了OCI的云基础服务,提供了一流的全球内容加速解决方案。超过2800个全球POP节点和7000个直连点的强大网络,确保了无论您的业务扩展到全球哪个角落,都能保持高效稳定的运行。

利用Oracle云的先进技术,Agilewing致力于简化云服务搭建、云迁移和业务出海的过程。我们的合作模式为客户带来经济高效的解决方案,使他们能够更加专注于核心业务,同时享受Oracle云的高性能和安全保障。

Oracle云服务,作为一个充满潜力的领域,以其高性能、安全性和全球统一的服务标准,为各类企业开启了新的机遇之门。通过Agilewing的专业服务,无论是个人用户还是企业,都能轻松步入这个充满技术革新和高效能的新时代。现在,就让Agilewing引领您开始探索Oracle云服务,打开一个全新的世界大门。

如您想咨询 Oracle 的相关业务,可联系搜索微信号:lhh1843812463woshiwhw123

或者可以进入以下群组进行咨询:

微信公众号

微信技术交流社群: