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

请教一下 k 线数据的归档方案

  •  
  •   cszchen · 2019-10-16 13:49:21 +08:00 · 422 次点击
    这是一个创建于 1646 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现状

    我们在做量化(目前是数字货币),每天有几个 G 的数据,以后还会更多(现在只抓了一个交易所有限的交易对),所以想线上数据库保留最近几天的数据,然后本地建一个备份(完整的),我们现在没有运维

    为什么这么干

    交易所都在境外,所以我们用 HK 的服务器抓数据,因为翻墙不靠谱。用的 aws 的数据库,如果不做归档,数据会非常大,直到我们负担不起,毕竟现在还没赚钱呢

    我们设想的方案

    我们用的是 postgresql
    不论何种方案,最终的结果就是归档并删除已归档的数据,所以排除了 pg_dump、pg_dumpall

    1. wal 备份,但是问题是不能排序删除操作,所以本地数据恢复的时候也会把删除的操作给干了
    2. 用脚本扫描每一个表,根据时间点备份之前的数据,然后删除这个时间点之前的数据,本地备份机器拿到备份文件后导入到数据库,这个可行性是没问题的,但是有开发工作量,并且稳定性和可靠性没有保证

    最后想到这里大神多,看看有没有更好更成熟的方案,射射大家。

    4 条回复    2019-10-17 19:42:09 +08:00
    Gilgamesh7
        1
    Gilgamesh7  
       2019-10-16 14:46:30 +08:00
    把实时获取到的数据解析后放入消息队列,国内服务器或者本地解析后存储。
    bebopx
        2
    bebopx  
       2019-10-16 22:47:18 +08:00
    之前做爬虫抓电商数据,存过 AWS 数据库。归档是直接压缩导到 S3 上。S3 比本地存储还便宜。不过对数据完整性要求不高。
    cszchen
        3
    cszchen  
    OP
       2019-10-17 01:48:20 +08:00 via Android
    @bebopx 归档之后要删掉数据,就这一点不知道咋弄
    hujianxin
        4
    hujianxin  
       2019-10-17 19:42:09 +08:00
    1. 可不可以直接把抓取的数据写入消息队列,然后两头消费。你的主数据库配置一个 TTL 类似的东西就可以了。这个方案存在两个问题,第一是实时性 能不能达到你的要求,第二国内读国外的消息队列,速度能不能满意。
    2. 如果第一个方案行不通的话,你自己提出来的方案二其实也是不错的。第一开发工作量不大。第二稳定性可靠性都可以通过思考容错来保证。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5733 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 02:21 · PVG 10:21 · LAX 19:21 · JFK 22:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.