• influxdb时序数据库之随想其他列式存储数据库


    配置2CPU, 8G内存, 80G磁盘, 目前存储了8亿条经纬度数据。

    写入测试,最高可达1W QPS, 查询可达1000QPS。写入的时候,消耗内存,因为influxdb有写入cache的机制,并CPU定时有毛刺波峰,这是因为influxdb有定时压缩处理数据的机制。

    influxdb内部使用了类似LSM的存储引擎,特别为了时序数据优化独有的TSM存储引擎。数据会预先写入cache,还有WAL 预写日志,后面才会磁盘顺序写入,减少磁盘随机写的IO。influxdb 虽然可以存储海量数据, 但是还受到tag的数量的限制。所以tag不能拿来存储变量比较广的的数据。tag可以存储比较固定的字段,比如用户(可以是设备ID,用户ID)

    influxdb 优势是开源,但是集群版不开源,需要购买商业版。

    按照条件查询很快,但是随机查询很慢。

    clickhouse, hbase 这些数据库,都是列式存储,都利用上了snappy,lztd之类通用的压缩算法,都有WAL预写日志,在ES里面WAL叫做translog。LSM存储,原理就是把无序的输入数据,先在内存LSM结构变为有序,然后批量按顺序写入磁盘,减少磁盘随机写的IO。 LSM结构一般都有每个独立小的LSM合并的操作, 删除的操作都是只是标记数据已经删除,在写入磁盘的时候通过标记过滤已经被标记删除的数据。

    tsdb是基于hbase实现的,因为hbase查询主要是通过rowkey来实现的,tsdb的原理就是把索引都存储在rowkey上面,多维度的查询就是构造不同的rowkey的过滤条件。

    有的设计方案是通过外部的索引,es,solr,或者hbase内部多建立一张索引表来实现多维度的查询。tsdb优点就是把索引设计在rowkey上。

  • 相关阅读:
    RabbitMQ详解(二)——
    Redis6详解(二)——常用命令
    MybatisPlus(二)——
    数据结构与算法(五)——树
    数据结构与算法(四)——队列
    数据结构与算法(三)——栈
    MybatisPlus(一)——
    Docker详解(一)——
    kafka详解(一)——
    FIle类操作
  • 原文地址:https://www.cnblogs.com/studyNT/p/14673126.html
Copyright © 2020-2023  润新知