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数据库,是一种偏深度的解决方案。具体选用哪种产品和技术方案,取决于实际技术需求,投入,用户现有架构,开发和运维能力和偏好,以及未来的目标架构等因素。如果您有这方面的需求或问题,请联系我们,让我们共同规划出适合您的产品和解决方案。
相关文章:
Oracle内存计算应用模式
前言 内存计算是利用内存来加速数据访问和应用的性能,并降低应用开发复杂度的技术。近十年来,随着软硬件技术的发展和用户需求的成熟,内存计算技术已经得到了广泛地应用。 Oracle在内存计算领域具有非常重要的地位,这主要得益于…...
ELK日志系统
一、规划 服务名所在服务器kafka1—2.13-2.4.1192.168.76.10kafka2—2.13-2.4.1192.168.76.11kafka3—2.13-2.4.1192.168.76.12zookeeper1—3.6.3192.168.76.10zookeeper2—3.6.3192.168.76.11zookeeper3—3.6.3192.168.76.12elasticsearch1—7.12.1192.168.76.10elasticsearc…...
C++:list容器(非原生指针迭代器的实现)
本章是STL容器 list 的模拟实现。 之前已经使用 C语言 对带头双向循环链表 进行实现,详见数据结构: 线性表(带头双向循环链表实现), 相较于之前的实现,C 下多了对迭代器以及模板等相关语法特性。下面将着重讲解这些新知识。 文章目录 一. list 的基本框架…...
抖音视频批量下载软件|视频评论采集工具
抖音视频评论采集软件是一款基于C#开发的高效、便捷的工具,旨在为用户提供全面的数据采集和分析服务。用户可以通过关键词搜索抓取视频数据,也可以通过分享链接进行单个视频的抓取和下载,从而轻松获取抖音视频评论数据。 批量视频提取模块&a…...
Oracle RMAN 备份恢复
Oracle RMAN 备份恢复 1.什么是RMAN RMAN在数据库服务器的帮助下实现数据库文件、控制文件、数据库文件和控制文件的映像副本,以及归档日志文件,数据库服务器参数文件的备份。RMAN也允许使用脚本文件实现数据的备份与恢复,而且这些脚本保存…...
【MySQL】学习和总结联合查询
🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 💫个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-OPj5g6evbkm5ol0U {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…...
Flink应用场景
1、介绍 (1) Apache Flink 功能强大,支持开发和运行多种不同种类的应用程序。它的主要特性包括:批流一体化、精密的状态管理、事件时间支持以及精确一次的状态一致性保障等。Flink 不仅可以运行在包括 YARN、 Mesos、Kubernetes 在内的多种资源管理框架…...
产品渲染3D效果图一张多少钱,哪个平台更有性价比?
产品渲染3D效果图的价格受到多方面因素的影响,包括但不限于产品类型、渲染难度以及输出尺寸等。如果效果图需要后期处理,还有可能增加其他费用。接下来,我们来了解一下产品渲染效果图的费用情况。 1.产品渲染3D效果图一张多少钱? …...
云原生之容器编排实践-ruoyi-cloud项目部署到K8S:MySQL8
背景 前面搭建好了 Kubernetes 集群与私有镜像仓库,终于要进入服务编排的实践环节了。本系列拿 ruoyi-cloud 项目进行练手,按照 MySQL , Nacos , Redis , Nginx , Gateway , Auth ,…...
go interface{} 和string的转换问题
1.遇到的问题 问题来源于,我sql模版拼接遇到的问题。 首先,这样是没有问题的。 var qhx interface{} "qhx"s : qhx.(string)fmt.Println(s) 但是当我在这段代码里用:1.类型断言 var sqlStr "select * from tx_user where username %s" join…...
【Git教程】(三)提交详解 —— add、commit、status、stach命令的说明,提交散列值与历史,多次提交及忽略 ~
Git教程 提交详解 1️⃣ 访问权限与时间戳2️⃣ add命令与 commit 命令3️⃣ 提交散列值4️⃣ 提交历史5️⃣ 一种特别的提交查看方法6️⃣ 同一项目的多部不同历史6.1 部分输出:-n6.2 格式化输出:--format、--oneline6.3 统计修改信息:--st…...
vue3个人网站电子宠物
预览 具体代码 Attack.gif Attacked.gif Static.gif Walk.gif Attack.gif Static.gif Attacked.gif Walk.gif <template><div class"pet-container" ref"petContainer"><p class"pet-msg">{{ pet.msg }}</p><img re…...
2.22 作业
顺序表 运行结果 fun.c #include "fun.h" seq_p create_seq_list() {seq_p L (seq_p)malloc(sizeof(seq_list));if(LNULL){printf("空间申请失败\n");return NULL;}L->len 0; bzero(L,sizeof(L->data)); return L; } int seq_empty(seq_p L) {i…...
office word保存pdf高质量设置
1 采用第三方pdf功能生成 分辨率越大质量越好...
微服务设计模式
微服务在过去十年中已经发展到现在非常成熟的水平。许多模式被演变以适应不同的需求。 架构模式 分层图案 2层三层n层客户端服务器 一个服务器和多个客户端大多数在线应用程序,例如电子邮件、银行应用程序等。分开演示 模型-视图-控制器 (MVC) 模型——包含核心功能和数据查看…...
10.网络游戏逆向分析与漏洞攻防-游戏网络架构逆向分析-接管游戏发送数据的操作
内容参考于:易道云信息技术研究院VIP课 上一个内容:接管游戏连接服务器的操作 码云地址(master 分支):染指/titan 码云版本号:00820853d5492fa7b6e32407d46b5f9c01930ec6 代码下载地址,在 ti…...
将SU模型导入ARCGIS,并获取高度信息,多面体转SHP文件(ARCMAP)
问题:将Sketchup中导出的su模型,导入arcgis并得到面shp文件,进而获取各建筑的高度、面积等信息。 思路: (1)导入arcgis得到多面体 (2)转为面shp文件 (3)计算高度/面积等 1、【3D Analyst工具】【转换】【由文件转出】【导入3D文件】(在此步骤之间,建议先建立一个…...
【电子通识】为什么单片机芯片上会有多组VDD电源?
在单片机芯片规格书中,我们经常能看到多个组VDD的设计,如下红框所示管脚都是VDD管脚。 为什么需要这样设计?只设置一个VDD管脚,把其他的VDD管脚让出来多做几个IO或是其他复用功能不好吗?接下来我们从单片机内部的电路结…...
跟我学C++中级篇——单实例和静态化
一、单实例模式 在设计模式中,单实例模式几乎是所有语言中都非常常用的一种设计模式。它在实际的应用中也非常广泛,在很多的开源框架中,都可以看到单实例的影子。单实例,简单的就可以看做在整个应用周期中,只有一个对…...
下载 axios.js 文件到本地【linux】
方式一 npm install axios在$NODE_PATH/node_modules/axios/dist路径下即可找到axios.js。 方式二 1、百度搜索 GitHub 官网:https://github.com/ 2、搜索 axios 3、点击 axios/axios 4、下载到本地 5、解压,进入到 dist 文件夹** 参考&#x…...
【Axure高保真原型】引导弹窗
今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...
CocosCreator 之 JavaScript/TypeScript和Java的相互交互
引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...
Neo4j 集群管理:原理、技术与最佳实践深度解析
Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...
Robots.txt 文件
什么是robots.txt? robots.txt 是一个位于网站根目录下的文本文件(如:https://example.com/robots.txt),它用于指导网络爬虫(如搜索引擎的蜘蛛程序)如何抓取该网站的内容。这个文件遵循 Robots…...
uniapp中使用aixos 报错
问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...
OpenLayers 分屏对比(地图联动)
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...
C++八股 —— 单例模式
文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全(Thread Safety) 线程安全是指在多线程环境下,某个函数、类或代码片段能够被多个线程同时调用时,仍能保证数据的一致性和逻辑的正确性…...
.Net Framework 4/C# 关键字(非常用,持续更新...)
一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...
【生成模型】视频生成论文调研
工作清单 上游应用方向:控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...
