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

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

2024-01-15 原创文章

云原生、事件驱动和无服务器架构,是一种利用云计算资源和服务构建和部署应用程序的方法,旨在最大化可扩展性、效率和灵活性。

本参考架构展示了 Oracle 云基础设施事件和 OCI 函数如何无缝集成,以在 OCI 对象存储桶中创建或修改对象时自动更新 Oracle NoSQL 数据库云服务(Oracle NoSQL)表。它解决了在 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 云基础设施函数(Functions)是一个完全托管、多租户、高度可扩展、按需的函数即服务(FaaS)平台。它由 Fn Project 开源引擎驱动。函数允许您部署代码,并直接调用它或响应事件触发它。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 函数并调用函数进行处理后,该服务将被调用。

考虑因素

部署此参考架构时,请考虑以下几点。

性能

OCI 事件、OCI 函数和 Oracle NoSQL 都是高度可扩展的托管服务。Oracle NoSQL 服务提供按需吞吐量和存储配置。

在配置之前,请确保估算您的 Oracle NoSQL 数据库云服务的吞吐量和存储容量。

安全性

使用策略限制谁可以访问 OCI 资源。

对于 OCI 对象存储,默认启用加密,并且不能关闭。

建议将秘密和敏感数据存储在 OCI 金库中。请考虑使用 OCI 函数存储用于与 OCI 服务授权的 API 密钥、数据库用户名、密码和认证令牌。

可用性

Oracle 确保 OCI 事件、OCI 函数、Oracle NoSQL 和 OCI 日志的高可用性,这些都是云原生且完全托管的。

成本

您只需为函数运行时使用的资源付费。

部署

GitHub 仓库包含实现此参考架构的 OCI 函数代码。

  1. 访问 GitHub。
  2. 克隆或下载仓库到您的本地计算机。
  3. 按照 README 文档中的指示操作。


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

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

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

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

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

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

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

微信公众号

微信技术交流社群: