Tdengine 是一款国内开源的时序数据库,支持分布式,社区发展比较健康(相比国内)。
笔者主要开发量化交易软件,行情数据存储和读取对性能 延时要求毕竟高,存储比例要求也比较高,针对数据库进行过多次选项,Mongo、DolphinDb、TdEngine都测试过,详情参见文章 行情数据库性能基准测试(MongoDb/TdEngine/DolphinDb)。最终参考压缩比例、开源、文档、易用性、速度等指标,选择了TdEngine。
不过还是要趟很多坑,国内开源平台主要还是靠内部团队贡献,社区贡献并不是很多,有些问题解决的并不是那么及时。
官网提供了编译好的二进制版本,linux/win都提供安装包,直接下载即可安装。下载地址
以Ubuntu20.04 为例:
tar xvzf TDengine-enterprise-server-2.6.0.6-Linux-x64.tar.gz
cd TDengine-enterprise-server-2.6.0.6-Linux-x6
./install.sh
即可完成安装。
version: '3'
services:
arbitrator:
image: tdengine/tdengine:2.6.0.6
command: tarbitrator
tdnode1:
#开机自启
restart: always
#指定镜像
image: tdengine/tdengine:2.6.0.6
container_name: tdnode1
hostname: tdnode1
#创建容器后默认执行的命令
privileged: true
ports:
- 6030-6042:6030-6042
- 6030-6041:6030-6041/udp
volumes:
- /etc/localtime:/etc/localtime:ro #同步主机时区到容器
- /etc/taos:/etc/taos
- /data/docker/tdengine/data:/var/lib/taos
- /data/docker/tdengine/log:/var/log/taos
执行docker-compose --compatibility up -d
命令即可启动单节点服务,arbitrator为副本偶数时必须部署的。
配置好/etc/taos/taos.cfg 中的参数和hosts,执行taos,即可连接上数据库了。
官网也有安装包可直接下载安装。
但是我遇到一个比较恶心的事情,tdengine把version作为全局变量定义,导致和其它动态链接库冲突了,目测是ctp接口(期货交易接口)冲突了(Unbuntu22.04,windows下无此bug),导致taos_connect
时,返回版本错误,连接不了数据库。
目前已经提了ISSUE,但是不一定给解决的,因为我查了历史的ISSUE,2.4.0就有人提了,到现在没有解决。唯一的解决方案是自己重新编译源码,可以修改version参数名,或者不导出version变量。具体的可以参考大牛的解决方案 ISSUE。
那目前只能自己编译。下载源码,切到2.6分支,开始:
mkdir build && cd build
cmake ..
make
make install
漫长的等待结束后,就好了,再执行程序就不会出现版本不一致的问题了(最新版3.0还未测试,有结果更新下)。
TDENGINE >= 3.0
解决了上述问题,只需要从官网下载安装包即可安装。