一、数据库架构发展
随着互联网+和大数据时代的来临,传统的关系型数据库已经不能满足中大型网站日益增长的访问量和数据量,这个时候就需要一种能够快速存取数据的组件来缓解数据库服务 I/O 的压力 ,来解决系统性能上的瓶颈。
1、数据库应用的发展历史:
1: 在互联网大数据时代来临前,企业的一些内部信息管理系统,一个单个数据库实例就可以应付系统的需求(单数据库实例)
2: 随着系统访问量用户的增多,数据量的增大 ,单个数据库实例已经满足不了系统读取数据的需求(缓存(ehCache/MemCached)+数据库实例)
缓存:缓存是一种存储机制,用于临时存储数据子集,以便快速访问。它通常位于内存中,速度远快于磁盘上的数据库。
数据库:数据库是用于持久存储和检索数据的系统。它通常包含完整和一致的数据集。
缓存和数据库的结合使用
1. 读取操作:
- 当应用程序请求数据时,首先检查缓存。
- 如果数据在缓存中(称为“缓存命中”),则直接从缓存中获取。
- 如果数据不在缓存中(称为“缓存未命中”),则从数据库中检索数据,然后将其存储在缓存中以便下次使用。
2. 写入操作:
- 当应用程序更新数据时,首先更新数据库。
- 然后,更新缓存中的相应数据,或者从缓存中移除过时的数据。
案例:在线购物网站
假设有一个在线购物网站,用户可以浏览和购买商品。这个网站使用MySQL作为数据库,并使用Memcached作为缓存。
1. 商品详情页:
- 当用户请求某个商品的详情时,应用程序首先检查Memcached。
- 如果Memcached中有该商品的详情,应用程序直接从Memcached中获取并展示给用户。
- 如果Memcached中没有该商品的详情,应用程序从MySQL数据库中检索,然后将其存储在Memcached中。
2. 添加商品到购物车:
- 当用户将商品添加到购物车时,应用程序首先将这一操作记录到MySQL数据库中。
- 然后,应用程序更新Memcached中的购物车数据,确保缓存与数据库保持一致。
3. 商品库存更新:
- 当管理员更新商品库存时,首先更新MySQL数据库。
- 然后,管理员需要确保Memcached中的商品详情也进行了更新,或者从Memcached中移除该商品的详情,以便下次从数据库中重新加载。
注意事项:
数据一致性:确保缓存和数据库中的数据一致是关键。通常需要使用策略如“写穿透”或“延迟加载”来维护一致性。
缓存失效: