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. 订阅位点,获取位点的变化, 是否要和特定的客户端会话绑定? 还是说当作全局的?
相关推荐
J-Tony111 小时前
【Redis】 Redis 是单线程还是多线程
服务器·数据库·mysql
这个DBA有点耶1 小时前
SQL调优进阶:从“优化一条SQL”到“优化一个系统”的思维升级
java·大数据·数据库·sql·程序人生·dba·改行学it
IvorySQL1 小时前
PG 日报|SQL/PGQ 图查询基于联接重写机制实现
数据库·人工智能·sql·postgresql·区块链·ivorysql
数聚天成DeepSData4 小时前
遥感农业数据集下载全攻略
数据库·人工智能·深度学习·机器学习·自然语言处理·数据挖掘
一勺菠萝丶5 小时前
生产环境平滑升级实战-Nginx维护页数据库迁移与安全回滚
数据库·nginx·安全
心静自然凉8005 小时前
MySQL主从同步配置(一主一从)
数据库
haidy ahmed5 小时前
企微复杂审批流反序列化:动态表单解析引擎与EAV存储模型
数据库·人工智能·自动化·企业微信
Lihua奏5 小时前
MVCC:为什么多人同时读写数据,数据库还能不乱
数据库
952365 小时前
Redis - 应用
数据库·redis·分布式·缓存
青山木5 小时前
一把 Redis 分布式锁,踩透四个坑:锁争抢、僵尸锁、锁过期、锁丢失
java·数据库·redis·后端