实施 OCI 函数,以便在上载到 OCI 对象存储时更新 Oracle NoSQL 表

云原生、事件驱动和无服务器架构是一种构建和部署应用的方法,它利用云计算资源和服务来提高可扩展性、效率和灵活性。

此参考体系结构演示了 Oracle Cloud Infrastructure EventsOCI 函数的无缝集成,以便在 OCI 对象存储存储桶中创建或修改对象时自动更新 Oracle NoSQL Database Cloud Service (Oracle NoSQL) 表。它解决了在 OCI 对象存储存储桶中添加或修改文件时解析和更新 Oracle NoSQL 表中数据的常见业务方案。

OCI Events 提供了一个强大的解决方案,可基于各种云资源的状态变化自动执行任务。它支持创建将事件传送到特定 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 之间实现高效、简化的数据处理和同步。

下图说明了此参考体系结构。



object-storage-function-nosql-diagram-oracle.zip

开始之前

  1. 设置函数应用程序并使用 OCI 控制台创建 Oracle NoSQL 表。
  2. 收集配置函数应用程序的环境变量所需的这些值。
    • 用户 ID

      要验证的用户的 OCID。

    • 租户 ID

      租户 OCID。可以在用户概要信息中找到。

    • 指纹

      将用于向 OCI API 进行验证。

    • 区域

      要在其中创建请求的区域的标识符。

    • API 私有密钥

      API 私有密钥文件位置。

    • 区间 OCID

      创建 Oracle NoSQL 表的区间 OCID。

    • NoSQL 表

      示例表“人员”表。使用以下属性进行创建。

主键 列名 类型 共享密钥 非空值
ID INTEGER
固有名词 STRING
年纪 INTEGER
性别 STRING

该体系结构具有以下组成部分:

  • 租户

    租户是 Oracle 在您注册 Oracle Cloud Infrastructure 时在 Oracle Cloud 中设置的安全隔离分区。您可以在租户中的 Oracle Cloud 中创建、组织和管理资源。租户与公司或组织同义。通常,公司只有一个租户并反映在该租户中的组织结构。单个租户通常与单个订阅关联,单个订阅通常只有一个租户。

  • 区域

    Oracle Cloud Infrastructure 区域是一个局部地理区域,包含一个或多个称为可用性域的数据中心。区域独立于其他区域,广阔的距离可以将其分开(跨国家甚至大陆)。

  • 区间

    区间是 Oracle Cloud Infrastructure 租户中的跨区域逻辑分区。使用区间在 Oracle Cloud 中组织资源、控制对资源的访问以及设置使用限额。要控制对给定区间中资源的访问,您可以定义策略来指定哪些人可以访问资源以及他们可以执行的操作。

  • 可用性域

    可用性域是区域中的独立独立数据中心。每个可用性域中的物理资源与提供容错能力的其他可用性域中的资源隔离。可用性域不共享基础设施(例如电源或冷却设备)或内部可用性域网络。因此,一个可用性域出现故障不会影响区域中的其他可用性域。

  • 容错域

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

  • 虚拟云网络 (VCN) 和子网

    VCN 是您在 Oracle Cloud Infrastructure 区域中设置的可定制软件定义网络。与传统数据中心网络一样,VCN 允许您完全控制您的网络环境。一个 VCN 可以具有多个不重叠的 CIDR 块,您可以在创建 VCN 后对其进行更改。您可以将 VCN 细分为多个子网,这些子网可以限定到区域或可用性域。每个子网包含一系列不与 VCN 中的其他子网重叠的连续地址。创建后可以更改子网的大小。子网可以是公共子网,也可以是专用子网。

  • 安全列表

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

  • 服务网关

    通过服务网关,可以从 VCN 访问其他服务,例如 Oracle Cloud Infrastructure Object Storage 。从 VCN 到 Oracle 服务的流量会通过 Oracle 网络网状结构网络传输,并且从不通过互联网传输。

  • 对象存储

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

  • 事件

    Oracle Cloud Infrastructure 服务发出事件,这些事件是描述资源更改的结构化消息。发出事件以执行创建、读取、更新或删除 (CRUD) 操作、资源生命周期状态更改以及影响云资源的系统事件。

  • 函数

    Oracle Cloud Infrastructure Functions 是一个完全托管的多租户、高度可扩展的按需函数即服务 (FaaS) 平台。它由 Fn Project 开源引擎提供支持。使用函数可以部署代码,直接调用代码或触发代码以响应事件。Oracle Functions 使用 Oracle Cloud Infrastructure Registry 中托管的 Docker 容器。

  • 登录
    日志记录是一项高度可扩展且完全托管的服务,通过它可以从云中的资源访问以下类型的日志:
    • 审计日志:与审计服务发出的事件相关的日志。
    • 服务日志:单个服务(如 API 网关、事件、函数、负载平衡、对象存储和 VCN 流日志)发出的日志。
    • 定制日志:包含来自定制应用、其他云提供商或内部部署环境的诊断信息的日志。
  • Oracle NoSQL

    Oracle NoSQL Database Cloud Service 是完全托管的数据库云服务,专为需要对简单查询进行可预测的单位毫秒延迟响应的数据库操作而设计。根据 Oracle Cloud 账户进行验证后,您可以创建 Oracle NoSQL 表,并指定表的吞吐量和存储要求。Oracle 会保留和管理资源以满足您的需求,并为您预配容量。容量是使用吞吐量读取和写入单位指定的,存储单元是 GB。

建议

使用以下建议作为起点。 您的要求可能不同于此处所述的体系结构。
  • VCN

    创建 VCN 时,根据计划附加到 VCN 中的子网中的资源数,确定所需的 CIDR 块数和每个块的大小。使用标准专用 IP 地址空间内的 CIDR 块。

    选择与您打算设置专用连接的任何其他网络(在 Oracle Cloud Infrastructure 、您的内部部署数据中心或其他云提供商中)不重叠的 CIDR 块。

    创建 VCN 后,您可以更改、添加和删除其 CIDR 块。

    设计子网时,请考虑您的流量流和安全要求。将特定层或角色中的所有资源连接到可充当安全边界的同一子网。

  • 云卫士

    克隆并定制 Oracle 提供的默认配方以创建定制检测器和响应器配方。通过这些配方,您可以指定哪种类型的安全违规生成警告以及允许对它们执行哪些操作。例如,您可能希望检测可见性设置为 public 的对象存储桶。

    在租户级别应用 Cloud Guard 以涵盖范围最广,并减轻维护多个配置的管理负担。

    您还可以使用“托管列表”功能将某些配置应用于检测器。

  • 函数

    此体系结构中的 OCI 函数是使用 Python 开发的。请注意, OCI 函数支持多种编程语言,您可以使用所选的语言来开发函数并部署它们。

  • Oracle NoSQL

    确保在相应的区间中创建 Oracle NoSQL 表并使用 OCI Identity and Access Management (IAM) 策略管理访问。在创建表之前准确估计读取和写入容量非常重要。请参阅 Oracle 文档并查看有关详细指导的建议。

    在此解决方案中,将一个名为“person”的示例表用作示例。请记住,要根据特定要求定制函数和表名。

  • OCI 对象存储

    此体系结构使用标准对象存储上载文件。请确保启用发出对象事件,以便触发事件服务。还建议对敏感数据使用专用存储桶。

  • OCI 事件

    在此体系结构中, OCI 事件服务配置为监听“对象创建”和“对象更新”事件的 OCI 对象存储中的更改。将对象上载到 OCI 函数并调用函数进行处理后,将调用该服务。

考虑事项

部署此引用体系结构时,请考虑以下几点。

  • 性能

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

    预配之前,请确保估计 Oracle NoSQL Database Cloud Service 的吞吐量和存储容量。

  • 安全性

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

    对于 OCI 对象存储,默认启用加密,无法关闭加密。

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

  • 可用性

    Oracle 可确保 OCI 事件OCI 函数、Oracle NoSQL 和 OCI 日志记录(云原生和完全托管)的高可用性。

  • 成本

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

部署

GitHub 系统信息库包含实施此引用体系结构的 OCI 函数代码。

  1. 转到 GitHub
  2. 将系统信息库克隆或下载到本地计算机。
  3. 按照 README 文档中的说明进行操作。

浏览更多

要了解有关 OCI 事件OCI 函数和 NoSQL 服务的更多信息,请参见以下资源:

查看以下附加资源:

确认

Authors: Shan Duraipandian

Contributors: John Sulyok