Skip to content

Commit 8f1d054

Browse files
docs: Adds architecture doc
1 parent ecd3fc0 commit 8f1d054

File tree

1 file changed

+51
-0
lines changed

1 file changed

+51
-0
lines changed

Architecture.md

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
# Architecture
2+
3+
```mermaid
4+
flowchart TD
5+
A(TimeseriesAPI)
6+
B(RecordStore)
7+
C(HistoryStore)
8+
D(CurrentStore)
9+
E(Ingester)
10+
11+
A --> B
12+
A --> C
13+
A --> D
14+
E --> A
15+
```
16+
17+
## TimeseriesAPI
18+
This HTTP API service exposes endpoints for managing these types of data:
19+
20+
- Records
21+
- Historical values
22+
- Current values
23+
24+
## RecordStore
25+
Stores point entity data. Different drivers may be provided for different storage backends.
26+
27+
Design goals:
28+
1. Records are stored persistently
29+
2. Querying by freeform tags is supported
30+
31+
## HistoryStore
32+
Stores historical data. Different drivers may be provided for different storage backends.
33+
34+
Design goals:
35+
1. Historical data is stored persistently over long time periods, where loss of data is unacceptable
36+
2. Historical data frequency is relatively low compared to current data (e.g. no faster than once per minute)
37+
3. Querying of historical data is efficient
38+
39+
## CurrentStore
40+
Stores current data. Different drivers may be provided for different storage backends.
41+
42+
Design goals:
43+
1. Current data storage is allowed to be volatile, where loss of data is acceptable
44+
2. Current data frequency is relatively high compared to historical data (e.g. often faster than once per minute)
45+
46+
## Ingesters
47+
Ingesters are responsible for delivering data from external sources and setting current values in the system. They are implemented for specific data sources, such as MQTT, etc.
48+
49+
Design goals:
50+
1. Ingesters may set current values or historical values
51+
2. They should be implemented externally to the core system, including details like scheduling, scalability, etc.

0 commit comments

Comments
 (0)