专栏名称: 芋道源码
纯 Java 源码分享公众号,目前有「Dubbo」「SpringCloud」「Java 并发」「RocketMQ」「Sharding-JDBC」「MyCAT」「Elastic-Job」「SkyWalking」「Spring」等等
目录
相关文章推荐
芋道源码  ·  Spring Boot 中使用 JSON ... ·  昨天  
芋道源码  ·  高性能、无侵入的 Java 性能监控神器 ·  昨天  
Java编程精选  ·  公司Rust团队全员被裁,只因把服务写得「太 ... ·  2 天前  
芋道源码  ·  别乱分层,PO、VO、DAO、BO、DTO、 ... ·  2 天前  
芋道源码  ·  if 判断泛滥?试一试规则执行器,太香了! ·  2 天前  
51好读  ›  专栏  ›  芋道源码

DDD死党:查询模型的本质

芋道源码  · 公众号  · Java  · 2025-05-21 09:30

正文

请到「今天看啥」查看全文


  • 3. 内存 Join 模式
  • 4. 异构&冗余模式
  • 5. 小结

  • 1. 查询模型的本质

    查询模型的本质就是:为不同的应用场景选择最合适的存储引擎,充分发挥各个存储引擎的优势。

    在系统中,读接口的数量远超写接口,但我深信:==再简单的写也是复杂,再复杂的读也是简单。==

    为什么呢?因为,想做好查询只需为不同的应用场景选择最合适的存储引擎,从而充分发挥底层存储引擎的优势,然后所面对的高性能、高并发等技术问题就迎刃而解了。

    如下图所示:

    面对一个查询请求,我们需要:

    1. 接受并解析用户请求;
    2. 从各个存储引擎中获取数据;
    3. 对数据进行加工,包括数据聚合、数据关联、数据转换等;
    4. 将最终结果返回用户;

    1.1. 常见存储引擎的特征

    技术选型唯一原则:==仅仅使用它的成名之作,万万不可被花里胡哨的东西干扰你的判断。==

    简单列举下常见的存储引擎:

    1.关系数据库。

    • 【特点】提供事务机制对数据强一致性进行保障,其ACID四大特性更是建模利器;
    • 【场景】适用于一致性要求高的金融或类金融场景,比如银行、支付、订单等;

    2.Redis。

    • 【特点】基于内存的键值存储引擎,具有高性能和低延迟;支持丰富的数据结构(字符串、哈希、列表、集合、有序集合等)和功能(发布订阅、事务等),提供丰富的持久化选项;
    • 【场景】:缓存、会话存储、计数器、排行榜、分布式锁等对性能和实时性要求较高的场景;

    3.Elasticsearch。

    • 【特点】全文搜索和分析引擎,建立在Lucene库之上。擅长水平扩展、近实时搜索、全文搜索和复杂查询等功能;支持分布式架构、自动分片和数据冗余;
    • 【场景】日志分析、实时监控、商业智能、搜索引擎、推荐系统等需要高效的实时全文搜索和分析功能的场景;

    4.MongoDB。

    • 【特点】面向文档的NoSQL数据库,以JSON风格的文档格式存储数据;支持动态模式、灵活的索引和复制集、分片等特性,可扩展性好,支持水平扩展;
    • 【场景】大数据量、高写入频率、动态模式和灵活查询的场景,如内容管理系统、用户个性化数据存储、实时分析等;

    1.2. 读接口三把利器

    对于查询请求,主要有三种模式:







    请到「今天看啥」查看全文