Go 语言写的玩具数据库 TickDB

2016-06-01 18:19:45 +08:00
 vimrus
这几天在处理股票的 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 类型,实现索引及新的存储引擎。

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

很喜欢 TiDB ,希望你们能够成功!
c4pt0r
2016-06-02 11:00:57 +08:00
@vimrus I've already sent u an email~ nice to meet u. :)
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
2016-06-19 21:30:34 +08:00
@leedstyh 好的,明天我改下。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/282787

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX