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. 订阅位点,获取位点的变化, 是否要和特定的客户端会话绑定? 还是说当作全局的?
相关推荐
xieliyu.6 分钟前
MySQL 全套入门笔记:基础、库操作、数据类型
数据库·笔记·mysql
lvbinemail10 分钟前
【无标题】
数据库·postgresql·zabbix·监控
技术小甜甜17 分钟前
[办公效率] Excel 表格越做越乱,先整理字段、格式还是公式?
数据库·excel·办公效率·数据整理
Data-Miner20 分钟前
休闲食品行业数据分析平台建设方案,揭秘增长新引擎!
大数据·数据库·数据分析
KKKlucifer22 分钟前
数据分类分级排名解析:三大核心能力决定选型方向
大数据·数据库·分类
fly spider26 分钟前
Spring 原理总览:从启动到请求执行
java·数据库·spring
天天进步201527 分钟前
Python全栈项目--基于Python的数据库管理工具
开发语言·数据库·python
小小工匠31 分钟前
Redis - 缓存与数据库一致性:问题分析与解决方案
redis·缓存·性能优化·消息队列·并发
cui_ruicheng41 分钟前
MySQL(三):库操作与表操作
数据库·mysql·oracle
闪电悠米43 分钟前
黑马点评-Redis 消息队列-02_list_pubsub_limits
java·数据库·ide·redis·缓存·list·intellij-idea