树型结构数据存储实践
很多业务场景会遇到树形结构的数据,如公司的人员职级树、行政区划树等。 使用类似MySQL的数据库进行存储,需要将树形结构(二维)存储到行格式(一维)的db中。 本文介绍了树型结构数据存储的三种方式:Adjacency Table , Nested Set , Bridge Table (Closure Table)。 以下方法均基于场景: 设想一个职员团队树,节点中为职工工号id和职工名...
很多业务场景会遇到树形结构的数据,如公司的人员职级树、行政区划树等。 使用类似MySQL的数据库进行存储,需要将树形结构(二维)存储到行格式(一维)的db中。 本文介绍了树型结构数据存储的三种方式:Adjacency Table , Nested Set , Bridge Table (Closure Table)。 以下方法均基于场景: 设想一个职员团队树,节点中为职工工号id和职工名...
构建业务模型时,通常模型会设置扩展信息,存储上一般使用JSON格式存储到db中。JSON虽然有较好的扩展性,但并没有结构化存储的类型和非空等约束,且强依赖代码中写入/读取时进行序列化/反序列化操作, 当扩展信息结构简单且不作为查询条件时使用JSON可以满足需求,但有些场景要求根据扩展字段进行查询,虽然有类似JSON_CONTAINS关键字匹配JSON内部字段,但不是所有db及其版本都支持JS...
在学习编程初期,会接触到设计模式的概念:23种设计模式,单例模式,策略模式,… 。接触业务研发后,对设计模式的使用和实践有了更深的见解。 使用设计模式是目的为了更高效的支撑业务诉求,如何在保证代码质量的情况下变更/扩展现有功能,这里的代码质量可分为健壮性和可读性两大类,分别包含以下方面: 健壮性:并发控制、事务、单点变更、性能、可测试 可读性:业务语义、圈复杂度、认知复杂度、c...
关于ES官网的介绍: Elasticsearch provides near real-time search and analytics for all types of data. Whether you have structured or unstructured text, numerical data, or geospatial data, Elasticsearch...
异步任务使用场景 根据同步/异步方式划分场景,各场景下常用的技术方案如下: 方式 实现 特点 缺点 同步 HTTP RPC Cache etc. 指标:RT、QPS、TPS、缓存命中率 等; 关注(准)实时数据,用户可交互 1. 处理数据量小...
分层设计 领域驱动设计(Domain-driven design, DDD) 作为一种复杂软件系统的应对方案,在设计和编码提供了一种新的解决方式,即领域驱动,要求程序员在设计和编码时从领域专家的角度 出发来实现架构/代码,做到代码即业务。同时利用各种方式拆解复杂模块,常用的方式有拆分子域、构建富血对象。 设计时,需要建立统一语言,确保领域中的业务概念处于同一个限界上下文,比如在一套电商系...
官方mybatis generator使用案例:mybatis-generator-example 手写代码链接:codegen-maven-plugin 在使用MyBatis时,需要根据库表结构编写一些通用的Mapper interface、XML、Entity,这些重复操作可以通过代码生成器自动生成,大大提高开发效率。 目前,代码生成分为两种方式: 模版引擎:如 velocit...
我的Intellij插件主页:Bao Tingyu 背景 在给Java局部变量的实体赋值时,往往有很多setter,一个一个写很麻烦,也会漏掉,因此开发一款插件,可以自动生成局部变量实体的所有setter。 插件效果如下: 可以在plugin marketplace 搜索:Summon Setters 源码参考:Summon-all-setters 开发前 IDEA plugin ...
代码案例:https://gitee.com/bao-tingyu/spring-security-oauth2.0-example 可以参考当时在其他平台写的博客专题: Spring Security 源码解读 :基本架构及初始化 Spring Security 源码解读 :认证总览 前后端分离架构下的OAuth2.0授权流程 ...