当前位置: 首页 > news >正文

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内存计算应用模式

前言 内存计算是利用内存来加速数据访问和应用的性能&#xff0c;并降低应用开发复杂度的技术。近十年来&#xff0c;随着软硬件技术的发展和用户需求的成熟&#xff0c;内存计算技术已经得到了广泛地应用。 Oracle在内存计算领域具有非常重要的地位&#xff0c;这主要得益于…...

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语言 对带头双向循环链表 进行实现&#xff0c;详见数据结构: 线性表(带头双向循环链表实现), 相较于之前的实现&#xff0c;C 下多了对迭代器以及模板等相关语法特性。下面将着重讲解这些新知识。 文章目录 一. list 的基本框架…...

抖音视频批量下载软件|视频评论采集工具

抖音视频评论采集软件是一款基于C#开发的高效、便捷的工具&#xff0c;旨在为用户提供全面的数据采集和分析服务。用户可以通过关键词搜索抓取视频数据&#xff0c;也可以通过分享链接进行单个视频的抓取和下载&#xff0c;从而轻松获取抖音视频评论数据。 批量视频提取模块&a…...

Oracle RMAN 备份恢复

Oracle RMAN 备份恢复 1.什么是RMAN RMAN在数据库服务器的帮助下实现数据库文件、控制文件、数据库文件和控制文件的映像副本&#xff0c;以及归档日志文件&#xff0c;数据库服务器参数文件的备份。RMAN也允许使用脚本文件实现数据的备份与恢复&#xff0c;而且这些脚本保存…...

【MySQL】学习和总结联合查询

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-OPj5g6evbkm5ol0U {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…...

Flink应用场景

1、介绍 (1) Apache Flink 功能强大&#xff0c;支持开发和运行多种不同种类的应用程序。它的主要特性包括&#xff1a;批流一体化、精密的状态管理、事件时间支持以及精确一次的状态一致性保障等。Flink 不仅可以运行在包括 YARN、 Mesos、Kubernetes 在内的多种资源管理框架…...

产品渲染3D效果图一张多少钱,哪个平台更有性价比?

产品渲染3D效果图的价格受到多方面因素的影响&#xff0c;包括但不限于产品类型、渲染难度以及输出尺寸等。如果效果图需要后期处理&#xff0c;还有可能增加其他费用。接下来&#xff0c;我们来了解一下产品渲染效果图的费用情况。 1.产品渲染3D效果图一张多少钱&#xff1f; …...

云原生之容器编排实践-ruoyi-cloud项目部署到K8S:MySQL8

背景 前面搭建好了 Kubernetes 集群与私有镜像仓库&#xff0c;终于要进入服务编排的实践环节了。本系列拿 ruoyi-cloud 项目进行练手&#xff0c;按照 MySQL &#xff0c; Nacos &#xff0c; Redis &#xff0c; Nginx &#xff0c; Gateway &#xff0c; Auth &#xff0c;…...

go interface{} 和string的转换问题

1.遇到的问题 问题来源于,我sql模版拼接遇到的问题。 首先&#xff0c;这样是没有问题的。 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 部分输出&#xff1a;-n6.2 格式化输出&#xff1a;--format、--oneline6.3 统计修改信息&#xff1a;--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.网络游戏逆向分析与漏洞攻防-游戏网络架构逆向分析-接管游戏发送数据的操作

内容参考于&#xff1a;易道云信息技术研究院VIP课 上一个内容&#xff1a;接管游戏连接服务器的操作 码云地址&#xff08;master 分支&#xff09;&#xff1a;染指/titan 码云版本号&#xff1a;00820853d5492fa7b6e32407d46b5f9c01930ec6 代码下载地址&#xff0c;在 ti…...

将SU模型导入ARCGIS,并获取高度信息,多面体转SHP文件(ARCMAP)

问题:将Sketchup中导出的su模型,导入arcgis并得到面shp文件,进而获取各建筑的高度、面积等信息。 思路: (1)导入arcgis得到多面体 (2)转为面shp文件 (3)计算高度/面积等 1、【3D Analyst工具】【转换】【由文件转出】【导入3D文件】(在此步骤之间,建议先建立一个…...

【电子通识】为什么单片机芯片上会有多组VDD电源?

在单片机芯片规格书中&#xff0c;我们经常能看到多个组VDD的设计&#xff0c;如下红框所示管脚都是VDD管脚。 为什么需要这样设计&#xff1f;只设置一个VDD管脚&#xff0c;把其他的VDD管脚让出来多做几个IO或是其他复用功能不好吗&#xff1f;接下来我们从单片机内部的电路结…...

跟我学C++中级篇——单实例和静态化

一、单实例模式 在设计模式中&#xff0c;单实例模式几乎是所有语言中都非常常用的一种设计模式。它在实际的应用中也非常广泛&#xff0c;在很多的开源框架中&#xff0c;都可以看到单实例的影子。单实例&#xff0c;简单的就可以看做在整个应用周期中&#xff0c;只有一个对…...

下载 axios.js 文件到本地【linux】

方式一 npm install axios在$NODE_PATH/node_modules/axios/dist路径下即可找到axios.js。 方式二 1、百度搜索 GitHub 官网&#xff1a;https://github.com/ 2、搜索 axios 3、点击 axios/axios 4、下载到本地 5、解压&#xff0c;进入到 dist 文件夹** 参考&#x…...

哔哩下载姬:3步轻松搞定B站视频高效下载与智能管理

哔哩下载姬&#xff1a;3步轻松搞定B站视频高效下载与智能管理 【免费下载链接】downkyi 哔哩下载姬downkyi&#xff0c;哔哩哔哩网站视频下载工具&#xff0c;支持批量下载&#xff0c;支持8K、HDR、杜比视界&#xff0c;提供工具箱&#xff08;音视频提取、去水印等&#xff…...

USB-PD协议分析仪Dr. PD的设计与应用

1. 项目概述&#xff1a;Dr. PD USB-PD协议分析仪十年前谁能想到&#xff0c;一根数据线能同时传输4K视频、千兆网络和240W电力&#xff1f;USB-C和Power Delivery&#xff08;PD&#xff09;协议彻底改变了电子设备的供电方式。但当你设计的PD设备无法正常握手&#xff0c;或者…...

别再用PSB模块了!用Simulink Physics Signal库手把手搭建Boost PFC仿真(附R2016a避坑指南)

电力电子仿真进阶&#xff1a;Physics Signal库在Boost PFC设计中的实战技巧 在电力电子仿真领域&#xff0c;工程师们常常面临工具选择的困境。传统PSB模块虽然直观&#xff0c;但在处理复杂非线性系统时往往暴露出收敛性差、振铃严重等问题。本文将揭示如何利用Simulink中鲜为…...

Pixel Aurora EngineGPU利用率提升教程:diffusers流水线并行优化

Pixel Aurora Engine GPU利用率提升教程&#xff1a;diffusers流水线并行优化 1. 认识Pixel Aurora Engine Pixel Aurora Engine是一款基于AI扩散模型的高端绘图工作站&#xff0c;采用独特的8-bit像素风格界面设计。这款"虚拟游戏机"能将文字描述转化为极具视觉冲…...

GenUI:从“文本对话”到“可操作界面”的范式转移

写在前面假如我问你&#xff1a;“帮我推荐几双500元以下的跑鞋。”传统AI会回复一段文字&#xff1a;“推荐李宁超轻系列&#xff0c;价格XXX&#xff1b;安踏氢跑系列……”你读完&#xff0c;再去电商App搜索、筛选、下单。整个过程在“读—搜—筛”之间反复跳转。但如果AI直…...

3步破解媒体碎片化:m4s-converter如何重塑你的离线视频体验?

3步破解媒体碎片化&#xff1a;m4s-converter如何重塑你的离线视频体验&#xff1f; 【免费下载链接】m4s-converter 一个跨平台小工具&#xff0c;将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 实战演练&am…...

程序员上手 Rust 2 年后感悟:它的确强大,但想要取代 C 还远着呢

作者 | Nabil Elqatib 译者 | 平川 策划 | 刘燕 本文最初发布于 Nabil Elqatib 的个人博客。 接触 Rust 开发快两年了。我觉得&#xff0c;回顾下自己在这个过程中的一些感想和汲取的经验教训&#xff0c;应该会很有趣。 下图是我第一次向一个 Rust 存储库提交代码。虽然时间是…...

CentOS 7/8 安装Nginx后conf.d目录空空如也?别慌,两种方法帮你搞定default.conf

CentOS 7/8安装Nginx后conf.d目录为空&#xff1f;两种专业解决方案详解 刚在CentOS上装完Nginx&#xff0c;兴冲冲打开/etc/nginx/conf.d准备配置站点&#xff0c;却发现目录空空如也——这场景让多少运维新手心头一紧。别急着重装系统&#xff0c;这其实是包管理源差异导致的…...

终极指南:如何一键检测微信单向好友关系

终极指南&#xff1a;如何一键检测微信单向好友关系 【免费下载链接】WechatRealFriends 微信好友关系一键检测&#xff0c;基于微信ipad协议&#xff0c;看看有没有朋友偷偷删掉或者拉黑你 项目地址: https://gitcode.com/gh_mirrors/we/WechatRealFriends 你是否曾怀疑…...

从‘线性估计’的工程应用反推:为什么机器学习中的梯度下降要求函数可微?

梯度下降为何要求函数可微&#xff1f;从工程视角看数学约束 在机器学习项目的实际开发中&#xff0c;我们常常不假思索地调用现成的优化器&#xff0c;比如TensorFlow的AdamOptimizer或PyTorch的SGD。这些优化器的核心都是梯度下降算法&#xff0c;而所有梯度下降的实现都隐含…...