zoukankan      html  css  js  c++  java
  • 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上。

  • 相关阅读:
    python之路(三)-深浅拷贝
    Python之路(一)-python简介
    Web端裁剪图片方法
    如何将github上源代码导入eclipse中
    转 GitHub上史上最全的Android开源项目分类汇总
    转 GitHub上最火的40个Android开源项目(二)
    转 GitHub上最火的40个Android开源项目(一)
    转 GitHub上最火的74个Android开源项目(三)
    CSS实现文本溢出的部分用省略号代替的方法
    时尚且健壮: 实现更优秀的CSS
  • 原文地址:https://www.cnblogs.com/studyNT/p/14673126.html
Copyright © 2011-2022 走看看