最近,Oracle的产品管理总监在Oracle数据库内幕中介绍了True Cache。

原文链接如下:

由于这篇文章比较火爆,我们国内已经有很多的数据库爱好者完整的翻译这篇文章,所以笔者也不需要重复翻译,本文旨在提炼文中关键信息,并使用大白话和大家一起探讨下23ai中的True Cache功能:

  • 1.为什么需要True Cache?
  • 2.True Cache工作原理
  • 3.应用程序使用True Cache
  • 4.True Cache的好处和应用场景

1.为什么需要True Cache?

通常这个问题会是IT部门的领导层最关心的问题,现有架构下,为什么需要引入True Cache?

回答这个问题,需要先了解下目前的发展趋势,当下随着数字化环境的不断发展,各类应用要求提供实时响应成为当务之急,而大家都知道数据库的资源很宝贵,大部分高并发应用其实都是读多写入的场景,所以业界常用的方案就是在数据库的前面加一个缓存层,且将它设计在内存中缓存(Caching),这个底层逻辑其实也非常简单,就是内存的速度一定是远远高于存储速度的,这是介质本身存在的数量级的性能差异。

当然,能接受用缓存的共识是这个缓存中无需最新的数据,说白了,无论你用什么样的缓存技术,读的数据无论多少,一定都是有延迟的,可应用需求一定会要求这个延迟越小越好,这里原文中立马就提到Oracle提供的True Cache是一个突破性的缓存解决方案,那这个突破性具体体现在哪里呢?

  • 性能的进一步优化
  • 缓解数据陈旧问题
  • 有效管理缓存数据

这些方面的优势是因为True Cache相当于是一个主库的全功能的只读副本,类似ADG,但又比ADG轻量,它不需要数据文件的存储,别小看这一点,对于当下一个动辄几十T数据量的数据库来说,将会是非常大的成本节约。

2.True Cache工作原理

这里,提炼文中关键的几点:

  • 应用程序通过Oracle JDBC Driver连接对应实例(主库和True Cache实例)
  • 当发生Cache miss(缓存未命中)时,True Cache会从主库获取块
  • 当True Cache实例首次启动,除了获取Cache miss的块,还会以large chunks的方式预热大量周围相关块
  • 对于已经缓存到True Cache实例中的数据块,块的更新自动通过redo apply来更新,这其实就用到ADG ASYNC的技术,从而实现sub-second的延迟,实时性非常高,有效缓解了普通缓存技术的数据陈旧问题
  • 数据一致性,这点基本是Oracle的万能优势,原生的缓存确保你从True Cache中读到的数据也是提交成功的数据

3.应用程序使用True Cache

文中提到了两种方式:

  • 多个物理连接
  • 一个逻辑连接

这里多个物理连接不用多说,主要优势点还是在于支持提供一个逻辑连接,然后通过Driver处理底层的物理连接,这就可以真正的简化应用配置。

4.True Cache的好处和应用场景

True Cache的好处体现在:

  • 提升APP性能
  • 简单高效:自动化维护、简化开发、提升SLA
  • 成本节约

应用场景文中提到的可以给大家参考:

  • 用户会话存储,提供微妙级的响应时间
  • 电子商务,对在线产品目录的高效浏览
  • 在线游戏,实时的排行榜,用户排名
  • 用户身份验证
  • 实时分析
  • 边缘计算
  • 数据主权

这些点大部分都比较好理解,也可以作为我们发现更多应用场景的一个启发。

不过最后这点“数据主权”的应用场景,笔者其实也是有一些疑问的,因为如果单纯使用True Cache技术,即便True Cache部署在特殊地区,数据其实都还在主库中,只是这个True Cache接受到的用户请求没有出境而已。如果要做到真正的数据主权,应该是还要配合Sharding技术。大家觉得呢?

最后总结部分,文中提到Oracle的True Cache是全面的解决方案,再次强调原生的Ture Cache能同时利用到Oracle DB的完整能力,这个其实也是所有Oracle原生技术的通用优势了,比较容易理解。

23ai中的True Cache到底能做啥?的更多相关文章

  1. iOS 中push和pop到底系统做了些什么事

    iOS中的push和pop是一个很常用的视图切换方法,他们是成对出现的, 简而言之,push就是压栈,pop就是出栈! [self.navigationController pushViewContr ...

  2. ABP中使用Redis Cache(2)

    上一篇讲解了如何在ABP中使用Redis Cache,虽然能够正常的访问Redis,但是Redis里的信息无法同步更新.本文将讲解如何实现Redis Cache与实体同步更新.要实现数据的同步更新,我 ...

  3. ABP中使用Redis Cache(1)

    本文将讲解如何在ABP中使用Redis Cache以及使用过程中遇到的各种问题.下面就直接讲解使用步骤,Redis环境的搭建请直接网上搜索. 使用步骤: 一.ABP环境搭建 到http://www.a ...

  4. Android Intent到底能做些什么

    Android Intent到底能做些什么 原文:http://www.toutiao.com/i6348296465147757058/?tt_from=mobile_qq&utm_camp ...

  5. treeview自动从表中添加标题和列值做目录的方法2

    treeview自动从表中添加标题和列值做目录的方法2,该方法是借鉴万一老师的 http://www.cnblogs.com/del/archive/2008/05/15/1114450.html 首 ...

  6. Linux中Buffer和Cache的区别

    1. Cache:缓存区,是高速缓存,是位于CPU和主内存之间的容量较小但速度很快的存储器,因为CPU的速度远远高于主内存的速度,CPU从内存中读取数据需等待很长的时间,而  Cache保存着CPU刚 ...

  7. CNN中,1X1卷积核到底有什么作用呢?

    CNN中,1X1卷积核到底有什么作用呢? https://www.jianshu.com/p/ba51f8c6e348 Question: 从NIN 到Googlenet mrsa net 都是用了这 ...

  8. 怎么发现RAC环境中'library cache pin'等待事件的堵塞者(Blocker)?

    怎么发现RAC环境中的'library cache pin'等待事件的堵塞者(Blocker) 參考自 How to Find the Blocker of the 'library cache pi ...

  9. 4-10 辅助方法controll_name,;SanitizeHelper; 伪元素和scss中的&, @Media; cache介绍。

    回顾知识点 1. 在application.html.erb中: <main class="<%= controller.controller_name%>"&g ...

  10. Linux中的Buffer Cache和Page Cache echo 3 > /proc/sys/vm/drop_caches Slab内存管理机制 SLUB内存管理机制

    Linux中的Buffer Cache和Page Cache echo 3 > /proc/sys/vm/drop_caches   Slab内存管理机制 SLUB内存管理机制 http://w ...

随机推荐

  1. c# 优化代码的一些规则——用委托表示回调[五]

    前言 委托为什么可以作为回调? 因为委托可以作为方法的参数. 正文 通过委托,是一种定义类型安全回调. 记得第一个接触委托的时候,是老师讲的,后来真正用的是完成学期项目,一个winform,委托作为事 ...

  2. 重走py 之路 ——字典和集合(二)

    前言 python 中有6大标准类型: 数字(Number) 字符串(String) 列表(List) 元组(Tumple) 集合(Set) 字典(Dictionary) 前面已经介绍了上面4种,还有 ...

  3. leetcode:1337. 方阵中战斗力最弱的 K 行

    1337. 方阵中战斗力最弱的 K 行 给你一个大小为 m * n 的方阵 mat,方阵由若干军人和平民组成,分别用 0 和 1 表示. 请你返回方阵中战斗力最弱的 k 行的索引,按从最弱到最强排序. ...

  4. element-ui多选(批量)删除

    导出axios请求

  5. 阿里云安全运营中心:DDoS攻击趁虚而入,通过代理攻击已成常态

    应用层DDoS攻击与传统的DDoS攻击有着很大不同.传统的DDoS攻击通过向攻击目标发起大流量并发式访问造成服务不可用,系统瘫痪,这种方式比较容易被识破,且市场上已经有成熟的应对方案.而近年来兴起的应 ...

  6. KubeCon 2020 演讲集锦|《阿里巴巴云原生技术与实践 13 讲》开放下载

    2020 年 7 月 30 日至 8 月 1 日,由 Cloud Native Computing Foundation (CNCF) 主办的云原生技术大会 Cloud Native + Open S ...

  7. 深度解读 MongoDB 最全面的增强版本 4.4 新特性

    MongoDB 在今年正式发布了新的 4.4 大版本,这次的发布包含众多的增强 Feature,可以称之为是一个维护性的版本,而且是一个用户期待已久的维护性版本,MongoDB 官方也把这次发布称为「 ...

  8. Datastream 开发打包问题

    ​简介:Datastream作业开发时往往会遇到一些jar包冲突等问题,本文主要讲解作业开发时需要引入哪些依赖以及哪些需要被打包进作业的jar中,从而避免不必要的依赖被打入了作业jar中以及可能产生的 ...

  9. dotnet C# 反射扫描程序集所有类型会不会触发类型静态构造函数

    在 dotnet 里面,有很多框架都喜欢扫描程序集进行初始化逻辑,在扫描程序集的所有类型的时候,相当于碰到所有类型.而某个类型的静态构造函数将会在某个类型被使用之前被 CLR 调用,那么扫描类型是否会 ...

  10. Apache Pulsar 桌面端图形化管理工具

    Apache Pulsar 桌面端图形化管理工具 Apache Pulsar 是 Apache 软件基金会顶级项目,是下一代云原生分布式消息流平台,集消息.存储.轻量化函数式计算为一体,采用计算与存储 ...