V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
vimrus
V2EX  ›  分享创造

Go 语言写的玩具数据库 TickDB

  •  2
     
  •   vimrus · 2016-06-01 18:19:45 +08:00 · 4013 次点击
    这是一个创建于 3124 天前的主题,其中的信息可能已经有所发展或是发生改变。
    这几天在处理股票的 tick 数据,希望能够实时生成各周期的 K 线。目前流行的时间序列数据库都不是很合适,所以自己实现了一个,名字就叫 TickDB 。

    TickDB 主要关注 group 功能,比如这个应用场景:服务器的原始数据是每隔 1 秒生成的,但要求按照每分钟的最高值展现。

    TickDB 的特性

    1.数值型时间序列数据库, key 为时间戳
    2.无模式,支持多列
    3.可以构建丰富的 group 算法
    4.支持无序的时间数据
    5.基于 HTTP 的 JSON 查询支持


    Github : https://github.com/vimrus/tickdb

    相关参考:
    http://misfra.me 这个博客关于时间序列数据库的文章都很好, TickDB 用的存储引擎 Catena 就是该作者编写的
    https://github.com/dustin/seriesly 一个非常清晰的数据库, TickDB 参考了其设计思路

    目前 TickDB 还处于玩具阶段,不过已经满足目前我的需求了。沪深任意一只股票的当日 Level1 数据生成分钟 K 线,可以控制在 10ms 以内。

    后面的开发计划主要是增加 group 类型,实现索引及新的存储引擎。

    如果感兴趣的话,欢迎一起玩耍!
    13 条回复    2016-06-19 21:30:34 +08:00
    bigtan
        1
    bigtan  
       2016-06-01 19:38:29 +08:00
    好东西啊,我们现在一般都是自己手动切割的,历史的都是用 aplit-apply-aggregate 的思路批量生成的,已经落地了。看到 reducer 关键字,我就知道,思路是差不多的。
    vimrus
        2
    vimrus  
    OP
       2016-06-01 19:44:22 +08:00
    @bigtan 用的是 R 语言吗?
    bigtan
        3
    bigtan  
       2016-06-01 19:51:02 +08:00
    @vimrus Python
    vimrus
        4
    vimrus  
    OP
       2016-06-01 20:05:06 +08:00
    @bigtan Pandas 神器,想写个 Golang 版本的
    zjgsamuel
        5
    zjgsamuel  
       2016-06-01 20:08:55 +08:00
    标题看成 PingCAP 团队的 TiDB 了 ~~
    Comdex
        6
    Comdex  
       2016-06-01 23:55:36 +08:00
    @vimrus 热烈支持开发 golang 版的 pandas
    xiamx
        7
    xiamx  
       2016-06-02 06:30:44 +08:00
    楼主,这个跟 influxDB 比有什么区别?
    c4pt0r
        8
    c4pt0r  
       2016-06-02 10:36:48 +08:00
    cool, lz 在北京吗?
    vimrus
        9
    vimrus  
    OP
       2016-06-02 10:48:49 +08:00
    InfluxDB 支持字符串类型,而且有一个类似于 SQL 的查询语法。 TickDB 只是存储数值型的数据,着重于更多的聚合函数,而且会基于自然时间(分钟,天)做索引。
    InfluxDB 的应用面会更广一些, TickDB 主要做数值处理。
    vimrus
        10
    vimrus  
    OP
       2016-06-02 10:55:51 +08:00
    @c4pt0r 目前处于无业状态,过两月可能会去北京。

    很喜欢 TiDB ,希望你们能够成功!
    c4pt0r
        11
    c4pt0r  
       2016-06-02 11:00:57 +08:00
    @vimrus I've already sent u an email~ nice to meet u. :)
    leedstyh
        12
    leedstyh  
       2016-06-17 00:31:42 +08:00
    不提 PR 了,这段代码( https://github.com/vimrus/tickdb/blob/master/database.go#L120-#L125 ),似乎应该先 check err ,然后再 defer close 。
    vimrus
        13
    vimrus  
    OP
       2016-06-19 21:30:34 +08:00
    @leedstyh 好的,明天我改下。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1345 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 17:27 · PVG 01:27 · LAX 09:27 · JFK 12:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.