最近,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. 在 RedHat、 CentOS、 Fedora 和 Debian、 Ubuntu、 Linux Mint、 Xubuntu 等这些系统中安装 Teamviewer

    这篇指南介绍了怎么样在 RedHat. CentOS. Fedora 和 Debian. Ubuntu. Linux Mint. Xubuntu 等这些系统中安装 Teamviewer 9.Teamv ...

  2. 数据分布算法:hash+ 一致性 hash + redis cluster 的 hash slot

    讲解分布式数据存储的核心算法,数据分布的算法 hash 算法 -> 一致性 hash 算法(memcached) -> redis cluster 的 hash slot 算法 用不同的算 ...

  3. 物联网浏览器(IoTBrowser)-使用深度学习开发防浸水远程报警

    一.起因 新房子买在2楼,反水概率较大,加上无良开发商的劣质材料,就我所在楼栋已经发生几起反水事件,而且是高层反水,有几户重复出现反水,原因是管道中间有一个钢筋 :( 二.解决方案 1.水浸传感器+W ...

  4. Python爬取网页遇到:selenium.common.exceptions.WebDriverException解决方法

    在PyCharm中写好下列程序: 一运行遇到下列报错: selenium.common.exceptions.WebDriverException: Message: 'chromedriver' e ...

  5. 第 6章 Python 应对反爬虫策略

    第 6章 Python 应对反爬虫策略 爬取一个网站的基本步骤 (1)分析请求:URL 规则.请求头规则.请求参数规则. (2)模拟请求:通过 Requests 库或 urllib 库来模拟请求. ( ...

  6. 从中间件到分布式数据库,PolarDB-X的透明之路

    简介: PolarDB-X前身是淘宝内部使用的分库分表中间件TDDL(2007年,Java库的形态),早期以DRDS(2012年开始研发,2014年上线,分库分表中间件+MySQL Proxy的形态) ...

  7. OpenYurt 开箱测评 | 一键让原生 K8s 集群具备边缘计算能力

    作者| 郑超 阿里云高级开发工程师 随着物联网技术以及 5G 技术的高速发展,将云计算的能力延伸至边缘设备端,并通过中心进行统一交付.管控,已成为云计算的重要发展趋势.为服务更多开发者把握这一趋势,5 ...

  8. 宜搭5月更新:跨应用数据读写能力升级,AI组件内测开放

    ​简介:表单.权限管理.AI组件等功能上新啦- 本次,我们带来了表单.权限管理.数据管理.平台管理权限.组件等功能的升级. 表单 支持跨应用数据查询 在使用组件数据联动.关联其他表单数据.关联表单组件 ...

  9. 最佳实践丨云上虚拟IDC(私有池)如何为客户业务的确定性、连续性保驾护航

    ​简介: 企业业务上云后,还面临特定可用区购买云上特定计算产品实例失败的困境?云上私有池pick一下 Why 云上业务为什么需要资源确定性.服务连续性 云计算正朝着像水电煤一样的基础设施演进,支持用户 ...

  10. dotnet 教你写一个可以搞炸本机所有 WCF 应用的程序方法

    作为团队里面挖掘机出身的我,怎么能不多挖一些坑好将小伙伴们都埋进去呢.本文来告诉大家一个有趣且简单的方法,此方法可以将本机的 WCF 玩坏,不敢说真的搞炸本机所有 WCF 应用,但搞炸大部分基于 WC ...