Správa dat a jejich životního cyklu.
Rozdělení dat dle typu:
- Primární data
- Živé záznamy v inventory (EntityInstance a EntityInstanceConfiguration[active = CURRENT|active = PENDING])
- Aktivní objednávky (Order[status = IN_PROGRESS] a OrderLine)
- Bulk importy (RegisterValue)
- Historické záznamy
- Historické záznamy v inventory (EntityInstance a EntityInstanceConfiguration[active = HISTORY])
- Historické objednávky (Order[status != IN_PROGRESS] a OrderLine)
- Logy
- Historie běhu procesu ()
- Integrační logy ()
- Aplikační logy - ty jdou do centrálního Elastic O2 a v projektu je tedy neřešíme
Primární data jsou vždy uložená v DB (Postgres), persistence je zajištěna prostředky Azure a pravidelným zálohováním (dodavatel neřeší).
Pro data aging nás tedy zajímají primárně následující tabulky:
- ord.ordt_order
- ord.ordt_order_line
- inv.invt_ent_inst
- inv.invt_ent_inst_conf
- config.cnft_register_value
Přehled největších tabulek lze získat pomocí dotazu:
SELECT n.nspname AS schema,
c.relname AS table,
pg_size_pretty(pg_total_relation_size(c.oid)) AS total_size,
pg_size_pretty(pg_relation_size(c.oid)) AS table_size,
pg_size_pretty(pg_indexes_size(c.oid)) AS indexes_size
FROM pg_class c
JOIN pg_namespace n ON n.oid = c.relnamespace
WHERE c.relkind = 'r'
ORDER BY pg_total_relation_size(c.oid) DESC
LIMIT 50;Ukázka výstupu (po zátěžových testech ne PRE):
| schema | table | total_size | table_size | indexes_size |
|---|---|---|---|---|
| ord | ordt_order_line_warm_202510 | 71 GB | 57 GB | 14 GB |
| inv | invt_ent_inst_conf_p_default | 68 GB | 44 GB | 24 GB |
| ord | ordt_order_line_p_default | 47 GB | 35 GB | 12 GB |
| inv | invt_ent_inst_p_default | 26 GB | 22 GB | 4486 MB |
| ord | ordt_order_warm_202510 | 17 GB | 16 GB | 1060 MB |
| config | cnft_register_value | 7998 MB | 5631 MB | 2365 MB |
| ord | ordt_order_p_default | 4925 MB | 4192 MB | 731 MB |
| ord | ordt_order_line_hot_20250919 | 1210 MB | 0 bytes | 1210 MB |
| ord | ordt_order_line_hot_20250910 | 1097 MB | 870 MB | 227 MB |
Odmazávání je zajištěno pomocí partitioningu.
-
Pro živá data vzniká každou hodinu samostatná LIVE partition (např. ordt_order_live_2025090811 / ordt_order_line_live_2025090811)
-
Jakmile je objednávka ukončená, přesouvá se do WARM partition (např. ordt_order_warm_202510 / ordt_order_line_warm_202510)
-
Každou hodinu běží JOB pro smazání předchozí LIVE partition. Pokud obsahuje nějaké neukočnené objednávky, nejprve se odloží do HOT partition
-
HOT partition je pouze jedna, obsahuje tedy dlouho běžící objednávky (nebo objednávky v chybě)
-
Každý měsíc se vytváří nová WARM partition
-
WARM partition starší než 6 měsíců se automaticky odmazávají
-
Proces:
- Vytvoření partition “pro budoucí data”
- Název dle lifecycle a času
- Přesunutí dat z DEFAULT partition, pokud tam jsou. (Nemají být.)
- Vytvoření check constraint do DEFAULT partition.
- Přesun dat dle jejich LIFECYCLE
- Odpojení a smazání již nepoužívaných partition.
- Vytvoření partition “pro budoucí data”
- ILM u Elasticsearch (nebo delete_by_query**):** Index Lifecycle Management v Elasticsearch pro správu životního cyklu dat.
- TODO:
- jakým způsobem mazat Camunda historii?
- HistoryService.cleanUpHistoryAsync?
- jak mazat objednávky?
- jak je zas obnovit po připojení partition?
- jakým způsobem mazat Camunda historii?
o2-kiporder_20250904_142206 93.6 GB
- Order
- Tasks (nested)
- OrderLine (parent/child)
-> Nastavit na shardy velikosti cca 20 GB
- Vytvořit nový index (standardně jako v aplikaci, sharding)
- Přepnout alias na nový index
- Doindexovat historická data za poslední měsíc
o2-kipinventorytree_20250908_085931 71.2 GB
- InventoryTree
-> Nastavit na shardy velikosti cca 20 GB
- Vytvořit nový index (standardně jako v aplikaci, sharding)
- Přepnout alias na nový index
- Doindexovat historická data za poslední měsíc
ILM - Index Lifecycle Management
o2-kip-camunda-history-activity-instance 153 GB o2-kip-camunda-history-historic-variable 68.2 GB o2-kip-camunda-history-historic-process-instance 10.8 GB o2-kip-camunda-history-user-operation-log 7.4 GB o2-kip-camunda-history-historic-job-log 228 MB o2-kip-camunda-history-incident 16 MB o2-kip-camunda-history-historic-task-instance 5.74 MB o2-kip-camunda-history-historic-identity-link-log 1.5 MB
ILM - Index Lifecycle Management