紧密关联的层次性数据处理程序设计
标题都不知道怎么写, 看来对问题本身我也是认识不足 :(
有如下这样一个系统:
核心名词: 事业部, 部门, 子部门, 车间等
关系: 层次型, 事业部下挂数个部门, 一个部门下挂几百个子部门, 一个子部门下挂几千个车间
操作: 简单地说就是CRUD, 创建修改删除查询, 大部分为创建和删除, 建删时主要有2件事情要做:
a) 资源分配, 比如建立子部门就从部门拥有的资源中分配一些给它(根据各种条件计算而得, 比如部门属性, 子部门属性, 设置所在事业部属性都会影响计算的结果), 没有资源创建操作就失败, 删除时则反操作
b) 建立实体, 假设就是做硬件设置, 比如某节点创建成功后调用驱动接口, 输入参数由前面的计算所得, 这个接口是个同步接口, 亦即调用会被block直到操作结束
这里有2个难题:
1. 由于各个节点操作互相引用, 导致数据结构上就有关联, 最后的结果就是代码显式或隐式得交织在一起, 造成维护困难
2. 由于数据都有关联, 导致无法从多核多线程上获得性能提升. 这里有两个同步点: 一是数据组织像是一颗树, 单独锁定一个节点没有意义, 所以要锁就把这个树都锁了, 比如部门有建删操作时, 所有子部门相关的操作都需等待; 二是硬件操作不能并发
各位有没有什么建议? 我觉得主要的问题可能还是在数据结构/代码体系上, 首先得能解决这个问题, 然后才能考虑怎样通过并发来提高性能