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

请教 数据可视化系统的 Web 解决方案

  •  
  •   patrickstar · 2016-05-08 17:57:27 +08:00 · 4930 次点击
    这是一个创建于 2911 天前的主题,其中的信息可能已经有所发展或是发生改变。
    由于对 Web 系统不了解,所以下面有些说法可能不正确,把需求和现状简单描述一下子

    团队一直从事 C/S 架构的分布式控制系统开发,在控制系统之外用户需要一个实验数据分析计算与可视化应用系统,团队就采用熟悉的技术方案开发了一个,功能、性能都满足要求并在使用中。现在用户要与时俱进了,死活要求在浏览器中进行数据可视化交互,说现在的系统都应该这样子用,所以特来咨询一下子一个简单可行的解决方案。

    现有系统的组成和工作流程如下
    系统组成:
    1. 数据库服务器( AIX 系统 + Oracle )及存储系统,存储的原始数据都是由控制系统产生和归档的,数据分析计算及可视化系统只是使用这些原始数据
    2. 计算服务器多台( linux 系统),完成原始数据的并行计算,开发了一堆 C/C++实现的算法,一次完整的并行计算需要 20 多分钟,计算完成后把结果数据通过数据库服务器存入到数据库(计算结果数据需要持久化,以后如果未改变计算条件就不再计算而直接使用这些数据了)
    3. 用户操作计算机(暂且叫前端吧, Windows 系统):把计算服务器完成的计算结果数据按照用户需求从数据库中提取出来,进行可视化处理(这个可视化计算量相对比较小一些了,主要是用户选取数据范围后的数据显示和调整显示参数后重新绘制),数据可视化的方式有:表格样式的数值显示、 2D 方式的散点、拟合曲线 /柱状 /饼等显示、 3D 方式的显示(像温度场、流体场那种样子的),目前是采用 VC 开发的,用到了 TeeChart 组件和 matlab 来进行数据的图形化展示

    系统大致工作流程:
    1. 前端根据用户输入请求,如果要求的数据需要新计算,就启动计算服务器上的多个计算服务
    2. 计算服务程序通过数据数据库服务器首先对原始数据进行抽取、清洗、转换,然后就启动计算,计算完成后结果存入数据库并通知前端已经完成
    3. 前端把计算结果数据从数据库抽取出来可视化(显示和打印输出)

    团队技术现状:都掌握 C/C++( Qt, VC),目前有两三个人熟悉 python ,但都是针对控制系统 GUI 端开发( python+PyQt+matplotlib ),一个人会 java 语言,但没有一个人有设计开发 web 系统的基础和经验(看来以后搞软件不学习点 Web 就要被淘汰了)

    这个数据分析计算及可视化系统的用户就两三个人,无论如何也不会超过 10 个人,所以多用户并发访问性能哪些东西可能不是考虑点

    我想请大家给我推荐一个解决方案,符合当前的技术应用发展趋势,估计我只得外包找人来做(大概要几十万?),团队现有技术力量可能解决不了了。 或者有没有满足这种应用的基础平台推荐,团队直接在上面简单开发就可以实现的
    18 条回复    2016-07-01 17:57:21 +08:00
    rogerchen
        1
    rogerchen  
       2016-05-08 18:12:27 +08:00 via Android
    c3js ,只需要把数据喂给作图框架就行
    TimePPT
        2
    TimePPT  
       2016-05-08 18:14:52 +08:00 via iPhone
    搭个 Web Api ,前端用 bootstrap+D3.JS 搞定,简单统计曲线有现成后台模板能用,比如这种 https://github.com/akveo/blur-admin
    pasturn
        3
    pasturn  
       2016-05-08 18:24:21 +08:00
    前端可以用 http://visjs.org/ ,后台输出 API ,用 json 传输就可以了
    patrickstar
        4
    patrickstar  
    OP
       2016-05-08 19:41:49 +08:00
    @rogerchen
    @TimePPT
    @pasturn
    谢谢,看来真是隔行如隔山,我的慢慢来消化一下子
    feiyuanqiu
        5
    feiyuanqiu  
       2016-05-08 19:48:27 +08:00 via iPhone
    一楼说的是 d3js 吧,看你的可视化需求其实可以试试百度的 echarts ,官网上例子也很多,照着改就搞出来了, d3js 还要去学半天它的 api 挺麻烦的
    pelloz
        6
    pelloz  
       2016-05-08 20:22:38 +08:00
    就几个人用?让会 java 的同事看看 Jetty ,只需要几行代码就能搭建一个 web 的框架,然后使用百度的 ECharts 构建数据可视化,只需要使用 json 交换数据就好啦。
    rogerchen
        7
    rogerchen  
       2016-05-08 20:45:03 +08:00   ❤️ 1
    @feiyuanqiu
    @patrickstar
    no,no,no 就是 c3 , c3 是 d3 的一个 wrapper ,封装了所有常用的二维图表。
    给个例子感受一下,完全通过 json 来传递数据,
    http://rogerchern.github.io/vcaffe/#/gist/62be7fbde0355ec649081756177b4b3b
    fy
        8
    fy  
       2016-05-08 20:52:02 +08:00
    会 python 人多,就走 flask ,上手最快,教程也好。
    前端表格用 echarts ,最好招个会做 web 的人来搞相关内容
    liprais
        9
    liprais  
       2016-05-08 20:55:29 +08:00   ❤️ 1
    zhuangzhuang1988
        10
    zhuangzhuang1988  
       2016-05-08 21:39:06 +08:00
    内部的话就 d3 或者百度的 echarts 凑合凑合,给别人用的话还是找专业的做把。。 因为包含了设计,美工,前段的知识了。
    dphdjy
        11
    dphdjy  
       2016-05-08 21:52:30 +08:00 via Android
    自己折腾,又没有美工需求

    既然用的 py ,找个 web 框架(flask)套用一下即可
    把喂 matplotlib 的数据照搬到前端
    如果实时性高选 socket 比较好
    找个开源图表库, ls 说的 d3 和 echarts 都非常不错
    核心非常简单~

    如果懒,外包也很便宜~自然越高越好~
    julor
        12
    julor  
       2016-05-09 07:29:18 +08:00 via Android
    如果数据只是展示,那么前面提到的各种技术都可以不用。直接将 c/s 端生成的图片丢给 web 端。并根据输入参数调整生成的图片。我假定的需求如果正确,这就是最简单的方式。
    cobopanda
        13
    cobopanda  
       2016-05-09 09:57:35 +08:00
    使用 PHP 开发,框架使用 CI ,简单易用。
    数据展示推荐使用 highstock 插件
    pasturn
        14
    pasturn  
       2016-05-09 10:29:26 +08:00
    @julor 既然用了 web 肯定要互动啊,又不是纸质报表
    SmiteChow
        15
    SmiteChow  
       2016-05-09 17:26:40 +08:00
    前端展现都不是事儿,是事儿的是楼主要求实时聚合,这个东西如果数据模型没做好多半是 timeout 。
    patrickstar
        16
    patrickstar  
    OP
       2016-05-10 22:38:10 +08:00
    @fy
    @dphdjy

    谢谢大家了,看来条条道路通罗马,我准备找人来分析分析 flask ,因为团队下一步准备充分利用 python 来做自动化测试、科学数据处理等;这样即使外包来做,以后也有能力升级完善代码,实际上这种科学计算肯定会年年升级完善的
    dphdjy
        17
    dphdjy  
       2016-05-11 12:31:43 +08:00 via Android
    @cobopanda 核心都是 Python 写的,站在复用角度也应该用 Python 呐~即使不用 Python , nodejs 写这种应用也比 PHP 好写呐~
    更何况技术栈没人会 PHP
    这种环境强行安利 PHP~ 2333
    verydxz
        18
    verydxz  
       2016-07-01 17:57:21 +08:00
    9 楼已经指了条明路
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4105 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 05:29 · PVG 13:29 · LAX 22:29 · JFK 01:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.