Oracle内存计算应用模式

前言

内存计算是利用内存来加速数据访问和应用的性能,并降低应用开发复杂度的技术。近十年来,随着软硬件技术的发展和用户需求的成熟,内存计算技术已经得到了广泛地应用。

Oracle在内存计算领域具有非常重要的地位,这主要得益于Oracle在技术领域的长期耕耘和深厚积累。Oracle在内存计算领域的产品和解决方案包括:Oracle TimesTen,Oracle Database In-Memory和Oracle True Cache。

按照时间顺序。TimesTen 1996年成立,2005年6月被Oracle收购,在电信和金融行业得到广泛应用。Database In-Memory作为数据库选件,于2014年7月首次发布,极大增强了Oracle数据库的分析能力。True Cache 于2023年9月推出,包含在即将发布的Oracle 23c数据库中,极大简化了只读缓存的管理和应用开发。

来看一下官网对这3种内存计算技术的介绍:

  • TimesTen:超快速、超高可用且弹性可扩展的 OLTP 数据库。Oracle TimesTen In-Memory Database 是一个功能全面、内存优化的关系型数据库,可助力众多行业的任务关键型应用实现微秒级响应和超高的吞吐量性能。

  • Oracle Database In-Memory:将列功能引入 Oracle Database,透明地加快分析查询速度高达数个量级。它支持企业基于实时数据制定明智决策,降低成本、提高工作效率和竞争力。

  • Oracle True Cache :是一项只读的内存中高性能 SQL 和键值缓存服务,它支持自动化管理,可确保数据一致。Oracle True Cache 能够在改善应用响应速度的同时降低数据库服务器负担。此外,得益于自动化管理和数据一致性,它还能简化应用开发,降低开发人员工作量和成本。

基于以上3种技术,下面我们将对Oracle主要的内存计算应用模式进行简要地介绍。

模式1:TimesTen作为Oracle数据库只读缓存

在这里插入图片描述
将内存作为缓存,是一种非常流行的内存计算应用模式。使用缓存的好处包括:

  • 降低延迟:内存的高性能
  • 更高的吞吐量:内存的高性能
  • 可扩展性:缓存比数据库更容易扩展
  • 数据库减压:可以将数据库任务卸载到缓存执行
  • 高可用性:如果数据库宕机,缓存仍可对外服务

使用Redis,Memcached作为缓存是一种非常普遍的做法,但这一类缓存为Key/Value模式,而Oracle数据库是关系型,因此需要额外的开发在两种模式间做转换。如果使用TimesTen,由于都是关系型数据库,加之作为同一家公司的产品,Oracle和TimesTen之间做了深度集成,因此缓存的管理会更简单,包括定义,配置更改,刷新等,这些都不需要编程来实现。应用程序只需要将连接指向TimesTen即可,之前在Oracle运行的SQL也可以在TimesTen上运行,可以无需修改或经过很少的修改。

也就是说,使用TimesTen实现的只读缓存,不仅运行得快,而且开发也快,管理更简单。

关于此模式,可参考eBay使用TimesTen满足每日服务1400亿调用并满足延迟要求的案例。

模式2:TimesTen作为Oracle数据库写缓存

在这里插入图片描述
TimesTen也可以作为Oracle数据库的写缓存。在这种模式中,数据的流向和模式1是相反的,也就是数据先进入TimesTen,然后再自动同步到后端的Oracle数据库中,这特别适合于数据采集和数据汇聚类的应用,如IoT。

这种模式可以极大减轻后端数据库的压力,提升整体架构的稳定性和高可用性。另外,和模式1一样,缓存管理简单,开发快也是其差异化优势。

TimesTen作为写缓存还支持一种滑动窗口模式,可以按照用户的业务需要在内存中自动保留指定时间窗口期内的数据,如一周,半个月或一个月的数据,从而可以更精准地满足业务需求,也可以将更多后端Oracle的负载转移到写缓存中来运行。

关于此模式,可参考Oracle官网的美国邮政服务使用TimesTen实现防欺诈的案例。

模式3:TimesTen替换中小型数据库

在这里插入图片描述

这里说的中小型数据库是指数据量相对较小,并发访问相对较少。

TimesTen本身就是一个关系型数据库,只不过数据全部在内存中。因此对于数据量不大(如<1TB),同时又需要满足低延迟访问的数据库,就可以直接使用TimesTen运行,这样架构更简洁,开发和运维也更简单。

作为商用数据库,TimesTen也支持高可用和灾备等企业级功能。

关于此模式,可参考Oracle官网的Ericsson使用TimesTen实现实时计费的案例。

在《铁路计算机应用》2019年第28卷第2期,也有一篇用户文章“基于TimesTen内存数据库提升股道现车同步应用性能的研究与测试”可以参考。

模式4:TimesTen替换大型数据库图片

在这里插入图片描述

此模式和模式3几乎是相同的,区别在于,模式3使用的是TimesTen Cassic,即TimesTen传统模式。而模式4使用的是TimesTen Scaleout,即TimesTen分布式内存数据库。TimesTen Scaleout支持更大的数据量,以及更高的并发访问请求。

和TimesTen Classic一样,TimesTen Scaleout也是关系型数据库。在和某一能源客户的联合测试中,数据迁移到TimesTen后,应用未经修改仍可以正常运行。

关于此模式,可参考Oracle官网的中国移动使用TimesTen Scaleout用于营销推广的案例。

模式5:TimesTen作为实时ODS

在这里插入图片描述

这种模式和模式2有些类似,都充分利用了TimesTen的内存计算和关系型数据库的特点。但此处TimesTen不是缓存,而是作为多数据来源的数据汇聚后的高速计算引擎,和后端数据库的耦合度更低,因此也更灵活,后端不限于Oracle数据库。

模式6:Oracle Database In-Memory实现极速分析图片

在这里插入图片描述

从技术层面看,TimesTen是一个独立开发的产品,而Database In-Memory是Oracle数据库的一部分。Database In-Memory是Oracle融合数据库的重要特征,也是实现Oracle数据库HTAP能力的重要技术。

由于Database In-Memory技术,Oracle被主流研究公司评为Translytical(HTAP的另一种说法) 数据平台领导者。Forrester Research在报告“Forrester Wave™:Translytical 数据平台,2019 年第 4 季度”中指出:“与其他供应商不同,Oracle 使用双格式数据库(同一个表的行和列)来提供卓越的 Translytical 性能”,并且“客户喜欢 Oracle 支持多种工作负载的能力,包括 OLTP、物联网、微服务、多模型、数据科学、AI/ML、空间、图形和分析。”

关于Database In-Memory的技术介绍,可参考之前的公众号文章:“加速度:走进Oracle Database In-Memory”。关于案例,可参考之前的公众号文章“海信Oracle Database In-Memory案例分享”,或Oracle官网上的更多案例。

模式7:True Cache 作为Oracle数据库只读缓存

在这里插入图片描述

此模式是模式1的深化。相对于TimesTen,True Cache和Oracle数据库之间的集成度更高,因为True Cache就是无盘的Active Data Guard 备库,只不过数据在内存中。

传统的读缓存模式,用户经常纠结于缓存刷新的频率。如果太频繁,担心对后端数据库造成太大压力;如果间隔太久,又担心数据太陈旧。使用True Cache就完全没有此顾虑,因为数据变化利用ADG的重做日志传输机制自动刷新到True Cache。

由于Oracle数据库支持JSON,因此除了SQL缓存,True Cache也支持Key/Value缓存。开发层面也更简单,传统模式需要维护两个连接,一个到缓存数据库,一个到源数据库。而True Cache也支持应用层面的连接统一管理,例如Java应用可以仅通过设置属性,就可以自动在True Cache(只读)和原始Oracle数据库(需要写时)间进行切换。

关于True Cache的更多信息,请参考Oracle官方网页。在True Cache正式推出后,我们也将发布详细的介绍文章。

结语

以上就是Oracle内存计算典型的应用模式,大体可以分为独立内存数据库(集中式和分布式),内存缓存(只读缓存和读写缓存)两类。从商务模式来看,TimesTen可以作为独立的数据库销售(TimesTen Classic和TimesTen Scaleout),即TimesTen In-Memory Database;当作为Oracle数据库前端的缓存时,TimesTen被视为数据库选件,即TimesTen Application-Tier Database Cache。Database In-Memory只作为数据库选件售卖,True Cache的商业销售模式,则有待23c 本地版正式发布时揭晓。

有了模式以后,最重要的就是确定在何种场景下应该(或不应该)选用哪种模式。以上列举的几种应用模式,TimesTen占比较大,这是由于TimesTen作为独立产品,使用方式比较灵活,是一种偏广度的产品;而Database In-Memory和True Cache依存于Oracle数据库,是一种偏深度的解决方案。具体选用哪种产品和技术方案,取决于实际技术需求,投入,用户现有架构,开发和运维能力和偏好,以及未来的目标架构等因素。如果您有这方面的需求或问题,请联系我们,让我们共同规划出适合您的产品和解决方案。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/412030.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ElasticSearch之操作管理规范【附件可下载world文档】

一、 目的 为了在软件生命周期内规范数据库相关的设计、开发、运维工作,便于不同团队之间的沟通及协调,制定此文档,以期在相关规范上达成共识和默契,提升相关环节的工作效率及系统的可维护性。同时好的规范,在执行的时候可以培养出好的习惯,好的习惯是软件质量的很好保证…

跟着cherno手搓游戏引擎【26】Profile和Profile网页可视化

封装Profile&#xff1a; Sandbox2D.h:ProfileResult结构体和ProfileResult容器&#xff0c;存储相应的信息 #pragma once #include "YOTO.h" class Sandbox2D :public YOTO::Layer {public:Sandbox2D();virtual ~Sandbox2D() default;virtual void OnAttach()ove…

Docker Volume

"Ice in my vein" Docker Volume(存储卷) 什么是存储卷? 存储卷就是: “将宿主机的本地文件系统中存在的某个目录&#xff0c;与容器内部的文件系统上的某一目录建立绑定关系”。 存储卷与容器本身的联合文件系统&#xff1f; 在宿主机上的这个与容器形成绑定关系…

3D生成式AI模型与工具

当谈到技术炒作时&#xff0c;人工智能正在超越虚拟世界&#xff0c;吸引世界各地企业和消费者的注意力。 但人工智能可以进一步增强虚拟世界&#xff0c;至少在某种意义上&#xff1a;资产创造。 AI 有潜力扩大用于虚拟环境的 3D 资产的创建。 AI 3D生成使用人工智能生成3D模…

能碳双控| AIRIOT智慧能碳管理解决方案

在当前全球气候变化和可持续发展的背景下&#xff0c;建设能碳管理平台成为组织迎接挑战、提升可持续性的重要一环&#xff0c;有助于组织实现可持续发展目标&#xff0c;提高社会责任形象&#xff0c;同时适应未来碳排放管理的挑战。能碳管理是一个涉及跟踪、报告和减少组织碳…

C++面试宝典第32题:零钱兑换

题目 给定不同面额的硬币coins和一个总金额amount,编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,则返回-1。说明:你可以认为每种硬币的数量是无限的。 示例1: 输入:coins = [1, 2, 5], amount = 11 输出:3 解释:11 = …

ETL是什么

一、ETL概念 ETL&#xff0c;是英文Extract-Transform-Load的缩写&#xff0c;用来描述将数据从来源端经过抽取&#xff08;extract&#xff09;、转换&#xff08;transform&#xff09;、加载&#xff08;load&#xff09;至目的端的过程。ETL一词较常用在数据仓库&#xff…

光谱数据处理:1.特征波长优选的不同方法与Python实现

首先&#xff0c;我们要理解为什么要对“光谱数据进行特征波长优选”以及这是在干嘛&#xff0c;光谱数据可以想象成一长串的彩色条纹&#xff0c;每种颜色对应一个波长&#xff0c;就像彩虹一样。这些颜色的条纹代表了从某种物质&#xff08;比如植物、矿石或是食品&#xff0…

计网自顶向下:网络应用层【Web应用与HTTP协议】

目录 Web应用Web页URLWorld Wide Web 超文本传输协议——HTTP超文本C/S结构报文请求报文响应报文HTTP响应状态码try&#xff1a;在命令行里手工给web服务器发送请求 http连接的两种类型非持久&#xff08;http1.0&#xff09;持久&#xff08;http1.1&#xff09;▷ 流水线▷ 非…

【自然语言处理三-自注意self attention】

自然语言处理三-自注意力 self attention 自注意力是什么&#xff1f;自注意力模型出现的原因是什么&#xff1f;词性标注问题解决方法1-扩展window&#xff0c;引用上下文解决方法2-运用seq2seq架构新问题来了&#xff1a;参数量增加、无法并行的顽疾 自注意力self attention模…

C++ list详解以及模拟实现

目录 1.list的使用 1.1list的定义 1.2list的使用 1.3list iterator使用 1.4list capacity 1.5list element access 1.6list增删查改 2.list迭代器失效问题 3.list的模拟实现 1.list的使用 1.1list的定义 1. list是可以在常数范围内在任意位置进行插入和删除的序列式容…

水印相机小程序源码

水印相机前端源码&#xff0c;本程序无需后端&#xff0c;前端直接导入即可&#xff0c;没有添加流量主功能&#xff0c;大家开通后自行添加 源码搜索&#xff1a;源码软件库 注意小程序后台的隐私权限设置&#xff0c;前端需要授权才可使用 真实时间地址拍照记录&#xff0c…

alembic

alembic是sqlalchemy的作者开发的。 用来做OMR模型与数据库的迁移与映射。 第一个&#xff0c;alembic的所有命令都是以alembic开头 第二&#xff0c;alembic的迁移文件也是通过版本进行控制的。首先&#xff0c;通过pip install alembic进行安装。以下将解释alembic的用法 方…

从管易云·奇门到金蝶云星空通过接口配置打通数据

从管易云奇门到金蝶云星空通过接口配置打通数据 对接源平台:管易云奇门 管易云是金蝶旗下专注提供电商企业管理软件服务的子品牌&#xff0c;先后开发了C-ERP、EC-OMS、EC-WMS、E店管家、BBC、B2B、B2C商城网站建设等产品和服务&#xff0c;涵盖电商业务全流程。 目标系统:金蝶…

ZYNQ:串口-CAN协议转换

前言 目前已经实现zynq的PS-CAN和PL-CAN功能。串口-CAN协议转换是实现以太网-CAN功能的过渡&#xff0c;通过这个流程能够减少后期以太网工程出现问题的频率。阶段性功能目标如下&#xff1a; 实现数据在CAN调试助手和串口调试助手之间的来回转换&#xff0c;从而了解中断机制…

Vue前端对请假模块——请假开始时间和请假结束时间的校验处理

开发背景&#xff1a;Vueelement组件开发 业务需求&#xff1a;用户提交请假申请单&#xff0c;请假申请的业务逻辑处理 实现&#xff1a;用户选择开始时间需要大于本地时间&#xff0c;不得大于请假结束时间&#xff0c;请假时长根据每日工作时间实现累加计算 页面布局 在前…

【Excel PDF 系列】EasyExcel + iText 库

你知道的越多&#xff0c;你不知道的越多 点赞再看&#xff0c;养成习惯 如果您有疑问或者见解&#xff0c;欢迎指教&#xff1a; 企鹅&#xff1a;869192208 文章目录 前言转换前后效果引入 pom 配置代码实现定义 ExcelDataVo 对象主方法EasyExcel 监听器 前言 最近遇到生成 …

SQL进阶(三):Join 小技巧:提升数据的处理速度

复杂数据结构处理&#xff1a;Join 小技巧&#xff1a;提升数据的处理速度 本文是在原本sql闯关的基础上总结得来&#xff0c;加入了自己的理解以及疑问解答&#xff08;by GPT4&#xff09; 原活动链接 用到的数据&#xff1a;链接 提取码&#xff1a;l03e 目录 1. 课前小问…

动态规划之第 N 个泰波那契数/三步问题【leetCode】【算法】

动态规划动态规划之第 N 个泰波那契数/三步问题 动态规划LeetCode题目第 N 个泰波那契数求解1求解2&#xff08;滚动数组&#xff09; 三步问题求解1求解2&#xff08;滚动数组&#xff09; 动态规划 如果问题是由重叠的子问题构成的&#xff0c;那就可以用动态规划&#xff08…

JSON简介以及如何在Python中使用JSON

什么是JSON&#xff1f; JSON是"JavaScript Object Notation"的简称&#xff0c;是一种数据交换格式 JSON格式 假设我们有一个对象&#xff0c;这个对象有两个属性&#xff1a;“name”跟“age”。 在JSON中是这样表达的&#xff1a; { "name":"男孩…