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. 订阅位点,获取位点的变化, 是否要和特定的客户端会话绑定? 还是说当作全局的?
相关推荐
敖云岚1 小时前
【Redis】分布式锁的介绍与演进之路
数据库·redis·分布式
LUCIAZZZ2 小时前
HikariCP数据库连接池原理解析
java·jvm·数据库·spring·springboot·线程池·连接池
我在北京coding2 小时前
300道GaussDB(WMS)题目及答案。
数据库·gaussdb
小Tomkk2 小时前
阿里云 RDS mysql 5.7 怎么 添加白名单 并链接数据库
数据库·mysql·阿里云
明月醉窗台3 小时前
qt使用笔记二:main.cpp详解
数据库·笔记·qt
沉到海底去吧Go4 小时前
【图片自动识别改名】识别图片中的文字并批量改名的工具,根据文字对图片批量改名,基于QT和腾讯OCR识别的实现方案
数据库·qt·ocr·图片识别自动改名·图片区域识别改名·pdf识别改名
老纪的技术唠嗑局4 小时前
重剑无锋,大巧不工 —— OceanBase 中的 Nest Loop Join 使用技巧分享
数据库·sql
未来之窗软件服务5 小时前
JAVASCRIPT 前端数据库-V6--仙盟数据库架构-—-—仙盟创梦IDE
数据库·数据库架构·仙盟创梦ide·东方仙盟·东方仙盟数据库
一只爱撸猫的程序猿6 小时前
构建一个简单的智能文档问答系统实例
数据库·spring boot·aigc
nanzhuhe6 小时前
sql中group by使用场景
数据库·sql·数据挖掘