zoukankan      html  css  js  c++  java
  • 论 业务系统 架构 的 简化 (二) 用 关系数据库 作 缓存

    通常, 分布式缓存 是 NoSql 数据库, 比如 Redis  。

     

    但 实际上 我们 可以用 关系数据库 来 作 缓存  。

    比如 常用的 商品列表 等, 可以用 关系数据库 来作 缓存, 查询 排序 维护 都很方便 。

    这种情况 其实 就是 在 主数据库 外 再建一个 数据库 用于 查询, 

    通过 Job 定时 同步 主数据库 的 资料 到 这个 “缓存”数据库 就可以 。

     

    根据需要, 我们可以在 主数据库 外 建立 多个 “缓存”数据库, 也可以 称为 外围数据库, 周围数据库, 卫星数据库  。

    通过 Job 定时 同步数据 到 这些 卫星数据库  。

     

    这样的架构,  井然有序 。

     

    在 大环境 上, 硬件技术 和 关系数据库技术 在 近几年 取得了 长足 的 进步,  并且这一趋势在未来还将延续 。

    可以看看这篇文章   《CAP, BASE, 最终一致性和五分钟原则》    https://blog.csdn.net/u013613428/article/details/55259924

    里面提到  “内存是硬盘,  硬盘是磁带”  。

     

    分布式缓存 , 比如 Redis ,  可以作为 集群 的 共享内存,  Server 们 通过 Redis 来 共享数据, 通信, 同步协作 。

    Redis 提供的一些数据类型还是 颇具价值 的,  比如 队列 Queue,  以及 Block Pop 等 Block 操作 。

    可以用于 Server 间   共享数据, 通信, 同步协作  。

    Server 间 的 共享数据, 通信, 同步协作   和   线程间 的   共享数据, 通信, 同步协作  是 类似的 ,

    线程间 通过 内存 来 共享数据, 通过 Lock 来 同步协作,

    Server 间 则 利用 Redis 这样的 分布式缓存 作为 共享内存, 利用 Redis 提供的 Lock ,  或者 Block 操作 来 同步协作 。

    用 关系数据库 作为 缓存 的好处是, 访问 缓存 和 访问 数据库 的 代码 是一样的,  处理数据 的 方式 也是一样的, 

    访问 和 处理 数据 的 思维 是一样的 。

    只需要 工厂方法 返回 适当的 连接对象(Connection) 即可 。

    这样好像 回到了 十多年前 甚至 更早, 好像 回到了 远古 的 草原 和 森林, 啊, 呼吸着新鲜的空气  。

    又好像回到了 大学 的 某个 早晨, Sql 代码,再加一杯 咖啡, 再来一抹阳光,  So Fresh ~~   。

    我不赞成 把 关系数据 变成 Key-Value 数据, 再在 应用程序 里用复杂的 对象关系 把 Key-Value 数据 包起来  。

    Sql , 数据 , 代码 , 咖啡 , 阳光 ,  岂不甚好  ?

     

  • 相关阅读:
    java IO流详解
    java设计模式之单例模式(几种写法及比较)
    JS定时刷新页面及跳转页面
    遍历map的四种方法
    String 中去掉空格
    TSP问题_遗传算法(STL大量使用)
    无向图的深度优先生成树和广度优先生成树
    Prim算法求最小生成树
    哈夫曼编码_静态库
    中序线索化二叉树
  • 原文地址:https://www.cnblogs.com/KSongKing/p/9928412.html
Copyright © 2011-2022 走看看