V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
doubleTrees
V2EX  ›  程序员

求助后端如何存取算法执行结果以及如何和前端交互

  •  
  •   doubleTrees · 135 天前 · 655 次点击
    这是一个创建于 135 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近遇到一个业务场景,后端服务接入了一个算法, 算法跑出来的结果是一个时序数据,也就是给出每一个时间单位(可能是 1 秒或者 0.1 秒,是确定的)的整个系统的状态,整个结果可能是包含了几十分钟甚至几十个小时,整个算法结果很大( dump 成 json 字符串存到文件里可能有几百兆(几十分钟的),或者几个 G (几个小时的))
    现在的业务需求是,需要在算法跑完之后把数据慢慢给前端展示,且还需要支持快进和到指定时间点。算法结果需要存储,随时可以“播放”。
    其实整个需求和生成一个视频然后让前端播放差不多。
    我的问题是:
    1.后端怎么存算法结果,按秒存到数据库?这样的话读起来会不会数据库压力很大
    2.怎么和前端交互效率高点(目前和前端商讨是让前端给定一个时间区间,然后直接返回这个时间区间内的所有数据)
    3.怎么做快进

    技术栈:
    后端是 springboot ,postgre14 数据库,也有 redis
    前端是 react
    4 条回复    2023-10-21 00:49:41 +08:00
    dode
        1
    dode  
       135 天前 via Android
    直接存本地文件
    RedNax
        2
    RedNax  
       135 天前 via iPhone
    你看视频是怎么做的:
    每一段时间(比如一秒),有一个关键帧,里面是整个图像的信息;关键帧之间的帧,只记录和上一帧的差异,每一帧都是用上一帧算出来。

    你们也可以这样搞:每隔段时间记录一个完整状态,之间只记录和上一个状态的 diff 。跳时间点只需要跳到最近的完整状态继续播放。

    当然如果你们状态之间的差异极大,diff 不好用那当我没说。
    doubleTrees
        3
    doubleTrees  
    OP
       135 天前
    @RedNax 如果时间单位是 0.1 的话 diff 不是很大,如果时间单位是 1 的话,diff 会很大,diff 如果很大的话就很麻烦,存取都很麻烦
    doubleTrees
        4
    doubleTrees  
    OP
       135 天前
    @dode 之前存本地文件的话确实可以,可以完全参考视频的读取和传输流程,但是要完全自己实现流式传输和快进功能感觉难度有点大
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5159 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 09:47 · PVG 17:47 · LAX 01:47 · JFK 04:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.