Skip to main content

Time Series Database Overview

The storage tier of the data lake is Aster TSDB, optimized for industrial time series workloads (apache-cassandra-timeseries). It is an in-house fork of Apache Cassandra cassandra-6.0; the CQL syntax and disk format are identical to the upstream — it reads existing 6.0 data as-is, and new features work only when explicitly enabled.

This is not the "Time Series Engine (TSE)"

These names are similar and are the most common source of confusion. What they store is different.

Time Series Database (this document)Time Series Engine (TSE)
What it storesSensor values — tag points from the field (pp.tm_tag_point)Metrics — the system's own indicators, such as PLANTPULSE.JMX.* and PLANTPULSE.EDGE.*
NatureGeneral-purpose time series databaseMetrics-only
Port9042 (CQL)7800 (plaintext) · 7801 (TLS)
QueryCQL — with built-in functions like time_bucket_gapfillTQL
DocumentationThis sectionTime Series Engine

"What was the equipment temperature?" goes here. "How many records did the collector process yesterday?" goes to the engine.

The engine also writes to the same Aster TSDB ring, but its keyspace and schema are different, so metrics stored in the engine will not appear even if you query the tag tables with CQL.

What Improves​

Field time series have their own characteristics. Tags accumulate endlessly at second-level granularity, must be retained for years due to regulations, an edge that was disconnected may push days' worth of data at once (late loading), and queries are almost always “this tag, this time range”. Stock Cassandra can do this, but compression, retention, and aggregation all become the application's responsibility. This fork moves that responsibility into the database itself.

What you want to doWhat this database doesDocumentation
Handle bucketing, aggregation, and interpolation on the server21 CQL functions + gap fillingTime Series Functions
Automatically compress old dataTiered storage — queries remain unchangedTiered Storage
Delete old data entirely after the retention periodTime Series Compaction (TSCS)Time Series Compaction
Search log/event bodies by substringFull-text search — including KoreanFull-Text Search

Enabling All Three Together​

쓰기 ──▶ [ 핫 구간 ] 최근 데이터. 평소대로 행으로 저장·질의
│
│ hot_window 를 지나면 (계층형 저장)
▼
[ 콜드 청크 ] 컬럼 지향으로 압축. SELECT 가 알아서 합쳐 읽는다
│
│ cold_window / retention 이 지나면
▼
통째로 삭제 컴팩션 없이 창 단위로 (TSCS)

TSCS and tiered storage are independent of each other. You can enable one or both; the lower-risk option is to enable TSCS first.

Measured Results — Production Table Shape, 20 Million Rows​

tm_tag_point (8 general columns), host 234, chunk format v4.

ItemBefore TieringAfter TieringEffect
Storage size237.8 MB33.3 MB7.1× smaller (11.9 → ~1.7 bytes per row)
count(*) (40,000-row partition)303 ms50 ms6.1× faster
time_bucket + aggregation150–270 ms31–64 ms3–6× faster
Gap filling (locf · interpolate)162–284 ms30–53 ms5.4× faster
Hourly average of 90 tags (3.6 million rows)14.9 s4.2 s3.5× faster
Compression also speeds up queries

Usually compression trades speed for space, but here all measured queries were as fast or faster — because fewer bytes are read. Even scans without a range limit stop when LIMIT fills, as they decompress chunks in query order, so they don't get slower.

Two Caveats
  • Full-scan aggregation without a partition key returns incorrect values on tiered tables. That path does not merge chunks.
  • The space savings depend on the table shape. A minimal shape with no constant columns and no all-null columns (a single high-entropy double) will not see the figures above. Re-measure on your own table before deciding.

Where to Find It​

Go to $PP_HOME/plantpulse-storage/db/cassandra then apache-cassandra-timeseries-<version>.jar. The version of the running process is checked as follows.

docker exec plantpulse-datalake nodetool version

Version, source, and update procedure are in the operator documentation, not this manual.


See Also​

What you want to doDocumentation
Use bucketing, gap filling, and interpolationTime Series Functions
Move old values to cheaper storageTiered Storage
Understand compactionTime Series Compaction (TSCS)
Search bodiesFull-Text Search
Query directly with CQLData Query

Looking for metrics (system indicators)? This isn't the place → Time Series Engine