2024-05-28 blue-VH-driver-需求分析及问题分析

摘要:

2024-05-28 blue-VH-driver-需求分析,VH是个数据库,需要写一个driver,形态是dll/so动态库,调用VH的接口,然后给上层的标准数据服务去调用。

这个需求会涉及很多隐含的可能出问题的地方,需要详细分析下。

当前已知的标准服务的要求:

一. 功能上

  1. 枚举位号,拿出所有的信息
  2. 获取位号的变化消息
  3. 批量的读取位号, 可以翻页批量读取
  4. 实时订阅位号
  5. 历史数据查询
    1. 固定查询,统计查询
    2. 点查询
    3. 指定时间范围的聚合运算查询
  6. 实时数据相关查询

二. 从访问方式上

  1. 标准数据服务,提到了会使用使用单个线程去对外使用,但是不做保证
  2. 标准数据服务调用driver,两个线程去调用同一个接口,不能互相阻塞对方线程,不能互相影响
  3. 也就是说driver,必须要考虑并发访问

所要考虑的问题:

一. 架构设计相关

  1. 访问位号的时候,是先拿到位号的数量,然后再翻页的批量访问位号。
  2. 那么两个不同的客户端线程,如何做到互相不影响?
  3. 并发模型怎么设计?线程池怎么设计? 线程池又如何与task进行配合? 线程池又如何与客户端线程接口访问进行配合?
  4. driver内部的缓存要如何设计?缓存如何与特定的客户端会话绑定?
  5. 如果VH数据库断开连接,那么标准数据服务翻页批量访问位号的时候,断开连接,是否认为是已经出错了?是否要报错?还是不报错,只是将此前缓存的数据继续返回?也就是说,不同的客户端会话的位点缓存,生命周期如何控制?

二. 业务相关

  1. 组态是什么?位点是什么?为什么位点是位于组态里面?组态和工厂中的什么东西能进行关联来理解? 位点能和什么东西结合起来理解?
  2. 从组态中,能获取什么样的数据?获取方式是什么样的?组态中包含多少不同的数据结构? 每个数据结构的成员,又是代表了什么意思? 为什么要这么定义? 这种数据结构是在多高的层次上做了抽象?
  3. 订阅位点,获取位点的变化, 是否要和特定的客户端会话绑定? 还是说当作全局的?
相关推荐
敲个大西瓜3 小时前
Redis一百道核心面试题
数据库·redis·缓存
無a伟6 小时前
Redis持久化详解:RDB与AOF原理、配置、优缺点
数据库
小罗水6 小时前
附录A 各微服务完整 application.yml 配置汇总
数据库·elasticsearch·微服务
muddjsv7 小时前
SQLite 外键进阶:CASCADE / SET NULL / 级联更新与完整性校验
数据库·sqlite
APItesterCris7 小时前
Open Claw 实战教程:5 分钟搭建京东商品自动化监控与数据分析系统
大数据·运维·数据库·数据仓库·自动化
Nturmoils7 小时前
查库存的 SQL 时灵时不灵,最后发现是 WHERE 里两个函数在打架
数据库
不想纳尼的青春8 小时前
where = 的作用?会影响性能吗?count(*) 和 count()哪个快?
数据库·oracle
倔强的石头_8 小时前
Spring Boot 接入金仓数据库:配置分层、启动自检与常见错误
数据库
杨云龙UP9 小时前
生产环境Oracle表空间扩容实战:使用Toad for Oracle图形界面新增Datafile(ASM+OMF)
linux·运维·数据库·oracle·表空间·asm 存储管理·toad
黑桃小柒79 小时前
Django模型关系:从一对多到多对多全解析
数据库·django·sqlite