V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ebony0319
V2EX  ›  数据库

如果需要报表统计,是在数据库( SQL)中完成还是导出数据完成?

  •  
  •   ebony0319 · 2016-12-02 11:59:45 +08:00 · 1358 次点击
    这是一个创建于 2913 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我的理解是数据库其实就是一个存储数据的地方,是为很多人查询服务的地方,如果在数据库里面做大量的数据 统计看似很简单的操作,但是可能是联结了很多的表,会使得情况变得很复杂。服务器负担非常大,查询时间很 长,所以我的建议是查询和统计分离。但是如果真的要大量统计那应该怎么才能最大的优化呢?
    比如要查看一个商品的库存。很简单的就是直接去库存表直接读取,但是现在决策者要读到商品的库位(在仓库的位置),入库次数,出库次数,商品的销售统计,商品的上架统计等,这些势必会用到大量的 GROUP BY ,扫表的次数是 N 次方。这时候怎么办呢?

    12 条回复    2016-12-03 14:18:19 +08:00
    enenaaa
        1
    enenaaa  
       2016-12-02 12:10:23 +08:00
    数据综合查询本来就是数据库干的活,要不然搞那么多高级 sql 特性干嘛。
    怕影响其他服务就
    1 、增加硬件资源
    2 、在从服务器,备份服务器操作
    3 、在人少的时候操作
    4 、优化查询

    办法很多嘛
    wyntergreg
        2
    wyntergreg  
       2016-12-02 12:17:54 +08:00
    数据库做存储,查询用文档类查询器
    akira
        3
    akira  
       2016-12-02 13:37:03 +08:00
    开个只读库专门处理报表统计,
    如果还扛不住,就把数据导到离线 /在线数据分析系统
    dexterzzz
        4
    dexterzzz  
       2016-12-02 13:39:44 +08:00
    oracle , sql server 有报表和分析引擎
    nandaye
        5
    nandaye  
       2016-12-02 13:48:42 +08:00
    数据仓库,把业务数据都 etl 到仓库,然后仓库的数据做报表的数据基础。这是最专业的做法。你可以看一下 BI 这个概念。
    ebony0319
        6
    ebony0319  
    OP
       2016-12-02 14:03:12 +08:00
    @nandaye 我知道数据仓库的处理方法,只是这是一个流水活动的数据。比如说你去银行取钱,查询你当月的账单很容易,然后在那个表统计你的当月取钱次数也很容易,但是当出现联表,那表的全扫描是一个 N 次方的结果集。
    nandaye
        7
    nandaye  
       2016-12-02 15:47:56 +08:00
    @ebony0319 数据仓库设计会对数据分层,从贴源层会慢慢处理到汇总层 。而你报表直接使用汇总层,不存在多表关联的问题。正规完善的报表系统都是基于数据仓库的。
    tkMerkava
        8
    tkMerkava  
       2016-12-02 15:52:52 +08:00
    如果是传统数据库,数据量大,查询复杂的话,就需要做数据仓库, OLAP 分析
    如果是简单的查询,没有 BI 分析的要求,将来也不需要建 BI 平台的话,直接就分析了
    当然,如果是内存数据库,那就更直接分析了
    ebony0319
        9
    ebony0319  
    OP
       2016-12-02 15:54:08 +08:00
    @nandaye 好像你说的是对的,我查一下资料先。
    neetrorschach
        10
    neetrorschach  
       2016-12-02 16:19:09 +08:00
    把常用的统计指标存成物理表,定时重新计算数据。
    yan159753li
        11
    yan159753li  
       2016-12-02 19:27:51 +08:00
    你需要一个 BI 软件
    devinww
        12
    devinww  
       2016-12-03 14:18:19 +08:00
    我们公司的报表是做税务方面分析的,因为涉及的数据量很大(全省或者全市全年数据),所以实现实时比较困难,所以数据都是一层一层汇总出来的,最后的汇总表只有几十万条或者几万条几千条记录性能就 OK 了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   983 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 19:58 · PVG 03:58 · LAX 11:58 · JFK 14:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.