松果时序数据库(PinusDB)是一款以简单、易用、高性能为目标的开源时序数据库。本篇介绍如何让松果时序数据库以最佳的性能运行。要获取其他信息请参考官方网站或开源仓库,当然,若有好的意见或建议也可以在开源仓库给我们提交Issue或给我们发邮件:
官方网站:http://www.pinusdb.cn
码云仓库:https://gitee.com/pinusdb/pinusdb
邮 件:service@pinusdb.cn zhangquan@pinusdb.cn
本篇不介绍服务的安装、部署,若有需要请参考官网相应文档。
1.内存对松果时序数据库的影响
内存对松果时序数据库的性能有着至关重要的作用,配置不当会导致性能急剧下降。
松果时序数据库配置文件(与服务程序处于同一目录下的config.ini)中cacheSize配置项(若实际的配置文件中无此项,则表示使用默认配置,若需要修改请参考相应文档)表示数据页缓存大小,单位为MB。
松果时序数据库在数据写入时,最少会为每个设备分配一个大小为64KB的数据页用于写入数据。所以,如果数据页缓存过小而设备数量过大的话会导致频繁的对数据文件进行读写,性能急剧下降,所以就需要为松果时序数据库规划合适的数据缓存大小。
大多数情况下,也是最简单的配置,就是使用系统默认的cacheSize配置。并让服务器内存 大于等于 (设备数量 * 64KB * 4) ,若(设备数量 * 64KB * 4) 小于8GB,应使用8GB或以上的物理内存,注:设备数量为。
例如:
a.设备数量为1万台,(10000 * 64K * 4) 为2.5GB,故服务器内存为8GB。
b.设备数量为10万台,(100000 * 64K * 4) 为25GB,故服务器内存为32GB。
2.数据类型的选择
在物联网场景中存在大量的浮点数据,并且,浮点数的编码并不利于压缩,但是,在物联网场景下的浮点数据具备两个显著的特点:数据范围和精度是已知的,数据是连续变化的。例如:车辆的GPS定位数据,速度,温度,等数据都会有明确的范围和精度。既然如此:松果时序数据库中提供了一组新的数据类型,用户可以当作double来使用,但是实际存储数据时按照一定的倍数放大后存储为整数。这样可以充分利用连续变化的特点,提高数据压缩。
松果时序数据库中提供四个这样的数据类型,实际读写数据时将他们当作double即可:
real2 取值范围 [-999,999,999.99 ~ +999,999,999.99]
real3 取值范围 [-999,999,999.999 ~ +999,999,999.999]
real4 取值范围 [-999,999,999.9999 ~ +999,999,999.9999]
real6 取值范围 [-999,999,999.999999 ~ +999,999,999.999999]