## [[Prometheus]]
## [[VictoriaMetrics]]
[How does Vmstorage work? · Issue #3268 · VictoriaMetrics/VictoriaMetrics · GitHub](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/3268)
## [[InfluxDB]]
https://cs.ulb.ac.be/public/_media/teaching/influxdb_2017.pdf#page=10.60
InfluxDBは現在、自社開発のデータ構造であるタイム構造マージツリー(TSMツリー)を使用しています。このストレージ形式の詳細については、後ほど説明します。しかし、InfluxDBは異なるバージョンでさまざまなストレージ形式を利用してきました。当初はLevelDB(ログ構造マージツリー(LSM)をベースとするデータベース)を使用していました。これは書き込みスループットを最適化し、組み込みの圧縮機能を提供します。しかし、LevelDBはホットバックアップ機能を提供していないため、安全にコピーするにはデータベースを閉じなければなりません。このため、InfluxDBはRocksDBやHyperLevelDBなどのLevelDBの派生バージョンを利用しています。LSMツリーには固有の問題があります。削除は高価な操作であり、時系列データベースでは自動データ保持により大規模な削除が必要となります(セクション2.1.1を参照)。そのため、InfluxDBは代替のデータ構造であるmmap B+Treeに切り替えた。BoltDBを基盤のストレージエンジンとして使用し、書き込み操作では若干パフォーマンスが低下する可能性があるが、安定性と信頼性が向上する。しかし、データベースが大きくなると書き込みがInput Output Operations per Second (IOPS)を急上昇させることがわかった。その後、InfluxDBチームは独自のストレージ形式であるTSM Treeを構築することを決定しました。TSM Treeはライト・アヘッド・ログ、読み取り専用インデックス・ファイルを使用し、インデックス・ファイルを統合するコンパクションを時折実行するという点でLSM Treeと類似しています。しかし、削除の問題に悩まされることがなく、B+ Tree4と比較してより優れた圧縮率(ディスクスペース使用量で45倍の改善)を実現しています。
[The New InfluxDB Storage Engine: Time Structured Merge Tree | InfluxData](https://www.influxdata.com/blog/new-storage-engine-time-structured-merge-tree/)
[[TimeScaleDB]]