大家好,欢迎来到IT知识分享网。
数据缓存
数据库缓存技术简述
现代大型网络应用必须应对大量的用户和数据,如果所有数据的检索都需要查询数据库系统,势必会对数据库系统造成极大的压力,甚至导致数据库崩溃。
为了解决这一问题,数据架构师和数据工程师可以采用数据库缓存技术来提高系统的性能。
什么是数据库缓存以及它是如何工作的
数据库缓存是一种将经常查询的数据存储在临时内存中的缓冲技术。
它使数据更易于访问并减少了数据库的压力。缓存不仅可以提高性能,它还可以提高应用程序的可扩展性和可用性:
- 性能:使数据更容易通过缓存访问并减少数据库的工作负载来提高性能。
- 可扩展性:后端查询的工作负载被分配到缓存系统,成本更低,数据处理更灵活。
- 可用性:如果后端数据库服务器不可用,缓存仍然可以为应用程序提供持续服务,提供系统的可用性。
缓存在帮助提高应用程序性能方面有着良好的表现。事实上,现代缓存服务提供的不仅仅是快速的键值缓存。但是为了了解缓存的全部内容以及它的发展方向,让我们首先回顾一下基础知识。
缓存策略
Cache Aside 旁路缓存
应用程序将首先从缓存中请求数据。如果数据存在(我们称之为“缓存命中”),应用程序将直接检索数据。如果没有(我们称之为“缓存未命中”),应用程序将从数据库请求数据并将其写入缓存,以便下次可以再次从缓存中检索数据。
Read Through 直接读缓存
与缓存不同,缓存位于应用程序和数据库之间。应用程序只从缓存中请求数据。如果发生“缓存未命中”,缓存负责从数据库检索数据、更新自身并将数据返回给应用程序。
Write Back (a.k.a Write Behind) 写回
它具有与直写类似的设置。应用程序仍将数据写入缓存。但是,从缓存写入数据库时存在延迟。缓存每隔一段时间(例如每 2 分钟)将所有更新的数据刷新到 DB。
Write Around
Write Around 通常与 Cache Aside 或 Read Through 策略结合使用。应用程序直接写入数据库。只有读取的数据才会进入缓存。
每种策略的比较
策略 | 优势 | 劣势 |
---|---|---|
Cache Aside | 数据库故障时仍能保证一定的可用性;实施简单;允许 cache 和 db 的数据模型不同;适合一般性的读任务比较繁重的场景; | cache 和 db 的数据可能不一致;第一次读缓存总会“不命中”并导致延迟; |
Read Through | 应用不关心数据库,代码可读性更高;适合相同的数据集频繁读取的场景; | cache 需要复杂的插件以支持从 db 中读数据;第一次读缓存总会“不命中”并导致延迟; |
Write Through | 数据总会存在 cache 中,不会出现“缓存不命中”的问题;与 Read Through 相比更能保证数据一致性; | 增加了写入延迟; |
Write Back | 对于写入任务繁重的场景友好;减少了数据库的写入压力; | cache 故障时可能丢失许多数据; |
缓存解决方案类型
数据库缓存可以采用多种方案,虽然数据架构师首先想到的方法是键值缓存,但这并不是唯一的选择,一些缓存系统为开发人员提供了额外的功能。
键值缓存
键值缓存往往是开发人员首先使用的技术。对于简单的情况,键值解决方案通常是快速有效的。
然而,随着数据的增长和用户查询的增加,架构师面临着新的挑战,例如无法根据多个条件建立索引(添加二级索引)。
高级缓存
除了简单的键值缓存,我们还可以利用一些高级缓存,比如一些缓存解决方案支持完整的 SQL API,从而实现更灵活的数据切片和切块,并轻松从主数据存储迁移。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/33224.html