Alexander Valyalkin á "VictoriaMetrics ááœáẠGo optimizations" á 2019 áá¯ááŸá áºááŸá±á¬ááºážááá¯ááºážá¡á á®áááºáá¶á á¬ááá¯áááºááẠá¡ááŒá¶ááŒá¯á¡ááºáá«áááºá
á€áááºááŸá¬ á€á¡á
á®áááºáá¶á
á¬á áá®áá®ááá¯ááá·áºááºááŒá
áºáááº-
ááá·áºá¡ááŒá±á¬ááºáž ááŒá±á¬ááŒáá«á áá« Alexander Valyalkin áá«á áá®ááŸá¬ fast
, ááá¯á·ááá¯áẠquick
ááŸá±á·áááºá
áá»áœááºáá±á¬áº áááºááŸá VictoriaMetrics ááŸá¬ á¡áá¯ááºáá¯ááºáá±áá«áááºá á¡á²áá«áá¬áá²á áá«á¡á²áá®ááŸá¬áá¬áá¯ááºáá±áá¬áá²á áá®á¡ááŒá±á¬ááºážááᯠáá® presentation ááŸá¬ ááŒá±á¬ááŒáá«áááºá
á¡á á®áááºáá¶á á¬á á¡ááŒááºážáá»ááºážááŸá¬ á¡á±á¬ááºáá«á¡ááá¯ááºážááŒá áºáááºá
- á¡áááºáá¯á¶áž VictoriaMetrics ááá¯áᬠáá¬áá²ááá¯áᬠááŒá±á¬ááŒáááºá
- ááŒá®ážááẠáááºá á®ážáá®ážááá²ááá¯áᬠááŒá±á¬ááŒáááºá
- ááá¯á·áá±á¬áẠá¡áá»áááºá á®ážáá®ážáá±áá¬áá±á·á Ạá¡áá¯ááºáá¯ááºáá¯á¶ááᯠááŒá±á¬ááŒáá«áááºá
- áá±á¬ááºáá áºáá¯á áá±áá¬áá±á·á áºáááá¯áá¬áá²á· áááºáááºááŒá®áž ááŒá±á¬ááŒáá«á·áááºá
- ááŒá®ážáá±á¬á· VictoriaMetrics áá²á· á¡áá±á¬ááºážáá¯á¶ážááŒá áºá¡á±á¬ááºáá¯ááºááŒáá¡á±á¬ááºá áááºážááẠááŒá±á¬ááºážááŒááºá¡ááœáŸááºážá¡ááœáẠááá¯ááá¯áá±á¬ááºážááœááºá¡á±á¬ááºááŒá¯áá¯ááºááŒááºážááŒá áºááŒá®áž Go ááœáẠbitset á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯á¡ááœáẠááá¯ááá¯áá±á¬ááºážááœááºá¡á±á¬ááºááŒá¯áá¯ááºááŒááºážááŒá áºáá«áááºá
áááááºáááºáá²á áá áºáá±á¬ááºáá±á¬ááºá VictoriaMetrics ááá¯áá¬ááᯠáááá«ááá¬ážá ááŒá±á¬áº..áá°áá±á¬áºáá±á¬áºáá»á¬ážááááŒá®ážááŒá®á ááááºážáá±á¬ááºážáá áºáá¯áá«áá²á ááááá°áá»á¬ážá¡ááœááºá á€áááºááŸá¬ á¡áá»áááºá á®ážáá®ážáá±áá¬áá±á·á áºááŒá áºáááºá áááºážááẠClickHouse á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯áá¡áá±ážá áááºá¡áá»ááºá¡áá»áá¯á·á¡áá±á«áº ClickHouse áááºáá±á¬ááºááŸá¯á¡áá±á«áºá¡ááŒá±áá¶áááºá á¥ááá¬- MergeTreeá áááŸáááá¯ááºáá±á¬ áááá¯áááºáᬠcores á¡á¬ážáá¯á¶ážááœáẠá¡ááŒáá¯ááºááœááºáá»ááºááŒááºážááŸáá·áº áááá¯áááºáᬠáááºááŸáºááœáẠáá¬ážááŸááá¬ážáá±á¬ áá±áá¬ááá±á¬ááºáá»á¬ážááᯠáá¯ááºáá±á¬ááºááŒááºážááŒáá·áº á áœááºážáá±á¬ááºááẠááá¯ááá¯áá±á¬ááºážááœááºá¡á±á¬áẠáá¯ááºáá±á¬ááºááŒááºážá
VictoriaMetrics ááẠá¡ááŒá¬ážá¡áá»áááºá á®ážáá®ážáá±áá¬áá±á·á áºáá»á¬ážááẠáá±áá¬áá»á¯á¶á·ááŸá¯ááᯠááá¯ááá¯áá±á¬ááºážááœááºá á±áááºá
áááºážááẠáá±á«ááºááá¯ááºá¡ááá¯ááºážá¡áᬠ- ááá¯ááá¯áááºááŸá¬ áááºááẠááœááºáá»á°áá¬áá áºáá¯á¶ážááœáẠáááá¯áááºáá¬áá»á¬ážá RAM ááá¯áá»á¬ážááá¯ááºáááºá VictoriaMetrics ááẠá€áááŸáááá¯ááºáá±á¬á¡áááºážá¡ááŒá áºáá»á¬ážááᯠá¡á±á¬ááºááŒááºá áœá¬á¡áá¯á¶ážáá»ááŒá®áž linear productivity ááᯠááá¯ážáááºá á±áááºááŒá áºáááºá
VictoriaMetrics ááá¯áááºáž á¡áá»á¬ážááá¯áẠááá¯ááºážáá¬ááẠ- ááá¯ááá¯áááºááŸá¬ áááºááẠVictoriaMetrics á¡á á¯á¡áá±ážááá¯á· á¡ááᯠnode áá»á¬ážááᯠáá±á«ááºážááá·áºááá¯ááºááŒá®áž áááºážá á áœááºážáá±á¬ááºáááºááẠáá»ááºážááŒá±á¬ááºážá¡ááá¯ááºáž ááá¯ážáá¬áááºááŒá áºáááºá
áááºááá·áºááŸááºážáá¬ážááá·áºá¡ááá¯ááºáž VictoriaMetrics ááẠá¡ááŒá¬ážáá°áá»á¬ážááᯠááá±ážááá¯ááºáá±á¬ááŒá±á¬áá·áº ááŒááºáááºáá±á¬áá±áá¬áá±á·á áºáá áºáá¯ááŒá áºáááºá Go ááŸá¬ áá±ážáá¬ážáá¬ááá¯á· áá®á¡á ááºážá¡áá±ážááŸá¬ ááŒá±á¬áá¬áá«á
á¡áá»áááºá
á®ážáá®ážááá¯áᬠáááºáá°ááááá²á áá°áááºáž áá°áá±á¬áºáá±á¬áºáá»á¬ážáá»á¬áž áááááºá á¡áá»áááºá
á®ážáá®ážááá¯áááºááŸá¬ á¡ááœá²ááá¯ááºá¡ááœá²áá»á¬ážááŒá
áºáááºá (timestamp, зМаÑеМОе)
á€á¡ááœá²áá»á¬ážááᯠá¡áá»áááºá¡á¬ážááŒáá·áº á
á®áá¬ážáá¬á áááºááá¯ážááẠáá±áá±á«áºá¡ááŸááºáá¶áá«áẠ- float64 ááŒá
áºáááºá
á¡áá»áááºá á®ážáá®ážáá áºáá¯á á®ááᯠáá±á¬á·áá áºáá¯ááŒáá·áº áá®ážááŒá¬ážáááºááŸááºáá¬ážáááºá á€áá±á¬á·ááẠá¡áááºá¡áá¬áá«áááºááááºážá áááºážááœáẠáá±á¬á·áááºááá¯ážá¡ááœá²áá»á¬ážá á¡ááœááºááá¯ááºáá±á¬á¡ááœá²áá»á¬áž áá«áááºáááºá
á€áááºááŸá¬ á¡áá»áááºá
á®ážáá®ážáá
áºáá¯á á¥ááá¬áá
áºáá¯ááŒá
áºáááºá á€á
á®ážáá®ážááá±á¬á·ááẠá¡ááœá²áá»á¬ážá
á¬áááºážááŒá
áºáááº- __name__="cpu_usage"
áááºááá
áºáá¡áááºá instance="my-server"
- á€áááºááá
áºááᯠá
á¯áá±á¬ááºážáá¬ážááá·áº ááœááºáá»á°áá¬á datacenter="us-east"
- á€ááœááºáá»á°áá¬áááºááŸááᬠáá±áá¬á
ááºáá¬ááŒá
áºáááºá
áá»áœááºá¯ááºááá¯á·ááẠáá±á¬á·áááºááá¯ážá¡ááœá² áá¯á¶ážáá¯áá«áááºáá±á¬ á¡áá»áááºá
á®ážáá®ážá¡áááºáá
áºáá¯ááŒáá·áº á¡áá¯á¶ážáááºáá²á·áááºá á€áá±á¬á·ááẠá¡ááœá²áá»á¬ážá
á¬áááºážááŸáá·áº áááºááá¯ááºáááºá (timestamp, value)
. t1, t3, t3, ..., tN
- áá«ááœá±á á¡áá»áááºáá¶ááááºá 10, 20, 12, ..., 15
- áááºááá¯ááºáá¬áááºááá¯ážáá»á¬ážá áááºážááẠáá±ážáá¬ážáá±á¬á
á®ážáá®ážáá
áºáá¯á¡ááœáẠáááºááŸááºá¡áá»áááºáá
áºáá¯ááœáẠCPU á¡áá¯á¶ážááŒá¯ááŸá¯ááŒá
áºáááºá
á¡áá»áááºá á®ážáá®ážááᯠáááºááŸá¬áá¯á¶ážááá¯ááºááá²á á¡ááŒá¶á¥á¬ááºáá áºáá¯ááŸááá«ááá¬ážá
- DevOps ááœááºá áááºááẠCPUá RAMá ááœááºáááºá rpsá á¡ááŸá¬ážá¡ááœááºážá¡áá±á¡ááœáẠá áááºááŒáá·áº ááá¯ááºážáá¬ááá¯ááºáááºá
- IoT - áá»áœááºá¯ááºááá¯á·ááẠá¡áá°áá»áááºá ááá¡á¬ážá áááá®ááŒááááááºáá»á¬ážááŸáá·áº á¡ááŒá¬ážá¡áá¬áá»á¬ážááᯠááá¯ááºážáá¬ááá¯ááºáá«áááºá
- ááá¯á·á¡ááŒáẠááá¹áá¬áá±áž - á áá±á¬á·ááŸáá·áº ááœá±ááŒá±ážá¡áá»áá¯ážá¡á á¬ážá¡á¬ážáá¯á¶ážá¡ááœáẠá á»á±ážááŸá¯ááºážáá»á¬ážááᯠáá»áœááºá¯ááºááá¯á· á á±á¬áá·áºááŒáá·áºááá¯ááºáá«áááºá
- ááá¯á·á¡ááŒáẠá ááºáá¯á¶áá»á¬ážááŸá áá¯ááºáá¯ááºááŸá¯ áá¯ááºáááºážá ááºáá»á¬ážááᯠá á±á¬áá·áºááŒáá·áºáá¬ááœáẠá¡áá»áááºá á®ážáá®ážááᯠá¡áá¯á¶ážááŒá¯ááá¯ááºáááºá á ááºáá¯ááºáá»á¬ážá¡ááœáẠáá±á¡á¬ážáá¬ááá¯ááºáá»á¬ážááᯠá á±á¬áá·áºááŒáá·áºááẠVictoriaMetrics ááᯠá¡áá¯á¶ážááŒá¯ááá·áº áá¯á¶ážá áœá²áá°áá»á¬ážááŸááááºá
- Time Series ááẠá ááºá¡áá»áá¯ážáá»áá¯ážá á¡á¬áá¯á¶áá¶áááááá¬áá»á¬ážá០á¡áá»ááºá¡áááºáá»á¬ážááᯠá á¯áá±á¬ááºážáááºá¡ááœááºáááºáž á¡áá¯á¶ážáááºáá«áááºá á¥ááá¬á¡á¬ážááŒáá·áºá á¡ááºáá»ááºá¡ááœááºá áá¬áá¬ááá¡á¬ážááᯠááá¯ááºážáá¬áááºá á¡ááŒááºááŸá¯ááºážá á¡ááœá¬á¡áá±ážááᯠááá¯ááºážáá¬ááŒááºážá áá¬ááºáá®áá¯á¶ážá áœá²ááŸá¯ ááá¯ááºážáá¬ááŒááºáž á áááºááá¯á·á¡ááœááºá
- áá±áá¬ááºááᯠá á±á¬áá·áºááŒáá·áºááẠá¡áá»áááºá á®ážáá®ážááá¯áááºáž á¡áá¯á¶ážááŒá¯ááá¯ááºáááºá áá±áá¬ááºáá áºáá¯á á®ááœáẠáá±áá¬ááºááá»ááºážáá¬áá±ážááá¯ááºáᬠááá·áºáááºáá»ááºá¡áá»áá¯ážáá»áá¯ážá¡ááœáẠá¡áá»áááºá á®ážáá®ážáá»á¬ážááᯠá á¯áá±á¬ááºážááá·áº black box áá áºáá¯ááŸááááºá Time Series ááᯠá¡á¬áá¬á áááºáááºááœááºáááºáž á¡áá¯á¶ážááŒá¯áá«áááºá
- áá»ááºážáá¬áá±ážá á±á¬áá·áºááŸá±á¬ááºááŸá¯ááŸá¬ ááœá±ážáá±á«ááºáá»áááºá ááœá±ážáá¯ááºááŸá¯ááºáž á áááºááá¯á·ááŒá áºáááºá
áá»áœááºá¯ááºáá±á·ááœá¬ážáá±á¬ á¡ááºááºáá®áá±ážááŸááºážáá»á¬áž ááŸááá±á¬ááºážááŸáááá¯ááºáá±á¬áºáááºáž áá±ááºáá áºááá¹áá¬ááœáẠá¡áá»áááºá á®ážáá®ážáá»á¬ážááᯠáááºááŒáœá áœá¬ á¡áá¯á¶ážááŒá¯áá±ááŒáááºááᯠáááºáá¬ážáááºááá¯ááºáááºáᯠáá»áŸá±á¬áºááá·áºáá«áááºá ááŒá®ážáá±á¬á· áá°ááá¯á·áá²á· áá¯á¶ážá áœá²ááŸá¯ááá¬áááááºáž áá áºááŸá áºáááºáá áºááŸá Ạááá¯ážáá¬áá«áááºá
á¡áááºááŒá±á¬áá·áº á¡áá»áááºá á®ážáá®ážáá±áá¬áá±á·á Ạááá¯á¡ááºááááºážá á¡áá»áááºá á®ážáá®ážáá»á¬ážááᯠááááºážáááºážááẠáá¯á¶ááŸááºáááºá ááºáá±áá¬áá±á·á áºááᯠáááºá¡áááºááŒá±á¬áá·áº á¡áá¯á¶ážáááŒá¯ááá¯ááºááááºážá
á¡áááºááŒá±á¬áá·áºááá¯áá±á¬áº á¡áá»áááºá
á®ážáá®ážáá»á¬ážááœáẠá¡áá»á¬ážá¡á¬ážááŒáá·áº á¡áá»ááºá¡áááºá¡áá»á¬ážá¡ááŒá¬ážáá«ááŸááá±á¬ááŒá±á¬áá·áº ááá¬ážááá¯ážáá»áá±áá¬áá±á·á
áºáá»á¬ážááœáẠááááºážáááºážáááºááŸáá·áº áá¯ááºáá±á¬ááºáááºáááºáá²áá±á¬ááŒá±á¬áá·áºááŒá
áºáááºá ááá¯á·ááŒá±á¬áá·áº á¡áá»áááºá
á®ážáá®ážá¡ááœáẠá¡áá°ážááŒá¯áá±áá¬áá±á·á
áºáá»á¬áž áá±á«áºáá¬áááºá á€á¡ááŒá±áá¶áá»á¬ážááẠá¡ááŸááºáá»á¬ážááᯠáááááá±á¬ááºáá±á¬áẠááááºážáááºážáááºá (timestamp, value)
áá±ážáá¬ážáá±á¬áá±á¬á·ááŒáá·áº áááºážááá¯á·ááẠáá±á¬á·ááŒáá·áº ááááºážáááºážáá¬ážáá±á¬ áá±áá¬ááᯠáááºáááºá áá
áºáá¯áááºážáá±á¬ áá±á¬á·áááºááá¯ážá¡ááœá²á ááá¯á·ááá¯áẠáá±á¬á·áááºááá¯ážá¡ááœá²áá»á¬áž ááá¯á·ááá¯áẠregexp ááŒáá·áº áááºááŸá¯ááŒááºážá¡ááœáẠAPI áá
áºáá¯ááᯠáá±ážáá«áááºá á¥ááá¬á¡á¬ážááŒáá·áºá áááºááẠá¡áá±áááááŸá áá±áá¬á
ááºáá¬áá
áºáá¯ááœáẠáááºááááºáá±á¬ááºááŸá¯á¡á¬ážáá¯á¶ážá CPU load ááá¯ááŸá¬ááá¯áááºá ááá¯á·áá±á¬áẠဠpseudo-query ááá¯á¡áá¯á¶ážááŒá¯áááºááá¯á¡ááºáááºá
áá¯á¶ááŸááºá¡á¬ážááŒáá·áº á¡áá»áááºá
á®ážáá®ážáá±áá¬áá±á·á
áºáá»á¬ážááẠá¡áá»áááºá
á®ážáá®áž SQL ááẠá¡ááœááºááá·áºáá»á±á¬áºááŸá¯áááŸááá±á¬ááŒá±á¬áá·áº á¡áá°ážááŒá¯áá±ážááŒááºážáá±á¬áá¬áá¬á
áá¬ážáá»á¬ážááᯠáá¶á·ááá¯ážáá±ážáá«áááºá SQL ááᯠáá¶á·ááá¯ážáá±ážááá·áº áá±áá¬áá±á·á
áºáá»á¬áž ááŸááá±á¬áºáááºáž áááºážááẠá¡ááœááºááá·áºáá»á±á¬áºááŒááºážáááŸááá±á á¡á
ááŸááá²á· áá¬áá¬á
áá¬ážááœá±ááᯠáá±ážááŒááºážáá«á
áááºážááẠá¥ááá¬á¡áá±ááŒáá·áº VictoriaMetrics ááá¯á¡áá¯á¶ážááŒá¯ááá·áº áá±ááºáá®á¡áá»áááºá á®ážáá®ážáá±áá¬áá±á·á áºáááá¯áá¬áá¯á¶ááŒá áºáááºá
áááºážááœáẠá¡ááá¯ááºážááŸá áºááá¯ááºážáá«áááºáááºá áááºážááẠááŒá±á¬ááºážááŒááºá¡ááœáŸááºážááááºážá¡ááœáẠááá¯ááŸá±á¬ááºááŸá¯ááŸáá·áº á¡áá»áááºá á®ážáá®ážáááºááá¯ážáá»á¬ážá¡ááœáẠááá¯ááŸá±á¬ááºááŸá¯ááŒá áºáááºá á€ááááºážáááºážááŸá¯áá»á¬ážááᯠááœá²ááŒá¬ážáá¬ážáááºá
áá±áá¬áá±á·á
áºááá¯á· ááŸááºáááºážá¡áá
áºáá
áºáá¯áá±á¬ááºááŸááá¬áá±á¬á¡áá«á áá±ážáá¬ážáá±á¬á¡ááœá²á¡ááœáẠá¡áá»áááºá
á®ážáá®ážáááºááŸááºááŸá¯á
áá
áºááᯠááŸá¬ááẠáá»áœááºá¯ááºááá¯á·ááẠááŒá±á¬ááºážááŒááºá¡ááœáŸááºážááᯠáŠážá
áœá¬áááºáá±á¬ááºááŒáá·áºááŸá¯áá«áááºá label=value
áá±ážáá¬ážáá±á¬áááºááá
áºá¡ááœááºá áá»áœááºá¯ááºááá¯á·ááẠá€á¡ááŸááºá¡áá¬ážááᯠááŸá¬ááœá±ááŒá®áž áá±áá¬á
ááá¯ážááœáẠáááºááá¯ážááᯠááááºážáááºážáá«áááºá
TSDB ááŸáá±áá¬ááá¯ááá°áááºáá±á¬ááºážááá¯ááŸá¯áá
áºáá¯áá±á¬ááºáá¬áá±á¬á¡áá«á áá»áœááºá¯ááºááá¯á·ááẠáŠážá
áœá¬ááŒá±á¬ááºážááŒááºá¡ááœáŸááºážááá¯á·ááœá¬ážáá«á á¡á¬ážáá¯á¶ážáááŒáá«á
á± timeseries_ids
á€á¡á
á¯ááŸáá·áºááá¯ááºáá®áá±á¬ááŸááºáááºážáá»á¬áž label=value
. ááá¯á·áá±á¬áẠá¡ááœáŸááºážááŒáá·áº áá±ážáá¬ážáá±á¬ data warehouse á០ááá¯á¡ááºáá±á¬ data á¡á¬ážáá¯á¶ážááᯠááá°áá«áááºá timeseries_ids
.
á¡áá»áááºá á®ážáá®ážáá±áá¬áá±á·á áºáá áºáá¯ááẠáááºáá¬áá±á¬ááœá±ážáá»ááºáá¬ážáá±á¬áá±ážááœááºážááᯠáááºááá¯á·áá¯ááºáá±á¬ááºáááºá á¥ááá¬ááᯠááŒáá·áºááŒáá«á áá¯á·á
- ááááá¯á¶áž áá°áááẠá¡áá¬á¡á¬ážáá¯á¶ážááᯠáááŸááááºá
timeseries_ids
áá±ážáá¬ážáá±á¬á¡ááœá²áá»á¬ážáá«ááŸááá±á¬ ááŒá±á¬ááºážááŒááºá¡ááœáŸááºážáá áºáá¯ááŸlabel=value
ááá¯á·ááá¯áẠáá±ážáá¬ážáá±á¬ áá¯á¶ááŸááºá¡áá¯á¶ážá¡ááŸá¯ááºážááᯠáá»á±áááºáá«á - ááá¯á·áá±á¬áẠááœá±á·ááŸááá°áá»á¬ážá¡ááœáẠáááºááŸááºáá¬ážáá±á¬ á¡áá»áááºááŒá¬ážáá¬áááœáẠáá±áá¬ááááºážáááºážááŸá¯á០áá±áá¬á¡áá»ááºáá»á¬ážá¡á¬ážáá¯á¶ážááᯠáá¯ááºáá°áááºá
timeseries_ids
. - áááºážáá±á¬ááºááœááºá á¡áá¯á¶ážááŒá¯áá°ááá±á¬ááºážááá¯áá»ááºá¡á áá±áá¬áá±á·á áºááẠá€áá±áá¬á¡áá»ááºáá»á¬ážáá±á«áºááœáẠááœááºáá»ááºááŸá¯á¡áá»áá¯á·áá¯ááºáá±á¬ááºáááºá ááŒá®ážááẠá¡ááŒá±ááŒááºáá±ážáááºá
áá®áááºáááºááŸá¯ááŸá¬ áááááá¯ááºážááᯠááŒá±á¬ááŒáá«áááºá áá«á ááŸá¬ááœá±ááŸá¯áá
áºáá¯áá«á timeseries_ids
ááŒá±á¬ááºážááŒááºá¡ááœáŸááºážá¡á¬ážááŒáá·áºá áá¯áááááá¯ááºážáá²á· ááááá¡ááá¯ááºážááᯠáá±á¬ááºááá¯ááºážááŸá¬ ááŒáá·áºááŸá¯ááá¯ááºáá«áááºá
ááŒá±á¬ááºážááŒááºá¡ááœáŸááºážááá¯á· áááºááœá¬ážááŒáá«á áá¯á·á áá±á¬áºáá±á¬áºáá»á¬ážáá»á¬ážá áá«ááᯠááá¯ážááŸááºážáááºááá¯á· áááºáá±á¬ááºážáááºááá¯ááºáá«áááºá ááŒá±á¬ááºážááŒááºá¡ááœáŸááºážááá¯áᬠáá¬áá²á áááºááá¯á¡áá¯ááºáá¯ááºáááºááá¯áᬠáááºáá°áááá²á á¡áá¯ážá áá°ááááºááá»á¬ážáá±á¬á·áá°ážá á¡á²áá« áá¬áá²ááá¯áᬠáá¬ážáááºá¡á±á¬áẠááŒáá¯ážá á¬ážááŒáá·áºáá¡á±á¬ááºá
ááááºáá±á¬á· ááá¯ážááŸááºážáá«áááºá áááºážááẠáááºááá¯ážáá
áºáá¯ááá¯á· áá±á¬á·áá
áºáá¯ááᯠááŒá±áá¯á¶ááœá²ááá·áº ááá¯ážááá¯ážá¡áááá¬ááºáá
áºáá¯ááŒá
áºáááºá áá±á¬á·ááá¯áá¬áá¬áá²á áá®á
á¯á¶ááœá² label=value
áááºááŸá¬ label
О value
- áá«ááœá±á ááá¯ááºážááœá±áá«á áááºááá¯ážááœá± á¡á
á¯á¶ááŸááááºá timeseries_ids
áá±ážáá¬ážáá±á¬ á¡ááœá²áá»á¬áž áá«áááºáááºá label=value
.
ááŒá±á¬ááºážááŒááºá¡ááœáŸááºážááẠá¡áá¬á¡á¬ážáá¯á¶ážááᯠáá»ááºááŒááºá
áœá¬ ááŸá¬ááœá±ááá¯ááºá
á±áá«áááºá timeseries_ids
áá±ážáá±á¬á label=value
.
á¡á²áá«ááá¯áááºáž ááŒááºááŒááºááŸá¬ááá¯ááºááááºá timeseries_ids
á¡ááœá²áá±á«ááºážáá»á¬ážá
áœá¬á¡ááœáẠá¡áá»áááºá
á®ážáá®áž label=value
ááá¯á·ááá¯áẠá
á¯á¶ááœá²áá»á¬ážá¡ááœáẠlabel=regexp
. áá«á áááºááá¯ááŒá
áºáá¬áá²á á¡á
á¯á¶ááááºážáá¯á¶ááá¯ááŸá¬ááœá±ááŒááºážááŒáá·áº timeseries_ids
á¡ááœá²áá
áºáá¯á
á®á¡ááœáẠlabel=value
.
ááŒá±á¬ááºážááŒááºá¡ááœáŸááºážá á¡áá»áá¯ážáá»áá¯ážáá±á¬ á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯áá»á¬ážááᯠááŒáá·áºááŒáá«á áá¯á·á á¡ááá¯ážááŸááºážáá¯á¶áž áá¯á¶á¡áá±á¬ á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ááŒáá·áº á áááºááŒáá«á áá¯á·á áá°áááŒáá·áºááᬠáá®ááá¯áá«á
áá¯ááºáá±á¬ááºáá»áẠgetMetricIDs
ááŒáá¯ážáá»á¬ážá
á¬áááºážááᯠáááŸááááºá á
á¬ááŒá±á¬ááºážáá
áºááŒá±á¬ááºážá
á®áá«ááŸááááºá label=value
. á€áá¯ááºáá±á¬ááºáá»ááºááẠá
á¬áááºážáá
áºáá¯ááᯠááŒááºáá±ážáááºá metricIDs
.
áááºááá¯á¡áá¯ááºáá¯ááºáá²? á€ááœáẠáá»áœááºá¯ááºááá¯á·ááœáẠááá¹áá¬áá¯á¶ážááá¯ááºáᬠááááºážááŸááºáá
áºáá¯ááŸááááºá invertedIndex
. áá«á áá¯á¶ááŸááºá¡áááá¬áẠ(map
) slicate ints á¡ááœáẠstring ááᯠááŒá±áá¯á¶ááœá²áá«áááºá ááá¯ááºážáá«ááŸááááºá label=value
.
áá¯ááºáá±á¬ááºáá»áẠá¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯- ááá°áá«á metricIDs
ááááá¯á¶ážá¡ááœáẠlabel=value
ááŒá®ážáá±á¬á· áááŒá¬ážá¡áá¬á¡á¬ážáá¯á¶ážááᯠááŒááºááœá¬ážáááºá label=value
áá»áœááºáá±á¬áºáá¬ážáááºáá«áááºá metricIDs
áá°ááá¯á·á¡ááœááºá function ááá¯áá±á«áºáá«á intersectInts
á¡á±á¬ááºááœáẠááœá±ážááœá±ážáá«áááºá ááŸáá·áº á€áá¯ááºáá±á¬ááºáá»ááºááẠá€á
á¬áááºážáá»á¬ážá áááºážáá¯á¶ááᯠááŒááºáá±ážáááºá
áááºááœá±á·ááŒááºáááá·áºá¡ááá¯ááºážá ááŒá±á¬ááºážááŒááºá¡ááœáŸááºážááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºááŒááºážááẠá¡ááœááºááŸá¯ááºááœá±ážáááºááá¯ááºá áá«áá±ááá·áº áá«á áá¯á¶á¡áá²á· á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯áá«á áá¬á¡á¬ážáááºážáá»ááºááœá±ááŸááá²á áá¯á¶á¡áá±á¬á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯áá¡áááá¡á¬ážáááºážáá»ááºááŸá¬ááá¯áá²á·ááá¯á·áá±á¬ááŒá±á¬ááºážááŒááºá¡ááœáŸááºážááᯠRAM ááœááºááááºážáááºážáá¬ážáááºá á¡ááá®áá±ážááŸááºážááᯠááŒááºáááºá áááºááŒá®ážáá±á¬áẠáá»áœááºá¯ááºááá¯á·ááẠá€á¡ááœáŸááºážááᯠáá¯á¶ážááŸá¯á¶ážááœá¬ážáá«áááºá á€á¡ááœáŸááºážááᯠáá áºááºááœáẠááááºážáááºážááŒááºáž áááŸááá«á ááá¯ááá¯á·ááŒá±á¬ááºážááŒááºá¡ááœáŸááºážááẠáá±áá¬áá±á·á áºá¡ááœáẠááá·áºáá»á±á¬áºááœááºáááŸááá«á
áá¯áááá¡á¬ážáááºážáá»ááºááá±á¬á· memory áá²á·áááºáž áááºááá¯ááºáá«áááºá ááŒá±á¬ááºážááŒááºá¡ááœáŸááºážááẠRAM ááŸáá·áº á¡á¶ááá¯ááºááŒá áºááááºá RAM á¡ááœááºá¡á á¬ážááẠáá»á±á¬áºááœááºáá«á Memory error áá»á¬áž ááŒááºáá±á¬ááºááœá¬ážáááºááŸá¬ áá±áá»á¬áá«áááºá ááŒá®ážáá±á¬á· áááá¯ááááºá á¡áá¯ááºáááŒá áºáá°ážá
áá®ááŒá¿áá¬ááᯠá¡áááºááá·áºáá¯ááºáá¬ážáá²á· ááŒá±ááŸááºážáááºážááœá±áá¯á¶ážááŒá®áž ááŒá±ááŸááºážááá¯ááºáá«áááºá
á¡ááá¯áá»á¯ááºá¡á¬ážááŒáá·áºá áá»áœááºá¯ááºááá¯á·ááẠáá¯ááºáá±á¬ááºáá»ááºáá¯á¶ážáá¯ááᯠáá»ááºááŒááºá áœá¬áá¯ááºáá±á¬ááºááá¯ááºá á±ááá·áº áá±áá¬áá±á·á áºáá áºáᯠááá¯á¡ááºáá«áááºá
- ááááá¯á¶áž áá¯ááºáá±á¬ááºáá»ááºááá±á¬á· á¡áá¶ááœááºážááŒááºážáá«á
клÑÑ-зМаÑеМОе
á€áá±áá¬áá±á·á áºááá¯á·á áá°áááẠá€á¡áá¬ááᯠá¡ááœááºáá»ááºááŒááºá áœá¬ áá¯ááºáááºá á¡áááºááŸá¬áááºážÐºÐ»ÑÑ-зМаÑеМОе
áááá¬ážáá±á¬ááŒáá¯ážáá»á¬ážááŒá áºááŒáááºá - áá¯ááááá¯ááºáá±á¬ááºáá»ááºááẠáá±ážáá¬ážáá±á¬áá±á¬á·ááᯠá¡áá¯á¶ážááŒá¯á áááºááá¯ážáá áºáá¯ááᯠá¡ááŒááºááŸá¬ááœá±ááŒááºážááŒá áºáááºá
- áááá áá¯ááºáá±á¬ááºáá»ááºááẠáá±ážáá¬ážáá±á¬ ááŸá±á·áááºááŒáá·áº áááºááá¯ážáá»á¬ážá¡á¬ážáá¯á¶ážááᯠá¡ááŒááºááŸá¬ááœá±áááºá
LevelDB ááŸáá·áº RocksDB - á€áá±áá¬áá±á·á
áºáá»á¬ážááᯠGoogle ááŸáá·áº Facebook ááá¯á·á០áááºáá®ážáá²á·áááºá ááááá¯á¶áž LevelDB á áá¬áá¬áá«á ááá¯á·áá±á¬áẠFacebook á០áá±á¬ááºá»á¬ážáá±ážáá»á¬ážááẠLevelDB ááá¯áá°áᬠááá¯ááá¯áá±á¬ááºážááœááºá¡á±á¬ááºááŒá¯áá¯ááºáᬠRocksDB ááᯠáááºáá®ážáá²á·ááŒáááºá ááá¯á¡áá«ááœáẠá¡ááœááºážááá¯ááºážáá±áá¬áá±á·á
áºá¡á¬ážáá¯á¶ážáá®ážáá«ážááẠRocksDB ááŸáá·áº MySQL ááá¯á· ááœáŸá²ááŒá±á¬ááºážáá±ážáá¬ážááá·áºá¡áá¬áá»á¬ážá¡áá«á¡ááẠFacebook á¡ááœááºážááŸá RocksDB ááœáẠá¡áá¯ááºáá¯ááºáá«áááºá áá°á·ááᯠáá¬áááºáá±ážááŒáááºá
LevelDB ááᯠá¡áá¯á¶ážááŒá¯á ááŒá±á¬ááºážááŒááºá¡ááœáŸááºážááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºááá¯ááºáááºá áááºááᯠáá¯ááºáááá²? áá±á¬á·áá
áºáá¯á¡áá±áá²á· ááááºážáááºá label=value
. áááºááá¯ážááẠá¡ááœá²áá»á¬áž ááŸááá±ááá·áº á¡áá»áááºá
á®ážáá®ážá á¡ááŸááºá¡áá¬ážááŒá
áºáááºá label=value
.
á¡áááºá áá»áœááºá¯ááºááá¯á·ááœáẠáá±ážáá¬ážáá±á¬á¡ááœá²ááŸáá·áºá¡áá° á¡áá»áááºá
á®ážáá®ážáá»á¬ážá
áœá¬ááŸááááºá label=value
ááá¯á·áá±á¬áẠáá°áá®áá±á¬áá±á¬á·ááŸáá·áº ááœá²ááŒá¬ážáá±á¬ á€áá±áá¬áá±á·á
áºááœáẠá¡áááºážáá»á¬ážá
áœá¬ ááŸááááá·áºáááºá timeseries_ids
. á¡á¬ážáá¯á¶ážá
á¬áááºážáááá¯á· timeseries_ids
áá®ááá±á
áááºá label=prefix
á€áá±áá¬áá±á·á
áºááᯠá¡áá±á¬ááºážáá¯á¶ážááŒá
áºá¡á±á¬áẠááŒá¯áá¯ááºáá¬ážááá·áº á¡ááá¯ááºážá¡ááŒá¬ážááᯠáá»áœááºá¯ááºááá¯á· á
áááºááºáá¯ááºáá«áááºá ááá¯ááá¯áááºááŸá¬á áá»áœááºá¯ááºááá¯á·ááẠá¡á
ááŒá¯ááá·áº ááá¯ááºážá¡á¬ážáá¯á¶ážááᯠááœá±ážáááºá label=prefix
ááá¯á¡ááºáá¬ááœá±ááᯠááá°áá«á timeseries_ids
.
á€áááºááŸá¬ Go ááœáẠáááºááá¯á·áááºáá¯á¶ááŒá áºáááºááᯠááá°áá¬á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯áá áºáá¯ááŒá áºáááºá áá»áœááºá¯ááºááá¯á·ááœáẠááŒá±á¬ááºážááŒááºá¡ááœáŸááºážáá áºáá¯ááŸááááºá áá«á LevelDB áá«á
áá¯ááºáá±á¬ááºáá»ááºááẠáá¯á¶á¡áá±á¬ á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯á¡ááœáẠá¡áá°áá°áááºááŒá
áºáááºá áááºážááẠáá¯á¶á¡áá±á¬ á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ááᯠáá»ááºážááŒá±á¬ááºážáá
áºááŒá±á¬ááºážáá»ááºážáá®ážáá«áž ááŒááºáá¯ááºáááºá áá
áºáá¯áááºážáá±á¬á¡áá»ááºááŸá¬ á¡ááŸáá·áºá¡á
á¬áž map
ááŒá±á¬ááºážááŒááºá¡ááœáŸááºážááᯠáá»áœááºá¯ááºááá¯á· áááºáá±á¬ááºááŒáá·áºááŸá¯áááºá áá»áœááºá¯ááºááá¯á·ááẠááááá¯á¶ážáááºááá¯ážáá»á¬ážá¡á¬ážáá¯á¶ážááᯠááá°áááºá label=value
. ááá¯á·áá±á¬áẠáá»ááºá¡ááœá²á¡á¬ážáá¯á¶ážááᯠááŒááºááœá¬ážáá«áááºá label=value
ááŸáá·áº áááºážááá¯á·á¡ááœáẠáááºááá¯ááºáᬠáááºááá
ẠID á¡á
á¯á¶áá»á¬ážááᯠááá°áá«á áá±á¬ááºáá±á¬á· áááºážáá¯á¶ááá¯ááœá±á·áááºá
á¡á¬ážáá¯á¶ážá¡áááºááŒá±áá±áá¯á¶ááá±ááá·áº áá®ááŒá±ááŸááºážáá»ááºá¡ááœáẠá¡á¬ážáááºážáá»ááºááœá±ááŸááá«áááºá VictoriaMetrics ááẠLevelDB ááᯠá¡ááŒá±áá¶á ááŒá±á¬ááºážááŒááºá¡ááœáŸááºážááᯠáááŠážááœáẠá¡áá±á¬ááºá¡áááºáá±á¬áºáá²á·áááºá áá«áá±ááá·áº áá±á¬ááºáá¯á¶ážáá±á¬á· áááºáá»áŸá±á¬á·ááá¯ááºááááºá
á¡áááºááŒá±á¬ááºá·? á¡áááºááŒá±á¬áá·áºááá¯áá±á¬áº LevelDB ááẠáá¯á¶á¡áá±á¬á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ááẠááŸá±ážááœá±ážáá±á¬ááŒá±á¬áá·áºááŒá
áºáááºá áá±ážáá¬ážáá±á¬áá±á¬á·áá
áºáá¯áá±ážáá¬ážáá±á¬ áá¯á¶á¡áá±á¬á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ááœááºá á¡áá»ááºáá
áºáá¯áá¯á¶ážááᯠáá»ááºáá»ááºážááá°áááºá metricIDs
. áááºážááẠá¡ááœááºááŒááºáááºáá±á¬ áá¯ááºáá±á¬ááºáá»ááºááŒá
áºááẠ- á¡áá»ááºáá
áºáá¯áá¯á¶ážááᯠá¡áá¯á¶ážááŒá¯ááẠá¡ááá·áºááŒá
áºáá±áá«ááŒá®á
LevelDB ááœááºá function áá
áºáá¯áá±á«áºááá¯ááºáž GetValues
á
áááºááŒáá·áº á¡á
ááŒá¯áá±á¬ ááá¯ááºážáá»á¬ážá¡á¬ážáá¯á¶ážááᯠááŒááºáááºážááẠááá¯á¡ááºáá«áááºá label=value
. ááá¯ááºážáá
áºáá¯á
á®á¡ááœáẠáááºááá¯ážááᯠááá°áá«á timeseries_ids
. á¡á²áá®ááá¯áá»áá¯áž timeseries_ids
á€á¡áá¬áá»á¬ážááᯠá
á¯áá±á¬ááºážáá«á timeseries_ids
. áááºááŸá¬ážáááºááŸá¬á áááºážááẠáá¯á¶ááŸááºááŒá±áá¯á¶ááᯠáá±á¬á·ááŒáá·áºááá°ááŒááºážááẠáá»á¬ážá
áœá¬ááŸá±ážááœá±ážááŒá±á¬ááºáž áááá¬áááºááŸá¬ážáá«áááºá
áá¯áááá¡á¬ážáááºážáá»ááºááŸá¬ LevelDB ááᯠC ááŒáá·áºáá±ážáá¬ážááŒááºážááŒá áºáááºá Go á០C áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠáá±á«áºááá¯ááŒááºážááẠá¡ááœááºááŒááºáááºááŒááºážáááŸááá«á áá¬ááá¯á áá¹ááá·áºáá¬ááŸáá·áºáá»á®ááŒá¬áááºá 1-5 nanoseconds ááŒá¬ááá·áº go ááœááºáá±ážáá¬ážáá±á¬ áá¯á¶ááŸáẠfunction call ááŸáá·áº ááŸáá¯ááºážááŸááºáá«á á áœááºážáá±á¬ááºáááºááŸá¬ á¡á áááºááŸáá·áºáá»á®á ááœá¬ááŒá¬ážáá±á¬ááŒá±á¬áá·áºá VictoriaMetrics á¡ááœáẠáá«á ááá¯ážááœá¬ážáá²á· áá»áá¯á·ááœááºážáá»ááºáá áºáᯠ:)
ááá¯á·ááŒá±á¬áá·áº ááŒá±á¬ááºážááŒááºá¡ááœáŸááºážááᯠáá»áœááºá¯ááºááá¯ááºááá¯áẠáá±ážáá²á·áááºá áá°á·ááá¯áá±á«áºáááºá
Mergeset ááẠMergeTree áá±áá¬ááœá²á·á
ááºážáá¯á¶á¡áá±á«áº á¡ááŒá±áá¶áááºá á€áá±áá¬ááœá²á·á
ááºážáá¯á¶ááᯠClickHouse á០áá»á±ážáá°áá¬ážáááºá áá»ááºááŒááºá
áœá¬ááŸá¬ááœá±ááŒááºážá¡ááœáẠáá±á«ááºážá
ááºážááŒááºážááᯠá¡áá±á¬ááºážáá¯á¶ážááŒá
áºá¡á±á¬áẠááŒá¯áá¯ááºááá·áºáááºááŸá¬ áááºááŸá¬ážáá«áááºá timeseries_ids
áá±ážáá±á¬áá±á¬á·á¡ááá¯ááºážá Mergeset ááᯠGo ááœáẠáá¯á¶ážáá¯á¶ážáá»á¬ážáá»á¬áž áá±ážáá¬ážáááºá ááŒáá·áºááá¯á·ááááºá
áá±á«ááºážá ááºážáá¬ážáá±á¬ API ááẠLevelDB ááŸáá·áº RocksDB ááá¯á·ááŸáá·áº á¡ááœááºáááºáá°áááºá ááá¯ááá¯áááºááŸá¬á áááºážááẠááá·áºá¡á¬áž ááá¯áá±áá¬ááœáẠááŸááºáááºážá¡áá áºáá»á¬ážááᯠáá»ááºááŒááºá áœá¬ ááááºážáááºážááá¯ááºááŒá®áž áá±ážáá¬ážááá·áº ááŸá±á·áááºáá áºáá¯ááŒáá·áº ááŸááºáááºážáá»á¬ážááᯠá¡ááŒááºááœá±ážáá»ááºááá¯ááºá á±áááºááŒá áºáááºá
áá±á«ááºážá ááºážááŒááºážá á¡á¬ážáááºážáá»ááºáá»á¬ážááᯠáá±á¬ááºááŸááŒá±á¬áá«áááºá ááᯠááŒá±á¬ááºážááŒááºá¡ááœáŸááºážááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºáá¬ááœáẠáá¯ááºáá¯ááºááŸá¯ááœáẠVictoriaMetrics ááŸáá·áº áááºáááºááá·áº ááŒá¿áá¬áá»á¬ážá¡ááŒá±á¬ááºáž ááœá±ážááœá±ážááŒáá«á áá¯á·á
áá°ááá¯á·áá¬ááŒá±á¬áá·áºáá±á«áºáá¬áá¬áá²á
áááá¡ááŒá±á¬ááºážá¡áááºážá ááœáá·áºááŒá°ážááŸá¯ááŸá¯ááºáž ááŒáá·áºáá¬ážáá±ááŒááºáž ááŒá áºáááºá áá¯ááŸá¬ážáá¬áá¬ááá¯á· áá¬áá¬ááŒááºáá¬ážáááºá áááºážááẠá¡áá»áááºá á®ážáá®ážáá»á¬ážááœáẠáááŒá¬áá ááŒá±á¬ááºážáá²ááŸá¯áá áºáá¯ááŒá áºáááºá á¡áá»áááºá á®ážáá®ážáá áºáá¯ááŒá®ážáá¯á¶ážááŒá®áž á á®ážáá®ážá¡áá áºáá áºáá¯á áááºáá»ááẠááá¯á·ááá¯áẠá¡áá»áááºá á®ážáá®ážá¡áá áºáá»á¬ážá áœá¬ á áááºááá·áºá¡áá»áááºááŒá áºáááºá ááŒá®ážáá±á¬á· áá®ááá¯ááŒá áºáááºáááºá
áá¯áááá¡ááŒá±á¬ááºážáááºážááŸá¬ á¡ááŒáááºá¡áá±á¡ááœáẠáá»á¬ážááŒá¬ážáá±ááŒááºáž ááŒá áºáááºá á¡á ááá¯ááºážááœááºá á á±á¬áá·áºááŒáá·áºááŸá¯áá±áááºážá á¬ážáá¬áá±á¬á¡áá«á á¡áá»áááºá á®ážáá®ážá¡áá±á¡ááœááºáááºážáá«ážáá²á·áááºá á¥ááá¬á¡á¬ážááŒáá·áºá ááœááºáá»á°áá¬áá áºáá¯á á®á¡ááœáẠCPUá Memoryá Network ááŸáá·áº Disk load ááᯠá á±á¬áá·áºááŒáá·áºááẠááá¯á¡ááºáááºá ááœááºááŒá°áá¬áá áºáá¯áá»áŸáẠ4 time series ááá·áºááœáẠááœááºáá»á°áᬠá¡áá¯á¶ážáá± 100 ááŸáá·áº á¡áá»áááºá á®ážáá®áž 400 ááŸááááºáᯠááá¯ááŒáá«á áá¯á·á áá«á á¡áááºážáááºážáááºá
á¡áá»áááºááŒá¬áá¬áááºááŸáá·áºá¡áá»áŸ áá°áá»á¬ážááẠááá¯ááá¯á¡áá±ážá áááºá¡áá»ááºá¡áááºáá»á¬ážááᯠááá¯ááºážáá¬ááá¯ááºáááºáᯠáááºááŒááºáá¬ááŒáááºá á¥ááá¬á áááá¯áááºáá¬áá áºáá¯áá¯á¶ážá áááºááᯠááá¯ááºážáá¬ááŒááºážááá¯ááºáá² áááá¯áááºáᬠcore áá áºáá¯á á®á áá®ážááŒá¬ážá á®ááŒá áºáááºá ááá·áºááœáẠáááá¯áááºáᬠcore 40 ááŸááá«áá áááá¯áááºáá¬áááºá¡á¬áž ááá¯ááºážáá¬ááẠááá·áºááœáẠá¡á 40 ááá¯áá±á¬ á¡áá»áááºá á®ážáá®ážááŸááááºá
áá«ááœá±á¡á¬ážáá¯á¶ážáá±á¬á· ááá¯ááºáá«áá°ážá áááá¯áááºáᬠcore áá áºáá¯á á®ááœáẠidle áá²á·ááá¯á· state á¡áá»á¬ážá¡ááŒá¬ážááŸáááá¯ááºááẠá á¡áá¯á¶ážááŒá¯áá°áá±áá¬á kernel space ááŸáá·áº á¡ááŒá¬ážááŒááºáááºáá»á¬ážááœááºáááºáž á¡áá¯ááºáá¯ááºáá«áááºá ááá¯á¡ááŒá±á¡áá±áá áºáá¯á á®ááᯠáá®ážááŒá¬ážá¡áá»áááºá á®ážáá®ážá¡ááŒá áºáááºáž ááá¯ááºážáá¬ááá¯ááºáááºá áááºážááẠá¡áááºážá¡áá±á¡ááœááºááᯠ7-8 á ááá¯ážá á±áááºá
áááºááá áºáá áºáá¯á០áá»áœááºá¯ááºááá¯á·ááẠááœááºáá»á°áá¬áá áºáá¯á¶ážá¡ááœáẠ40 x 8 = 320 áááºááá áºáá»á¬ážááᯠáááŸááá²á·áááºá 100 áá²á· ááŒáŸá±á¬ááºááẠ32 á¡á á¬áž 000 ááá«ááŒá®á
ááá¯á·áá±á¬áẠKubernetes ááŸáá·áºá¡áá° ááá¯ááºáá«áá¬áááºá Kubernetes ááẠááá°áá®áá±á¬ áááºáá±á¬ááºááŸá¯áá»á¬ážá áœá¬ááᯠáááºáá¶áá±á¬ááºááœááºáá±ážááá¯ááºáá±á¬ááŒá±á¬áá·áº ááá¯ááá¯ážááœá¬ážáá«áááºá Kubernetes ááŸá áááºáá±á¬ááºááŸá¯áá áºáá¯á á®ááœáẠpods áá»á¬ážá áœá¬ áá«áááºáá«áááºá áá«ááœá±á¡á¬ážáá¯á¶ážááᯠá á±á¬áá·áºááŒáá·áºááá¯á· ááá¯áá«áááºá ááá¯á·á¡ááŒááºá áá»áœááºá¯ááºááá¯á·ááẠááá·áºáááºáá±á¬ááºááŸá¯áá»á¬ážá áá¬ážááŸááºážá¡áá áºáá»á¬ážááᯠá¡áááºáááŒáẠááŒáá·áºáá»ááºáá¯ááºáá±á¬ááºáá»áŸááºááŸááá«áááºá áá¬ážááŸááºážá¡áá áºáá áºáá¯á á®á¡ááœáẠá¡áá»áááºá á®ážáá®ážá¡áá áºááᯠáááºáá®ážááá«áááºá ááááºá¡áá±ááŒáá·áºá time series á¡áá±á¡ááœááºááẠá¡áááááºááŒá®ážááœá¬ážáá¬ááŒá®áž high-cardinality áá¯áá±á«áºáá±á¬ á¡áá»áááºá á®ážáá®ážá¡áá»á¬ážá¡ááŒá¬ážá ááŒá¿áá¬ááŸáá·áº áá»áœááºá¯ááºááá¯á· áááºááá¯ááºáá±ááŒááááºá VictoriaMetrics ááẠá¡ááŒá¬ážáá±á¬ á¡áá»áááºá á®ážáá®ážáá±áá¬áá±á·á áºáá»á¬ážááŸáá·áº ááŸáá¯ááºážááŸááºáá«á áááºážááᯠá¡á±á¬ááºááŒááºá áœá¬ áááºááá¯ááºááá¯ááºáááºááŒá áºáááºá
ááŒáá·áºáá¬ážáá±á¬ churn rate ááᯠá¡áá®ážáááºááŒáá·áºááŒáá«á áá¯á·á áá¯ááºáá¯ááºááŸá¯ááœáẠá¡áá»á¥áºážá á¬ážááŸá¯ááºáž ááŒáá·áºáá¬ážááŒááºážááᯠá¡áááºá¡áá¬á ááŒá áºá á±ááááºážá á¡áááºááŒá±á¬áá·áºááá¯áá±á¬áº á¡áá»áá¯á·áá±á¬ á¡ááœáŸááºážáá»á¬ážááŸáá·áº áááºáá»á¬ážá á¡áááá¹áá«ááºáá»á¬ážááẠá¡áááºáááŒáẠááŒá±á¬ááºážáá²áá±áá±á¬ááŒá±á¬áá·áº ááŒá áºáááºá
á¥ááá¬á¡á¬ážááŒáá·áºá á¡áá°á¡áááŸááá±á¬ Kubernetes ááá¯áá°áá«á deployment
ááá¯ááá¯áááºááŸá¬ ááá·áºá¡ááá®áá±ážááŸááºážá áá¬ážááŸááºážá¡áá
áºááᯠááœáŸáá·áºáááºááá·áºá¡áá«á á¡ááŒá±á¬ááºážáá
áºáá¯áá¯ááŒá±á¬áá·áº Kubernetes áá±á¬á·ááºáá²á¡ááºáá»ááºáá®áá¬áá»á¬ážááẠá¡ááœáŸááºážááá¯á· á¡áá¯á¶ážáá»ááŸá¯á¡áá¯ááºáá®ááᯠááá·áºááẠáá¯á¶ážááŒááºáá²á·ááŒáááºá
áá«á áá¬ááᯠáŠážáááºááœá¬ážáá¬áá²á ááá¯á·á¡ááŒááºá ááŒáá·áºáá»ááºááŸá¯á¡áá
áºáá
áºáá¯á
á®ááŸáá·áºá¡áá°á á¡áá»áááºá
á®ážáá®ážáá±á¬ááºážáá»á¬ážá¡á¬ážáá¯á¶áž áááºááá·áºááœá¬ážááŒá®áž áááºážááá¯á·á¡á
á¬ážá á¡áá»áááºá
á®ážáá®ážá¡áá
áºááẠá¡ááœáŸááºážáááºááá¯ážá¡áá
áºááŒáá·áº á
áááºááẠdeployment_id
. á¡á²áá®ááᯠá¡áááºážáá±á«ááºáž áá¬áá²á·áá»á®ááŒá®áž áááºážáá±á«ááºážáá»á¬ážá
áœá¬ ááŸáááá¯ááºáá«áááºá
á€á¡áá¬á¡á¬ážáá¯á¶ážá á¡áá±ážááŒá®ážááá·áºá¡áá»ááºááŸá¬ á¡áá»áááºá á®ážáá®ážá á¯á á¯áá±á«ááºáž ááá¯ážáá¬áá±á¬áºáááºáž áááºááŸáá¡áá¯á¶ážááŒá¯áá±ááŒá®áž áá±áá¬áááºáá¶áááŸáááá·áº á¡áá»áááºá á®ážáá®ážá¡áá±á¡ááœááºááẠá ááºáááºáááŒááºááŸááá±áá«áááºá á€á¡ááŒá±á¡áá±ááᯠááŒáá·áºáá¬ážáá±á¬ ááŸáá·áºáááºááŸá¯áᯠáá±á«áºáááºá
ááŒáá·áºáá¬ážáá±á¬ churn rate á á¡áááááŒá¿áá¬ááŸá¬ áááºááŸááºáá¬ážáá±á¬ á¡áá»áááºá¡ááá¯ááºážá¡ááŒá¬ážáá áºáá¯á¡ááœááºáž áá±ážáá¬ážáá±á¬ á¡ááœáŸááºážá¡á á¯á¶á¡ááœáẠá¡áá»áááºá á®ážáá®ážá¡á¬ážáá¯á¶ážá¡ááœáẠá¡áááºáááŒááºááŸá¬ááœá±ááŸá¯á¡ááŒááºááŸá¯ááºážááᯠáá±áá»á¬á á±áááºááŒá áºáááºá áá¯á¶ááŸááºá¡á¬ážááŒáá·áº áááºážááẠáá±á¬ááºáá¯á¶ážáá¬áá® ááá¯á·ááá¯áẠáá±á¬ááºáá¯á¶ážáá±á·á¡ááœáẠá¡áá»áááºááŒá¬ážáá¬áááŒá áºáááºá
áá®ááŒá¿áá¬ááᯠáááºááá¯ááŒá±ááŸááºážááá²á áá«ááá±á¬á· ááááá¯á¶áž ááœá±ážáá»ááºááŸá¯áá«á áááºážááẠááŒá±á¬ááºážááŒááºá¡ááœáŸááºážááᯠá¡áá»áááºááŸáá·áºá¡áá»áŸ áá®ážááŒá¬ážá¡ááá¯ááºážáá»á¬ážá¡ááŒá Ạááá¯ááºážááŒá¬ážáááºááŒá áºáááºá ááá¯ááá¯áááºááŸá¬á á¡áá»áá¯á·áá±á¬á¡áá»áááºááŒá¬ážáá¬áááŒááºáááºážááŸá¯áá»á¬ážá áá»áœááºá¯ááºááá¯á·ááẠáááºááŸáááŒá±á¬ááºážááŒááºáá¬ážáá±á¬ á¡ááœáŸááºážááááºážááŒáá·áº á¡áá¯ááºáá¯ááºááŒááºážááᯠá¡ááŒá®ážáááºáá«áááºá ááŒá±á¬ááºážááŒááºá¡ááœáŸááºážá¡áá áºáá áºáá¯ááᯠáááºáá®ážáá«á á¡ááŒá¬ážá¡áá»áááºáá¬ááá áºáá¯ááŒááºáááºážááœá¬ážáááºá áá»áœááºá¯ááºááá¯á·áááºá¡ááŒá¬ážáá áºáá¯ááŸáá·áºá¡ááŒá¬ážáá áºáá¯ááá¯áááºáá®ážáááºá
á€ááŒá±á¬ááºážááŒááºá¡ááœáŸááºážááááºážáá»á¬ážááŸááá°áá¬áá°áá±á¬á¡áá«á áá±ážáá¬ážáá±á¬ááŒá¬ážáá¬áá¡ááœááºážááœááºááŸááá±á¬ ááŒá±á¬ááºážááŒááºá¡ááœáŸááºážááááºážáá»á¬ážááᯠáá»áœááºá¯ááºááá¯á·ááœá±á·ááŸááááºá ááá¯á·ááŒá±á¬áá·áºá áá»áœááºá¯ááºááá¯á·ááẠááá¯áá±áá¬á០á¡áá»áááºá á®ážáá®ážá id ááᯠááœá±ážáááºá
áááºážááẠáá»áœááºá¯ááºááá¯á·áááºááŸááºáá¬ážáá±á¬ááŒá¬ážáá¬áá¡ááœááºáž áá»áááºážááŒááºážáááŸáááá·áºá¡ááá¯ááºážáá»á¬ážááᯠááŒáá·áºááŸá¯áááºáááá¯á¡ááºáá±á¬ááŒá±á¬áá·áº á¡áááºážá¡ááŒá áºáá»á¬ážááᯠáááºáá¬á á±áááºá áá¯á¶ááŸááºá¡á¬ážááŒáá·áºá áá»áœááºá¯ááºááá¯á·ááẠáá±á¬ááºáá¯á¶ážáá¬áá®á¡ááœáẠáá±áá¬ááᯠááœá±ážáá«áá ááá¯á·áá±á¬áẠááááºá¡áá»áááºááŒá¬ážáá¬ááá»á¬ážá¡ááœáẠáá»áœááºá¯ááºááá¯á·ááẠáá±ážááœááºážáá»á¬ážááᯠáá»á±á¬áºááœá¬ážáá«áááºá
á€ááŒá¿áá¬ááá¯ááŒá±ááŸááºážááẠá¡ááŒá¬ážááœá±ážáá»ááºá áá¬áá áºáá¯ááŸááááºá áááºážááẠááá¯áá±á·ááœááºááŒá áºááœá¬ážáá²á·áá±á¬ á¡áá»áááºá á®ážáá®ážáá»á¬ážá áá®ážááŒá¬ážá á®á¡áá¯ááºáá®áá»á¬ážá á¬áááºážááᯠáá±á·áááºááá¯ááºážá¡ááœáẠááááºážáááºážáááºááŒá áºáááºá
ááááºááŒá±ááŸááºážáá»ááºááẠá€ááŒá±ááŸááºážáá»ááºá á¡á¬ážáá¬áá»ááºááŸá¬ áá»áœááºá¯ááºááá¯á·ááẠá¡áá»áááºááŸáá·áºá¡áá»áŸ áá»á±á¬ááºááœááºááœá¬ážááŒááºážáááŸááá±á¬ á¡áá»áááºá á®ážáá®ážá¡áá»ááºá¡áááºááᯠáááºáááœá¬ážááŒááºážáááºááŒá áºáááºá áááºážááá¯á·ááẠá¡áááºáááŒáẠááŸááá±ááŒááŒá®áž áááŒá±á¬ááºážáá²áá«á
á¡á¬ážáááºážáá»ááºááŸá¬ ááá¯ááá¯á·áá±á¬ááŒá±ááŸááºážáá»ááºááẠá¡áá±á¬ááºá¡áááºáá±á¬áºááẠááá¯ááááºáá²ááŒá®áž á¡ááŸá¬ážááŸá¬ááẠááá¯áááºáá²áá±á¬ááŒá±á¬áá·áºááŒá áºáááºá VictoriaMetrics ááẠá€ááŒá±ááŸááºážáá»ááºááᯠááœá±ážáá»ááºáá²á·áááºá áá«á áááá¯ááºážááŸá¬ ááŒá áºáá»ááºáá²á·áá¬á á€ááŒá±ááŸááºážáá»ááºááẠááááºáá¯á¶á á¶ááŸáá·áº ááŸáá¯ááºážááŸááºáá«á áá±á¬ááºážááœááºá áœá¬ áá¯ááºáá±á¬ááºáááºá á¡áááºááŒá±á¬áá·áºááá¯áá±á¬áº á€ááŒá±ááŸááºážáá»ááºááᯠáááŒá±á¬ááºážáá²áá² partition áá áºáá¯á á®ááœáẠá¡áá»áááºá á®ážáá®ážáá áºáá¯á á®ááœáẠáá±áá¬ááᯠááœá¬ážáááºááá¯á¡ááºáá±á¬ááŒá±á¬áá·áºá ááá¯ááá¯áááºááŸá¬ á¡áá»áááºááŒá¬áá¬áááºááŸáá·áºá¡áá»áŸ áá»á±á¬ááºááœááºááœá¬ážááŒááºážáááŸááá±á¬ááŒá±á¬áá·áºááŒá áºáááºá VictoriaMetrics ááẠdisk space áá¯á¶ážá áœá²ááŸá¯á¡ááœáẠá¡áááá¡á¬ážááŒáá·áº optimized ááŒá áºááŒá®áž ááááºá¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ááẠdisk space áá¯á¶ážá áœá²ááŸá¯ááᯠááá¯ááá¯ážá á±áááºá ááá¯á·áá±á¬áº á€á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ááẠdisk space áá¯á¶ážá áœá²ááŸá¯ááᯠáá»áŸá±á¬á·áá»áááºá¡ááœáẠááá¯ááá·áºáá»á±á¬áºáá±á¬ááŒá±á¬áá·áº áááºážááᯠááœá±ážáá»ááºáá²á·áááºá
áá«áá°áááá¯ááá¯ááºáá²á·ááááºá áá¯ááºážáááºáááŒááºážááŸá¬ á€á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ááœáẠáááºááẠáá»á¬ážá
áœá¬ááŒá®ážáá¬ážáá±á¬ á¡áá±á¡ááœááºááᯠááœá±ážáá»ááºááẠááá¯á¡ááºáá±áá±ážáááºá timeseries_ids
ááŒá±á¬ááºážááŒááºá¡ááœáŸááºážááẠá¡áá»áááºááá¯ááºážááŒá¬ážáá¬ážááá·áºá¡áá»áááºááẠáá±áá¬á¡ááœááºá
á€ááŒá¿áá¬ááᯠáá»áœááºá¯ááºááá¯á· áááºááá¯á·ááŒá±ááŸááºážáá²á·ááááºážá áá»áœááºá¯ááºááá¯á·ááẠáááºážááᯠáá°áááºážáááºážáááºážááŒáá·áº ááŒá±ááŸááºážáá²á·ááẠ- ááœá²ááŒá¬ážáááºááŸááºááŸá¯áá
áºáá¯á¡á
á¬áž ááŒá±á¬ááºážááŒááºáá¬ážáá±á¬ á¡ááœáŸááºážáá
áºáá¯á
á®ááœáẠá¡áá»áááºá
á®ážáá®ážá¡ááŸááºá¡áá¬ážáá»á¬ážá
áœá¬ááᯠááááºážáááºážááŒááºážááŒáá·áº áááºážááá¯ááŒá±ááŸááºážáá²á·áááºá á¡á²áá«á áá»áœááºáá±á¬áºááá¯á·ááŸá¬ áá±á¬á·áá
áºáá¯ááŸááááºá label=value
á¡ááŒáááºááá¯ááºážááœáẠááŒá
áºáá±á«áºáááºáá±á¬á á¡áá¯áááºáž áá±á¬áºáá±á¬áºáá»á¬ážáá»á¬ážááᯠááááºážáááºá timeseries_ids
ááŠážáááºážáááºáá±á¬ááºááŸá¯á
áá«á á¥ááá¬áá áºáá¯áá«á ááááºá áá»áœááºá¯ááºááá¯á·ááœáẠN ááá·áºááœááºážááŸá¯áá»á¬áž ááŸááá²á·áá±á¬áºáááºáž ááá¯á¡áá«ááœáẠá¡ááŒá¬ážá¡áá¬á¡á¬ážáá¯á¶ážááŸáá·áº áá°áá®ááá·áº ááŸá±á·áááºáá áºáá¯ááŸááááºá ááááºááá·áºááœááºážááŸá¯á¡ááœááºá áááºááá¯ážááœáẠá¡áá»áááºá á®ážáá®ážá¡áá¯ááºáá®áá»á¬áž áá«áááºáááºá
á€ááá¯á·ááŒá±á¬ááºážááŒááºá¡ááœáŸááºážáá
áááºáááºá
á
áºáá±ážááŒááºážá¡ááŒááºááŸá¯ááºážááᯠ10 áá¡áá ááá¯ážááŒáŸáá·áºááá¯ááºá
á±áá²á·áááºá áááºážááẠáá»áœááºá¯ááºááá¯á·á¡á¬áž áááºááŸáºá¡ááœáẠááŸááºáá¬ááºáá¯á¶ážá
áœá²ááŸá¯ááᯠáá»áŸá±á¬á·áá»ááá¯ááºá
á±áá±á¬ááŒá±á¬áá·áº ááᯠáá»áœááºá¯ááºááá¯á·ááẠá
á¬ááŒá±á¬ááºážááᯠááááºážáááºážáá¬ážáááºá label=value
áááºááŸáºááœáẠáá
áºááŒáááºáᬠN ááŒáááºááœá²á Kubernetes ááẠááá¯áá±áá¬ááœáẠááœááºážáá»ááẠááŸá
áºáááºááá·áº áááºá áááºáá»á¬ážááŸáá·áº á¡ááœáŸááºážáá»á¬ážááœáẠááŸááºáá»á¬ážáá±á¬ ááá¯ááºážáá»á¬ážááᯠááááºážáááºážáá«á á€á
á¬ááŒá±á¬ááºážááẠááŒá®ážáá¬ážááá¯ááºáááºá
ááŒá±á¬ááºážááŒááºá¡ááœáŸááºážáá
áºáá¯ááœáẠááŸá¬ááœá±ááŸá¯ááᯠá¡ááŸáááºááŒáŸáá·áºáááºá¡ááœáẠáá±á¬ááºáááºááœá±ážáá»ááºá
áá¬áá
áºáá¯ááŸá¬ sharding ááŒá
áºáááºá áá
áºáá¯á¡á
á¬áž áá
áºáá¯á¡á
á¬áž ááŒá±á¬ááºážááŒááºááŸááºáá¬ážáá±á¬ á¡ááœáŸááºážáá»á¬ážá
áœá¬ááᯠáááºáá®ážááŒááºážááŸáá·áº áááºážááá¯á·á¡ááŒá¬áž áá±áá¬áá»á¬ážááᯠáá±á¬á·ááŒáá·áº ááœá²áá±áá±ážááŒááºážá áá«á á¡á
á¯á¶áá«áá²á key=value
áá±ááœá±ážááœá±á·á ááá¯ááá¯áááºááŸá¬á áá»áœááºá¯ááºááá¯á·ááẠáááá¯áááºáá¬áá»á¬ážá
áœá¬ááœáẠá¡ááŒáá¯ááºáá±ážááŒááºážááá¯ááºááá·áº áá®ážááŒá¬ážááŒá±á¬ááºážááŒááºááŸááºáá¬ážáá±á¬ á¡ááœáŸááºážááááºážáá»á¬ážá
áœá¬ááᯠáá»áœááºá¯ááºááá¯á·áááŸááá«áááºá ááááºá¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯áá»á¬ážááẠáá
áºáá¯áááºážáá±á¬ áááá¯áááºáá¬áá¯ááºááœááºáᬠáááºáááºááœáá·áºááŒá¯áááºá ááá¯ááá¯áááºááŸá¬ core áá
áºáá¯ááœááºáᬠáá±áá¬ááᯠá
áááºááºáááºááŒááºáž ááŒá
áºáááºá á€ááŒá±ááŸááºážáá»ááºááẠClickHouse ááŸá
áºáááºááá·áºá¡ááá¯ááºáž cores áá»á¬ážá
áœá¬ááŸááá±áá¬áá»á¬ážááᯠáá
áºááŒáá¯ááºáááºá
áááºááºáááºááá¯ááºá
á±áá«áááºá áá«á áá»áœááºáá±á¬áºááá¯á· á¡áá±á¬ááºá¡áááºáá±á¬áºááá¯á· á
á®á
ááºáá¬ážáá¬áá«á
ááᯠáá»áœááºá¯ááºááá¯á·áááá¯ážáá»á¬ážáᶠááŒááºááœá¬ážááŒá
áá¯á· - áááºážáá¯á¶áá¯ááºáá±á¬ááºáá»ááºááá¯á· timeseries_ids
. áááºááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ááœá± ááŸáááá¯ááºááá²ááá¯áá¬ááᯠáá¯á¶ážáááºááŒáá·áºáá¡á±á¬ááºá á€áá¯ááºáá±á¬ááºáá»ááºááẠááá·áºá¡á¬áž ááŸá¬ááœá±ááá¯ááºá
á±áá«áááºá timeseries_ids
áá±ážáá¬ážáá±á¬ set áá
áºáá¯á¡ááœáẠlabel=value
.
áááááœá±ážáá»ááºááŸá¯ááŸá¬ áá¯á¶á¡áá±á¬á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ááŒá
áºáááºá á¡ááá¯ááºááŸá
áºáá¯á á€ááœááºáá»áœááºá¯ááºááá¯á·ááẠfunction input ááá¯áááŸááááºá intersectInts
ááŸá
áºáá»áẠ- a
О b
. á¡ááœááºááœááºá á€á¡áá»ááºáá»á¬ážáá¯á¶áᬠáá»áœááºá¯ááºááá¯á·áᶠááŒááºááœá¬ážááá·áºáááºá
áá¯á¶á¡áá±á¬ á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯áá
áºáá¯ááẠá€áá²á·ááá¯á·ááŒá
áºáááºá áá»áœááºá¯ááºááá¯á·ááẠá¡áá»ááºáá»á¬ážá០áááºááá¯ážá¡á¬ážáá¯á¶ážááᯠáá»á±á¬áºááœááºáá«áááºá a
, áá® loop áá²ááŸá¬áá»áá±á¬áºááá¯á·á¡áá»ááºááááºááá¯ážáá»á¬ážá¡á¬ážáá¯á¶ážááá¯ááŒááºáááºážááœá¬ážáá«á b
. ááŒá®ážáá±á¬á· áá«ááá¯á·á áá°ááá¯á·ááᯠááŸáá¯ááºážááŸááºáááºá ááá¯ááºááá¯ááºááẠáááºážáá¯á¶ááá¯ááœá±á·ááŒá®á ááááºážáááºážáá«á result
.
á¡á¬ážáááºážáá»ááºááœá±á áá¬ááœá±áá²á Quadratic complexity ááẠáááºážáá¡áááá¡á¬ážáááºážáá»ááºááŒá
áºáááºá á¥ááá¬á¡á¬ážááŒáá·áºá ááá·áºá¡ááá¯ááºážá¡áá¬áá»á¬áž ááŸá®ážááŒááºáá¬ážáá»áŸááºá a
О b
áá
áºááŒáááºáá»áŸáẠáá
áºáááºážá ááá¯á·áá±á¬áẠá€áá¯ááºáá±á¬ááºáá»ááºááẠááá·áºá¡á¬áž áááºááá·áºá¡áá«áá»áŸ á¡ááŒá±ááŒááºáá±ážáááºááá¯ááºáá«á á¡áááºááŒá±á¬áá·áºááá¯áá±á¬áº áááºážááẠáá±ááºáá®ááœááºááŒá°áá¬áá»á¬ážá¡ááœááºááẠáá
áºááá®áá»á¶ áááºááá²áá²ááŒá¯áá¯ááºááẠááá¯á¡ááºáá±á¬ááŒá±á¬áá·áºááŒá
áºáááºá
áá¯ááá á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ááŸá¬ ááŒá±áá¯á¶áá±á«áºááœáẠá¡ááŒá±áá¶áááºá ááŒá±áá¯á¶áááºáá®ážáááºá áá»áœááºá¯ááºááá¯á·ááẠá¡áá»ááºá០áááºááá¯ážá¡á¬ážáá¯á¶ážááᯠá€ááŒá±áá¯á¶ááœáẠááá·áºáá¬ážáááºá a
. ááá¯á·áá±á¬ááºáá®ážááŒá¬ážá¡ááá¯ááºážáá
áºáá¯ááœááºá¡áá»ááºááá¯ááŒááºáá«á b
. ááŒá®ážáá±á¬á· áá®áááºááá¯ážá á¡áá»ááºááá± áá¯ááºááá¯áẠá
á
áºáá±ážáááºá b
ááŒá±áá¯á¶áá²ááŸá¬á ááŸááá»áŸáẠááááºááá¯á· ááá·áºáá«á
á¡áá»áá¯ážáá»á±ážáá°ážááœá±á áá¬ááœá±áá²á á¡á¬ážáá¬áá»ááºááŸá¬ linear complexity áá¬ááŒá áºáááºá ááá¯ááá¯áááºááŸá¬á áá¯ááºáá±á¬ááºáá»ááºááẠááá¯ááŒá®ážáá±á¬ á¡áá»ááºáá»á¬ážá¡ááœáẠááá¯ááá¯ááŒááºáááºá áœá¬ áá¯ááºáá±á¬ááºááá¯ááºáááºááŒá áºáááºá á¡ááœááºá¡á á¬áž áá áºáááºážááœá²á¡ááœááºá á€áá¯ááºáá±á¬ááºáá»ááºááẠááááºáá¯ááºáá±á¬ááºáá»ááºá ááá®áá»á¶áááºááŒááºážáá»á¬ážááŸáá·áº ááá·áºáá»ááºááá·áºá¡áá±ááŒáá·áº á€áá¯ááºáá±á¬ááºáá»ááºááẠá¡ááŒáááºáá±á«ááºáž 2 áááºážááœáẠáá¯ááºáá±á¬ááºáááºááŒá áºáááºá
á¡á¬ážáááºážáá»ááºááŸá¬ á€ááŒá±áá¯á¶ááá¯áááºáá®ážááẠá€áá¯ááºáá±á¬ááºáá»ááºááẠáááºááá¯áá®ááá¯ááá¯á¡ááºáááºá
áá¯áááá¡á¬ážáááºážáá»ááºááŸá¬ áááºááºáá¯ááºááŒááºážá¡ááœáẠááŒá®ážáá¬ážááá·áºá¡áá¬ááŒá áºáááºá áá®á¡á¬ážáááºážáá»ááºá ááááºááááá¬áá«áá°ážá áá«ááá¯á·á¡ááœááºááá±á¬á· ááááºááááá¬áá«áá°ážá áá«ááŒá±á¬áá·áº áááááá¯ááºážááŸá¬ VictoriaMetrics ááŸá¬ áááºážáá¯á¶ááᯠááŒá±áá¯á¶áá áºáá¯ááá±áá áºááá·áº á¡áá±á¬ááºá¡áááºáá±á¬áºáá²á·áááºá ááá¯á·áá±á¬áº ááá¯á·áá±á¬áẠáááá¯ááá¯ááºážááœá²ááŒááºážááẠáááºááááá¯áááºáá¬á¡áá»áááºááᯠááŒá±áá¯á¶ááá¯á·á á¬áá±ážááŒá®áž á€ááŒá±áá¯á¶ááœáẠáááºááá¯ážáá áºáá¯ááŸááá±ááŒááºážááŸááááŸá á á áºáá±ážááŒááºážááᯠááŒááá²á·áááºá
áá®áá±áá¬ááœá±ááŸá¬ CPU á¡áá»áááºááᯠáá¬ááŒá±á¬áá·áºááŒá¯ááºážáá¬áá²á Go ááẠá€ááá¯ááºážáá»á¬ážááœáẠhashing áá¯ááºáá±á¬ááºáá»ááºááᯠáá¯ááºáá±á¬ááºáá±á¬ááŒá±á¬áá·áºááŒá áºáááºá ááá¯ááá¯áááºááŸá¬á áááºážááẠHashMap ááŸááá±ážáá¬ážááá·áºá¡ááœáŸááºážáá áºáá¯ááœáẠáááºážááá¯áááºáá±á¬ááºááá¯ááºááẠáá®ážá hash ááá¯ááœááºáá»ááºáááºá hash ááœááºáá»ááºááŸá¯áá¯ááºáá±á¬ááºáá»ááºááᯠáááºááááºážáá¬ááá¯á áá¹ááá·áºá¡ááœááºáž ááŒá®ážááŒá±á¬ááºáááºá VictoriaMetrics á¡ááœáẠáá«á ááŸá±ážááœá±ážáá«áááºá
á€ááá
á¹á
á¡ááœáẠá¡áá°ážááá·áºáá»á±á¬áºáá±á¬ bitset áá
áºáá¯ááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºááẠáá¯á¶ážááŒááºáá²á·áááºá á€áááºááŸá¬ ááᯠááŸá
áºáá»ááºá áááºážáá¯á¶áá¯á¶ááŒá
áºáááºá á€ááœááºáá»áœááºá¯ááºááá¯á·ááẠbitset áá
áºáá¯ááá¯áááºáá®ážáááºá áááá¡áá»ááºá០á¡á
áááºá¡ááá¯ááºážáá»á¬ážááᯠáááºážááá¯á·ááá·áºáááºá ááá¯á·áá±á¬áẠáá¯áááá¡áá»ááºááœáẠá€ááŒááºá
ááºáá»á¬áž áá«áááºááŸá¯ááᯠá
á
áºáá±ážáá«á ááááºááœááºáááºážááá¯á·ááá¯ááá·áºáá«á ááá¯ááá¯áááºááŸá¬á áááºážáááºááááºá¥ááá¬ááŸáá·áºáá®ážáá«ážááá°áá«á á€áá±áá¬ááœáẠáá
áºáá¯áááºážáá±á¬á¡áá»ááºááŸá¬ áá»áœááºá¯ááºááá¯á·ááẠááŒá±áá¯á¶ááá¯á·áááºáá±á¬ááºááœáá·áºááᯠá
áááºááŒáá¯ááºáá¯ááºáá±á¬ááºááŸá¯áá»á¬ážááŒáá·áº á¡á
á¬ážááá¯ážááá¯ááºááŒááºážááŒá
áºáááºá add
О has
.
ááááá áºáá»ááºááœááºá ááááºá á á¶ááŒá±áá¯á¶ááᯠááá¯áá±áá¬ááœááºá¡áá¯á¶ážááŒá¯áá²á·áá»áŸáẠáááºážááẠááá¯ááá¯ááŸá±ážááœá±ážááœá¬ážáá¯á¶ááááºá ááá¯á·áá±á¬áẠá¡ááŒá¬ážáá¯ááºáá±á¬ááºáá»ááºá¡áá»áá¯á·ááᯠáá±á«áºáá±á«áºáá±á¬áºáááºáž áááá¯ááá¯ááºážááŒá¯áá¯ááºááŒááºážá០á€á¡áá¬ááẠVictoriaMetrics ááá á¹á ááœáẠá á¶ááŒá±áá¯á¶ááẠ10 áááá¯ááá¯ááŒááºáááºááŒá±á¬ááºážááŒááááºá
ááá¯á·á¡ááŒááºá áááºážááẠááŒá±áá¯á¶á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ááŸáá·áº ááŸáá¯ááºážááŸááºáá«á áá»á¬ážá áœá¬áááºážáá±á¬ memory ááá¯á¡áá¯á¶ážááŒá¯áááºá á¡áááºááŒá±á¬áá·áºááá¯áá±á¬áº áá»áœááºá¯ááºááá¯á·ááẠááŸá áºááá¯ááºáááºááá¯ážáá»á¬ážá¡á á¬áž á€áá±áá¬ááœáẠáá áºáá»á¬ážááᯠááááºážáááºážáá±áá±á¬ááŒá±á¬áá·áºááŒá áºáááºá
á€á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯á á¡á¬ážáááºážáá»ááºááŸá¬ á¡áá±ážá¡ááœá²ááá¯ááºá áááá¬áááºááŸá¬ážáááºááá¯ááºáá±á
áá°á¡áá»á¬ážáááááá¬ážááááá¯ááºáá±á¬ áá±á¬ááºáááºá¡á¬ážáááºážáá»ááºáá áºáá¯ááŸá¬ á€á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ááẠá¡áá»áá¯á·ááá á¹á áá»á¬ážááœáẠáá±á¬ááºážá áœá¬á¡áá¯ááºááá¯ááºááá¯ááºáá±á ááá¯ááá¯áááºááŸá¬ VictoriaMetrics time series ids ááááºážáá¯á¶ááá á¹á á¡ááœááºá áááºážááᯠáá®ážááŒá¬ážááá á¹á áá áºáá¯á¡ááœáẠá¡áá±á¬ááºážáá¯á¶ážááŒá áºá¡á±á¬áẠááŒá¯áá¯ááºáá¬ážáááºá áááºážááẠááá á¹á ááá¯ááºážá¡ááœáẠááá·áºáá»á±á¬áºáááºáᯠáááá¯ááá¯áá«á áááºážááᯠááŸá¬ážááœááºážá áœá¬á¡áá¯á¶ážááŒá¯áá«á áá»áœááºá¯ááºááá¯á·ááẠá áœááºážáá±á¬ááºááẠááá¯ážáá¬áááºááá¯ááºáá±á¬áºáááºáž ááŸááºáá¬ááºáá»áá¯á·ááœááºážááŸá¯ááŸáá·áº á áœááºážáá±á¬ááºááẠááŸá±ážááœá±ážááœá¬ážáááºááŒá áºáááºá
áá®ááœá²á·á
ááºážáá¯á¶ááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºááá¯á· á
ááºážá
á¬ážááŒáá·áºáá¡á±á¬ááºá áááºááŒáá·áºááŸá¯ááá¯áá«áá áááºážááẠááá¯áá«á¡ááœááºážááŸá VictoriaMetrics á¡áááºážá¡ááŒá
áºáá»á¬ážááœáẠáááºááŸááááºá timeseries_id
64-bit áááºááá¯ážáá
áºáá¯ááŒá
áºááŒá®áž ááá 32 bits ááẠá¡ááŒá±áá¶á¡á¬ážááŒáá·áº á¡áááºáááŒááºááŒá
áºááŒá®áž áá±á¬ááºáá¯á¶áž 32 bits áᬠááŒá±á¬ááºážáá²áá«áááºá
á€áá±áá¬ááœá²á·á ááºážáá¯á¶ááẠáá áºááºáá±á«áºááœáẠááááºážáááºážáá¬ážááŒááºážáááŸááá«á áááºážááẠááŸááºáá¬ááºááœááºáᬠáá¯ááºáá±á¬ááºáááºá
áá«ááá±á¬á· áá°á·áá²á· API áá«á ááááºááŒá®ážáááŸá¯ááºááœá±ážáá«áá°ážá API ááᯠVictoriaMetrics á¡áá¯á¶ážááŒá¯ááŒááºážá áá®ážááŒá¬ážá¥ááá¬áá áºáá¯ááŸáá·áº á¡á¶áááºááœááºáá»ááŒá áºá á±áááºá ááá¯ááá¯áááºááŸá¬ á€áá±áá¬ááœáẠáááá¯á¡ááºáá±á¬ áá¯ááºáá±á¬ááºáá»ááºáá»á¬áž áááŸááá«á á€áááºááŸá¬ VictoriaMetrics á០á¡áá°ážááááºá¡áá¯á¶ážááŒá¯áá¬ážáá±á¬ áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááŒá áºáááºá
áá¯ááºáá±á¬ááºáá»ááºááœá±ááŸááááºá add
áááºááá¯ážá¡áá
áºáá»á¬áž áááºáá±á¬ááºážáááºá function áá
áºáá¯ááŸááá«áááºá has
áááºááá¯ážá¡áá
áºáá»á¬ážááᯠá
á
áºáá±ážáá±ážáááºá ááŒá®ážáá±á¬á· function áá
áºáá¯ááŸááááºá del
áááºááá¯ážáá»á¬ážááá¯áááºááŸá¬ážáá±ážáááºá á¡áá°á¡áá®áá±ážááá·áºáá¯ááºáá±á¬ááºáá»ááºáá
áºáá¯ááŸááááºá len
áááºááŸááºá¡ááœááºá¡á
á¬ážááᯠááŒááºáá±ážáá±á¬á áá¯ááºáá±á¬ááºáá»áẠclone
clones ááœá±á¡áá»á¬ážááŒá®ážáá«á ááŸáá·áº function ááᯠappendto
á€á¡ááœá²ááᯠá¡áá»ááºá¡ááŒá
ẠááŒá±á¬ááºážáááºá timeseries_ids
.
á€áá±áá¬ááœá²á·á ááºážáá¯á¶á¡á¬áž á¡áá±á¬ááºá¡áááºáá±á¬áºáá¯á¶ááŸá¬ á€á¡áá¬ááŒá áºáááºá set ááœáẠelement ááŸá áºáá¯ááŸááááºá
-
ItemsCount
á¡á á¯áá áºáá¯ááŸá ááŒááºá ááºá¡áá±á¡ááœááºááᯠá¡ááŒááºááŒááºááá¯á·ááẠá¡áá±á¬ááºá¡áá°á¡ááœááºáá áºáá¯ááŒá áºáááºá á€á¡áááºá¡ááœááºááá«áá² áá¯ááºáá±á¬ááºááá¯ááºáá±á¬áºáááºáž VictoriaMetrics ááẠáááºážá algorithms á¡ááœááºážááŸá bitset á¡ááŸááºááᯠáááŒá¬áá áá±ážááŒááºážáá±á¬ááŒá±á¬áá·áº á€áá±áá¬ááœáẠááá·áºááœááºážááááºááŒá áºáááºá -
áá¯áááá¡ááœááºááá±á¬á·
buckets
. áá«á ááœá²á·á ááºážáá¯á¶áá²á á¡ááá¯ááºážáá«ábucket32
. á á®á á¥áºá ááá¯ážááá¯ááºhi
áááºááœááºážá áááºážááá¯á·ááẠá¡ááẠ32 bits áá»á¬ážááŒá áºáááºá - ááŸá áºáá»ááºáb16his
Оbuckets
ááŸbucket16
á¡áá±á¬ááºá¡áŠáá»á¬ážá
16-bit áááºáá±á¬ááºááŸá¯á áá¯áááá¡ááá¯ááºážá ááááºáááºáž 64 áá áºáá»á¬ážááᯠá€áá±áá¬ááœáẠááááºážáááºážáá¬ážáááºá á€áá±áá¬ááœáẠááá¯ááºáá áºáá¯á á®á á¡á±á¬áẠ16 bits á¡ááœáẠááááºážáááºážáá¬ážáááºá
Bucket64
array áá
áºáá¯áá«áááºáá«áááºá uint64
. á€ááááºážáá±áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯á á¡áá»á¬ážááᯠááœááºáá»ááºáááºá áá
áºáá¯áá²ááŸá¬ bucket16
á¡áá»á¬ážáá¯á¶ážááááºážáááºážáá¬ážááá¯ááºáááºá 2^16=65536
áááºážáááºáž áá«ááᯠ8 áá²á· ááœá²ááẠ8 áá®ááá¯ááá¯ááºáá«á 8 áá²á· áááºááœá²ááẠ1000 ááŒá
áºáá«áááºá uint64
á¡áááá¹áá«ááºá á¡á²áá«áá«áá²á Bucket16
á€áááºááŸá¬ áá»áœááºá¯ááºááá¯á·á 8 áá®ááá¯ááá¯ááºááœá²á·á
ááºážáá¯á¶ááŒá
áºáááºá
áááºááá¯ážá¡áá áºáá áºáá¯ááᯠáá±á«ááºážááá·áºááŒááºážá¡ááœáẠá€ááœá²á·á ááºážáá¯á¶á áááºážáááºážáá»á¬ážáá²á០áá áºáá¯ááᯠáááºáá²á·ááá¯á· á¡áá±á¬ááºá¡áááºáá±á¬áºáááºááᯠááŒáá·áºááŒáá«á áá¯á·á
áááºážáááºá¡á¬ážáá¯á¶ážááŸáá·áºá
áááºáááºá uint64
á¡áááá¹áá«ááºáá»á¬áž áá»áœááºá¯ááºááá¯á·ááẠá¡ááẠ32 bits ááá¯ááœááºáááºá á¡á±á¬áẠ32 bits ááá¯ááœááºáááºá á¡á¬ážáá¯á¶ážááŒááºáááºážááŒáá¡á±á¬áẠbuckets
. áá¯á¶ážáá
áºáá¯á
á®ááŸá ááááºáááºáž 32 bits áá»á¬ážááᯠáááºááá¯ážáááºááá·áºáá¬ážáááºááŸáá·áº ááŸáá¯ááºážááŸááºáá«áááºá ááá¯ááºáá®áá«á function ááá¯áá±á«áºáááºá add
ááœá²á·á
ááºážáá¯á¶ b32 ááœáẠbuckets
. ááŒá®ážáá»áŸáẠá¡á±á¬áẠ32 bits áá»á¬ážááᯠááá¯áá±áá¬ááœáẠááá·áºáá«á á¡áááºááá¯á· ááŒááºáá¬áááºá true
ááá¯ááá¯áá¬á á¡á²áá®áááºááá¯ážááᯠáá«ááá¯á·á¡á²áá®ááŸá¬ áááºááá·áºááá¯ááºáá¬áá²á· áá«ááá¯á·ááŸá¬ á¡á²áá®ááá¯áááºááá¯ážáááŸááá°ážá ááŒááºáá¬ááẠfalse
áá«ááá¯ááẠá¡á²áá®ááᯠá¡áááá¹áá«ááºááŸáááŒá®ážáá¬ážáá«á ááá¯á·áá±á¬áẠáá»áœááºá¯ááºááá¯á·ááẠááœá²á·á
ááºážáá¯á¶ááŸá ááŒááºá
ááºá¡áá±á¡ááœááºááᯠááá¯ážá
á±áááºá
áááºááá¯á¡ááºáá¬ááᯠááŸá¬áááœá±á·ááẠbucket
ááá¯á¡ááºáá±á¬ hi-value ááŒáá·áºá ááá¯á·áá±á¬áẠfunction ááá¯áá±á«áºáááºá addAlloc
á¡áá
áºááœááºááŸáááá·áºá bucket
bucket áááºáá±á¬ááºáá¯á¶ááá¯á·ááá·áºáá«á
áá«á function ááá¯á¡áá±á¬ááºá¡áááºáá±á¬áºááŒááºážááŒá
áºáá«áááºá b32.add
. áááºážáááºááááºá¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ááŸáá·áºáááºáá°áááºá áá»áœááºá¯ááºááá¯á·ááẠá¡áá°ážááŒá¬ážáá¯á¶áž 16 bits á á¡áááá·áºáá¯á¶áž 16 bits ááᯠááœááºáá»ááºáá«áááºá
ááá¯á·áá±á¬áẠá¡ááẠ16 bits á¡á¬ážáá¯á¶ážááᯠááŒááºááœá¬ážáá«á ááœá²ááœá±ááœá±á·áááºá ááá¯ááºáá®ááŸá¯ááŸááá«áá áá»áœááºá¯ááºááá¯á·ááẠáá±á¬ááºá
á¬áá»ááºááŸá¬ááœáẠááá·áºááœááºážá
ááºážá
á¬ážáááá·áº áááºážáááºážááᯠáá±á«áºáááºá bucket16
.
á€áá±áá¬ááœáẠá¡áááá·áºáá¯á¶ážá¡ááá·áºááŒá
áºáááºá áááºááá¯ááºááá»áŸ á¡áá±á¬ááºážáá¯á¶ážááŒá
áºá¡á±á¬áẠáá¯ááºááá·áºáááºá áá»áœááºáá±á¬áºááá¯á·ááœááºáááºá uint64
slice bit áá²á· id áááºááá¯áž bitmask
. áááºážááẠá€áá
áºááá«áááºááŸá¯ááᯠá
á
áºáá±ážááẠááá¯á·ááá¯áẠáááºááŸááºááẠáá±ážáá¬ážááá·áº 64-áá
áºáááºááá¯ážá¡ááœáẠáá»ááºááŸá¬áá¯á¶ážáá
áºáá¯ááŒá
áºáááºá á€áá
áºááᯠáááºááŸááºááŒá®áž áááºážááᯠáááºááŸááºááŒá®áž ááŒááºáááºáá±á¬ááºááŸáááŒááºáž ááŸáá áááŸá á
á
áºáá±ážááẠáá»áœááºá¯ááºááá¯á· á
á
áºáá±ážáá«áááºá áááºážááẠáá»áœááºá¯ááºááá¯á·á á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ááŒá
áºááŒá®ážá áá»áœááºá¯ááºááá¯á·á¡á¬áž ááá¬ážááá¯ážáá»ááŒá±áá¯á¶áá»á¬ážááŸáá·áº ááŸáá¯ááºážááŸááºáá«á á¡áá»áááºá
á®ážáá®ážáá»á¬ážá á¡áá¯ááºáá®áá¬áá»á¬ážááᯠááŒááºáá±á¬ááºááŒááºážá áá¯ááºáá±á¬ááºáá»ááºááᯠáá á á¡ááŸáááºááŒáŸáá·áºááá¯ááºá
á±áá«áááºá
á€ááá¯ááá¯áá±á¬ááºážááœááºá¡á±á¬ááºááŒá¯áá¯ááºááŒááºážá¡ááŒááºá VictoriaMetrics ááœáẠá¡ááŒá¬ážáá±á¬ optimization áá»á¬ážá áœá¬ááŸááááºá áá¯ááºáá¯ááºááŸá¯ááœáẠáá¯ááºááᯠáááá¯ááá¯ááºážááŒá¯áá¯ááºááŒá®ážáá±á¬ááºááœáẠá¡ááá¯áá« ááá¯ááá¯áá±á¬ááºážááœááºá¡á±á¬áẠáá¯ááºáá±á¬ááºááŸá¯á¡áá»á¬ážá á¯ááᯠá¡ááŒá±á¬ááºážááŒáá»ááºáá áºáá¯ááŒáá·áº ááá·áºááœááºážáá¬ážáááºá
á€áááºááŸá¬ ááá¯ááá¯áá±á¬ááºážááœááºá¡á±á¬ááºááŒá¯áá¯ááºááŒááºážá á¡áááá ááºážáá»ááºážááŒá áºááẠ- á€áá±áá¬ááœáẠáá áºááá¯á·áá±áááºááá¯ááºáᯠáá°ááᬠááá¯ááá¯áá±á¬ááºážááœááºá¡á±á¬ááºááŒá¯áá¯ááºááŒááºážá¡á¬áž áááá·áºáá«ááŸáá·áºá ááá¯ááá¯áá±á¬ááºážááœááºá¡á±á¬ááºááŒá¯áá¯ááºááŒááºážááẠáá»á¬ážáá±á¬á¡á¬ážááŒáá·áº áá¯ááºáá¡áááºá¡ááœá±ážááᯠáá»áááºážá á±áááºá ááá¯á·ááŒá±á¬áá·áºá áááºážááẠáááá¯ááá¯ááºážááœá²ááŒá®ážááŸáᬠááá¯áá±á¬ááºážá¡á±á¬áẠááŒá¯ááŒááºááá·áºááŒá®áž áá¯ááºáá¯ááºááŸá¯ááœáẠááá¯áá±á¬ááºážáááºá ááá¯á·ááŒá±á¬áá·áº áááºážááẠá¡á á áºá¡ááŸááºáá±áá¬ááŒá áºáááºá áááºáá°áááᯠá áááºáááºá á¬ážáá«á VictoriaMetrics á¡áááºážá¡ááŒá áºáá¯ááºááᯠááŒáá·áºááŸá¯ááá¯ááºááŒá®áž áááºážááá¯á·ááœááºááŸááá±á¬ á¡ááŒá¬áž ááá¯ááá¯áá±á¬ááºážááœááºá¡á±á¬áẠáá¯ááºáá±á¬ááºááŸá¯áá»á¬ážááᯠáá±á·áá¬ááá¯ááºáá«áááºá
bitset áá²á· áááºáááºááŒá®áž áá±ážá áá¬ááŸááááºá C++ vector bool á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯á optimized bitset ááŸáá·áº á¡ááœááºáááºáá°áááºá á¡á²áá®ááá± á¡áá±á¬ááºá¡áááºáá±á¬áºáá²á·áá¬áá¬ážá
ááá¯ááºáá°ážá á¡á²áá®ááá±ááá¯ááºáá°ážá ဠbitset ááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºáá±á¬á¡áá« VictoriaMetrics ááœááºá¡áá¯á¶ážááŒá¯ááá·áº ဠids á¡ááŒáááºáá±áá»á¬ážá ááœá²á·á ááºážáá¯á¶ááᯠááááŸáááŒááºážááŒáá·áº áá»áœááºá¯ááºá¡á¬áž áááºážááœáŸááºáá²á·áá«áááºá áá°ááá¯á·áá²á· áááºáá±á¬ááºáá¯á¶ááá±á¬á· á¡áá±á«áºá 32 bits ááœá±áᬠá¡ááŒá±áá¶á¡á¬ážááŒáá·áº áááŒá²áá«áá°ážá á¡á±á¬ááºááá¯ááºáž 32 bits ááẠááŒá±á¬ááºážáá²ááá¯ááºáááºá á¡áááºážáááºáááá·áºáá±á áááŒá¬ááááŒá±á¬ááºážáá²ááá¯ááºáááºá ááá¯á·ááŒá±á¬áá·áº á€á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ááẠá€áá±áá¬ááœá²á·á ááºážáá¯á¶á¡ááœáẠá¡áá°ážááá·áºáá»á±á¬áºáááºá áá«ááááá±á¬áẠC++ á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ááẠáá±áá°áá»ááá á¹á á¡ááœáẠá¡áá±á¬ááºážáá¯á¶ážááŒá áºáááºá áá±áá°áá»ááá á¹á á¡ááœáẠá¡áá±á¬ááºážáá¯á¶ážááŒá áºá¡á±á¬ááºáá¯ááºáá«áá áááºážááẠáá®ážááŒá¬ážááá á¹á áááºáá áºáá¯á¡ááœáẠá¡ááá·áºáá»á±á¬áºáá¯á¶ážááŒá áºáááºááá¯ááºáᯠááá¯ááá¯áááºá
Alexey Milovid á á¡á á®áááºáá¶á á¬ááᯠááŒáá·áºááŸá¯áááºáááºáž á¡ááŒá¶ááŒá¯á¡ááºáá«áááºá ááœááºáá²á·ááá·áºáá áºáááá·áºá áááá»áá±á¬ á¡áá°ážááŒá¯ááŸá¯áá»á¬ážá¡ááœáẠClickHouse ááœáẠááá¯ááá¯áá±á¬ááºážááœááºá¡á±á¬ááºááŒá¯áá¯ááºááŒááºážá¡ááŒá±á¬ááºáž ááŒá±á¬áá²á·áááºá áá±áá°áá»á¡ááŒá±á¡áá±ááœááºá C++ á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ ááá¯á·ááá¯áẠá¡ááŒá¬ážá¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯á¡áá»áá¯á·ááẠáá±ážáá¯á¶áá áºáá¯á¶ááœáẠáá»ááºážáá»áŸá¡á¬ážááŒáá·áº áá±á¬ááºážááœááºá áœá¬á¡áá¯ááºáá¯ááºááẠá¡á¶áááºááœááºáá»ááŒá áºá á±áááºáᯠáá°áááŒá±á¬áááºá ááááºáááºáž 32 bits á¡áá»á¬ážá á¯ááẠá¡áááºáááŒááºááŒá áºáá±ááŒá±á¬ááºáž áá»áœááºá¯ááºááá¯á·áááá±á¬ áá»áœááºá¯ááºááá¯á·áá²á·ááá¯á· á¡ááááá¬ááá¯ááºáᬠá¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ááẠááá¯ážááœá¬ážááá¯ááºáá«áááºá
áá»áœááºáá±á¬á·áºááŸá¬ áá¯ááááá±ážááœááºážáá áºáá¯ááŸááááºá InfluxDB á á¡ááŒá±áá¶ááœá¬ááŒá¬ážáá»ááºáá¬áž á¡áááºáááºážá
á¡ááŒá±áá¶ááœá²ááŒá¬ážááŸá¯ááœá± á¡áá»á¬ážááŒá®ážááŸááá«áááºá á áœááºážáá±á¬ááºáááºááŸáá·áº ááŸááºáá¬ááºáá¯á¶ážá áœá²ááŸá¯ááá¯ááºáᬠáááºááŸááºáá»ááºáá»á¬ážááœáẠInfluxDB ááẠá ááºážáááºááŸá¯áá»á¬ážááœáẠááŒáá·áºáá¬ážáá±á¬ cardinality time series á¡ááœáẠááŸááºáá¬ááºáá¯á¶ážá áœá²ááŸá¯ 10 á ááá¯ááá¯ááŒáááẠá¥ááá¬á¡á¬ážááŒáá·áºá VictoriaMetrics ááẠáááºááŒáœáá±á¬á¡áááºážáá áºáááºážáá»áŸáẠ1 GB ááá¯á á¬ážáá¯á¶ážááŒá®áž InfluxDB ááẠ10 GB ááá¯á á¬ážáá¯á¶ážáááºá á¡á²áá«á ááŒá®ážáá¬ážáá²á· ááŒá¬ážáá¬ážáá»ááºáá«áá²á
áá¯áááá¡ááŒá±áá¶ááŒá¬ážáá¬ážáá»ááºááŸá¬ InfluxDB ááœáẠáá°ážáááºážáá±á¬áá±ážááŒááºážááŸá¯áá¬áá¬á
áá¬ážáá»á¬áž - Flux ááŸáá·áº InfluxQL ááŸááááºá áááºážááá¯á·ááẠá¡áá»áááºá
á®ážáá®ážáá»á¬ážááŸáá·áº ááŸáá¯ááºážááŸááºáá«á á¡ááœááºá¡áááºááŒá±ááŸá¯áááŸááá«á
áá±á¬ááºáááºááŒá¬ážáá¬ážáá»ááºáá áºáá¯ááá±á¬á· InfluxDB ááœáẠááá¯ááºážáá áºáá¯á á®ááẠááá°áá®áá±á¬ tag á¡á á¯á¶ááŒáá·áº áááºáááºáá»á¬ážá áœá¬ááᯠááááºážáááºážááá¯ááºááá·áº á¡áááºážáááºáá°ážáááºážáá±á¬ áá±áá¬áá¯á¶á á¶áá áºáá¯ááŸááááºá á€á á¬ááŒá±á¬ááºážáá»á¬ážááᯠááá¬ážá¡áá»áá¯ážáá»áá¯ážááŒáá·áº áááºáá¶ááœá²ááŒá¬ážáá¬ážáááºá á€áá±á¬ááºáááºááŸá¯ááºááœá±ážááŸá¯áá»á¬ážááẠá€áá±áá¬áá±á·á áºááŸáá·áº áá±á¬ááºáááºááœá²á¡áá¯ááºáá»á¬ážááᯠááŸá¯ááºááœá±ážá á±áááºá áá¬ážáááºáááºáááºáá²áááºá
VictoriaMetrics ááœáẠá¡áá¬á¡á¬ážáá¯á¶ážááẠááá¯ááá¯ááá¯ážááŸááºážáá«áááºá á¡á²áá®ááŸá¬á á¡áá»áááºá
á®ážáá®ážáá
áºáá¯á
á®ááẠáá±á¬á·áááºááá¯ážáá
áºáá¯ááŒá
áºáááºá áááºááá¯ážááẠá¡ááŸááºáá»á¬áž á¡á
á¯á¶ááŒá
áºáááº-á (timestamp, value)
á áá±á¬á·áá»ááºá á¡á
á¯á¶áá«áá²á label=value
. á¡ááœááºáá»á¬ážááŸáá·áº ááá¯ááºážáá¬ááŸá¯áá»á¬ážááŒá¬áž ááŒá¬ážáá¬ážááŒááºážáááŸááá«á áááºážááẠááá·áºá¡á¬áž áááºááá·áºáá±áá¬ááá¯áááᯠááœá±ážáá»ááºááŒá®ážáá±á¬áẠáá±á«ááºážá
ááºá ááá·áºá áá¯ááºá ááœá¬ážá ááá¯ááºážááŒá¬ážááá¯ááºáááºá áá»áœááºá¯ááºááááá±á¬áẠááœá²ááŒá¬ážáá±á¬á¡áááºážáá»á¬ážááŒá¬ážááœáẠááœááºáá»ááºááŸá¯áá»á¬ážááᯠááá¯ááºáá±á¬ááºááá±ážááá·áº InfluxDB ááŸáá·áº ááá°áá«á áááºážááá¯á·ááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºáááºááá¯áá«á áá¯ááºáá»á¬ážá
áœá¬áá±ážááẠáááºáá²áááºá
áá«ááŸááºážááŸááºážáááºážáááºážáá±ážááœááºážáá áºáá¯ááŸááááºá á€ááŒá±á¬ááºážááŒááºá¡ááœáŸááºážááẠááŸááºáá¬ááºááŸáá·áº áááá¯ááºáá®áá±á¬ááŒá±á¬áá·áº áááºááŒá±á¬áá±á¬ ááŒá¿áá¬á¡áá»áá¯á·ááŸááá±ááŒá±á¬ááºáž áá»áœááºá¯áẠááŸááºáááºá áœá¬ áá¬ážáááºáá²á·ááá±á¬á
áŠážá áœá¬á á ᶠGo ááŒá±áá¯á¶áá±á«áºááœáẠááŒá±á¬ááºážááŒááºááŸááºáá¬ážáá±á¬ á¡ááœáŸááºážáá áºáá¯á áá¯á¶á¡áá±á¬ á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ááᯠááŒááá²á·áááºá á€ááŒá±á¬ááºážááŒááºá¡ááœáŸááºážááᯠdisk ááœááºááááºážáááºážááá¬ážáá±á¬ááŒá±á¬áá·áºá á€á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ááẠáá±áá¬áá±á·á áºáá»á¬ážá¡ááœáẠáááá·áºáá»á±á¬áºááá·áºá¡ááŒáẠááŒááºáááºá áááºáá»áááºááœáẠá€áá±áá¬ááᯠáááºáááºáááŸáááá¯ááºá á±áááºá¡ááœáẠáá±áá¬áá±á·á áºááẠáá áºááºááœááºááááºážáááºážááááºááŒá áºáááºá á€á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ááœááºá áááºááẠá¡ááá®áá±ážááŸááºážááᯠááŒááºáááºá áááºáá±á¬á¡áá«á áááºá ááŒá±á¬ááºážááŒááºá¡ááœáŸááºážááẠáá»á±á¬ááºááœá¬ážáááá·áºáááºá áááºááẠáááºážááᯠááŸá¬áááœá±á·ááá¯ááºáá±á¬ááŒá±á¬áá·áº áá±áá¬á¡á¬ážáá¯á¶ážááᯠá¡áá¯á¶ážááŒá¯ááœáá·áºáá¯á¶ážááŸá¯á¶ážáááºááŒá áºáááºá
áááºá¹ááá¬áá«! á¡á á®áááºáá¶á á¬á¡ááœáẠáá»á±ážáá°ážáááºáá«áááºá áá»áœááºáá±á¬á·áºáá¬ááẠPavel áá«á áá«á Wildberries ááá«á áá« áááºážá¡ááœáẠáá±ážááœááºážááá»áá¯á·ááŸááááºá áá±ážááœááºážáá áºáá¯á ááá·áºáá»áŸá±á¬ááºááœáŸá¬ááááºáá±á¬ááºáá¯á¶áááºáá±á¬ááºáá¯á¶ááŸáá·áºáá±áá¬ááá¯á¡áá»áááºááŸáá·áºá¡áá»áŸá¡ááá¯ááºážááá¯ááºážááœá²ááá¯ááºáá±á¬á¡áá«ááœá²ááŒá¬ážááŒá¬ážáá¬ážáá±á¬áááá¬ááá áºáá¯ááá¯ááœá±ážáá»ááºáá²á·áá«áá á¡áááºá partition áá áºáá¯á¡ááœááºáá±áá¬áá«ááŸááááºáá°áá±á¬á¡áá»ááºááá¯á¡ááŒá±áá¶áááŸá¬ááœá±ááá·áºá¡áá«ááœááºáá±áá¬ááá¯ááŒááºáá±á¬ááºááá¯ááºáááá·áºáááºáá¯áááºáááºáá«ááá¬ážá á¡áá»áááºáá¬áá ááá¯ááá¯áááºááŸá¬ áá áºááŒáááºááŒá¬ážáá¬áááœáẠáááºáá¡ááá¯ááºážá¡á áá»á¬áž ááœá²ááŒá¬ážá áœá¬ ááŒáá·áºáá»á²áá±ááá·áºá¡áá»ááºááᯠáááºá áá¯ážááááºáá±á áá¬áááá¯áá±á¬á·áá«á áá±ážááœááºážáá¶áá«áẠ2 - áááºááẠbitset ááŸáá·áº á¡ááŒá¬ážá¡áá¬á¡á¬ážáá¯á¶ážááŸáá·áº á¡áá¬ážáá° algorithm áá áºáá¯ááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºáá±áá±á¬ááŒá±á¬áá·áº áááá¯áááºáᬠááœáŸááºááŒá¬ážáá»ááºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááẠááŒáá¯ážá á¬ážáá²á·áá«ááá¬ážá á¡á²áá®ááᯠááá¯ááá¯áá±á¬ááºážááœááºá¡á±á¬áẠá ááºážááŒáá·áºáá°ážáá«ááá¬ážá
áá¯ááááá áºáá¯ááᯠáá»ááºáá»ááºážááŒá±áá±ážáá«á·áááºá á¡á²áá®á·áá±áá¬ááᯠáá»áœááºáá±á¬áºááá¯á· ááá±á¬ááºáá±ážáá°ážá áá«áá±ááá·áº ááá¯á¡ááºááẠáá»áœááºáá±á¬áºááá¯á· á¡á²áá®ááᯠááœá¬ážáááºá ááááá±ážááœááºážá áá¬áá²á
á¡ááŒá±á¡áá±ááŸá áºáá¯ááᯠááẠááœá±ážááœá±ážáá²á·áááºá ááŒá®ážáá±á¬á· áá°ááá¯á·á ááá¯ááŸá¯ááºááœá±ážáá²á· á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯áá²á·á¡áá° áá¯ááááá áºáá¯ááᯠááœá±ážááá¯ááºáááºááá¯á· ááá¯áá«áááºá á¡áá»ááºá¡áááºááœá±ááᯠá¡áá»áááºáá²á·á¡áá»áŸ ááá¯ááºážááŒá¬ážáá¬ážáá²á· ááááá áºáá»áá¯ážááᯠáá°ááá¯á· áááŒáá¯ááºááŒáá°ážá
áá¯ááºáá²á·á áááá¡ááŒá±á¡áá±ááœááºá á¡ááœáŸááºážááááºážá á¯á á¯áá±á«ááºážááá¬áááẠááá¯ááŒá®ážáááá·áºáááºá á¡ááŒá±á¬ááºážááŸá¬ á¡ááá¯ááºážáá áºáá¯á á®ááœáẠáá»áœááºá¯ááºááá¯á·ááẠá€á¡ááá¯ááºážááá¯ááºážá¡á¬ážáá¯á¶ážááᯠáááºáááºááŒááºáááºážáá±ááá·áº á¡áá»áááºá á®ážáá®ážá¡ááœáẠáááºáá°áá±áá¬ááᯠááááºážáááºážááááºááŒá áºáá«áááºá á¡áááºá áááºáá¡áá»áááºá á®ážáá®ážá¡ááŸáá·áºááŸá¯ááºážááẠáá±ážáááºáá«áá ááá¯ááá¯áááºááŸá¬ áá°áá®áá±á¬á á®ážáá®ážáá»á¬ážááᯠá¡áááºáááŒááºá¡áá¯á¶ážááŒá¯áá±áá«á áááááá á¹á ááœááºá áá¯áááááá á¹á ááŸáá·áº ááŸáá¯ááºážááŸááºáá«á ááááºážááá¯ááºáá¬ážáá±á¬ disk space ááá¬áááŸá¬ áá»á¬ážá áœá¬áá¯á¶ážááŸá¯á¶ážáááºááŒá áºáááºá
áá«ááŒá±á¬áá·áº - áá¯ááºáááºá á¡áá»áááºááá¯ááºážááœá²ááŒááºážáᬠáá±á¬ááºážááœááºáá²á· ááœá±ážáá»ááºááŸá¯áá áºáá¯áá«á Prometheus á áá¯á¶ážáá«áááºá ááá¯á·áá±á¬áº Prometheus ááœááºá¡ááŒá¬ážá¡á¬ážáááºážáá»ááºááŸááááºá á€áá±áá¬á¡ááá¯ááºážá¡á áá»á¬ážááᯠáá±á«ááºážá ááºážáá±á¬á¡áá«á á¡ááœáŸááºážáá»á¬ážááŸáá·áº á¡áá»áááºá¡ááá¯ááºážá¡ááŒá¬ážá¡á¬ážáá¯á¶ážá¡ááœáẠááŸááºáá¬áẠmeta á¡áá»ááºá¡áááºááᯠááááºážáááºážáá¬ážááẠááá¯á¡ááºáááºá ááá¯á·ááŒá±á¬áá·áºá áááºážááẠáá±á«ááºážá ááºážáá¬ážáá±á¬ áá±áá¬á¡ááá¯ááºážáá»á¬áž ááŒá®ážáá¬ážáá«á VictoriaMetrics ááŸáá·áºááá°áá² áá±á«ááºážá ááºážá ááºááœáẠááŸááºáá¬ááºáá¯á¶ážá áœá²ááŸá¯ááẠá¡ááœááºáá»á¬ážááŒá¬ážáá«áááºá áá±á«ááºážá ááºážáá±á¬á¡áá«ááœááºá VictoriaMetrics ááẠááŸááºáá¬ááºááᯠáá¯á¶ážááá á¬ážáá¯á¶ážáá«á áá±áá¬áá±á«ááºážá ááºážáá¬ážáá±á¬á¡ááá¯ááºážáá»á¬ážá á¡ááœááºá¡á á¬ážááᯠáááœá²ááŒá¬ážáá² áá®ááá¯ááá¯ááºá¡áááºážáááºáᬠá á¬ážáá¯á¶ážáá«áááºá
áááºá¡áá¯á¶ážááŒá¯áá±áá±á¬ algorithm ááẠmemory ááá¯á¡áá¯á¶ážááŒá¯áááºá áááºážááẠáááºááá¯ážáá»á¬ážáá«ááŸááá±á¬ á¡ááŒáááºáá±áááºááºáá»á¬ážááᯠá¡ááŸááºá¡áá¬ážáá±ážáááºá á€áááºážááŒáá·áº áááºááẠdata array áá áºáá¯ááŸáá·áº á¡ááŒá¬ážáá áºáá¯ááœáẠááœá²áá»áááºáá¬ážáá±á¬ ááŸááá±ááŒááºážááŸááááŸá á á áºáá±ážáá«á áá»ááºážááŒá±á¬ááºážáá»á¬ážááŒá áºáá±á«áºáááºááŒá áºá á± áááŒá áºá á±ááŒá±á¬ááºáž áááºáá¬ážáááºáá«áááºá áá¯á¶ááŸááºá¡á¬ážááŒáá·áºá áá±áá¬áá±á·á áºáá»á¬ážááẠáááºážááá¯á·á áááºááŸáá¡ááŒá±á¬ááºážá¡áá¬ááᯠááááºážáááºážáᬠá€áá¯ááºáá±á¬ááºááŸá¯áá»á¬ážá ááá¯ážááŸááºážááŸá¯ááºááœá±ážááŸá¯ááŒá±á¬áá·áº á á®áá¬ážáá±á¬áá±áá¬áá»á¬ážááŸáá áºááá·áº áá¯ááºáá±á¬ááºááá·áº cursor ááŸáá·áº iterator áá»á¬ážááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºáá±á·ááŸááááºá
áá±áá¬ááᯠáá»á±á¬áºááŒááºááẠáá¬áá¬áá»á¬ážááᯠá¡áááºááŒá±á¬áá·áº áá»áœááºá¯ááºááá¯á·ááá¯á¶ážááŒááááºážá
áá¯ááºáá«áááºá
LevelDB ááá¯á·ááá¯áẠáá±á«ááºážá ááºážáá¬ážáá±á¬ á¡áááºážáá»á¬ážááᯠáá»áœááºá¯ááºááá¯á· ááááºážáááºážáá¬ážáá«áááºá áá¬áá¬ááá¯ááœáŸá±á·ááŒá®áž áááºážáá¯á¶ááá¯ááŸá¬ááá¯ááºáá«áááºá áá«ááá¯á·áá¬ááá¯á·ááá¯á¶ážáá¬áá²á ááŸá±ážáá±á¬ááŒá±á¬áá·áºááŒá áºáááºá cursors ááá¯áááºááŸá¬ á á¬ááŒá±á¬ááºážáá áºáá¯á á®á¡ááœáẠfunction áá áºáá¯ááᯠáá±á«áºááẠááá¯á¡ááºáá±á¬ááŒá±á¬áá·áºááŒá áºáááºá áá¯ááºáá±á¬ááºáá»ááºáá±á«áºááá¯ááŸá¯áá áºáá¯ááẠ5 áá¬ááá¯á áá¹ááá·áºááŒá áºáááºá á¡áááºá ááá·áºááœáẠááá¯ááºážáá±á«ááºáž 100 ááŸááá«áá function ááá¯áá±á«áºááá¯áá¯á¶ááŒáá·áº á áá¹ááá·áºáááºáá±á¬áẠá¡áá»áááºááŒá¯ááºážáá±áá«áááºá
áá«áá»áá¯ážááœá±ááŸááááºá áá¯ááºáááºá ááŒá®ážáá±á¬á· áá«á·áá²á·áá±á¬ááºáá¯á¶ážáá±ážááœááºážá áá±ážááœááºážá á¡áááºážááẠáá°ážáááºážáá±áá±áááºá áá±áá¬áá±á¬ááºááŸááá»áááºááœáẠááá¯á¡ááºáá±á¬á á¯á ááºážááŸá¯á¡á¬ážáá¯á¶ážááᯠáááºááŒá®áž ááá¯á¡ááºááá·áºáá¯á¶á á¶ááŒáá·áº ááááºážáááºážááẠá¡áááºááŒá±á¬áá·áº áááŒá áºááá¯ááºááááºážá VictoriaMetricsá ClickHouse á áááºááŒáá·áº á¡áá»áá¯á·áá±á¬á áá áºáá»á¬ážááœáẠááá¬áááŒá®ážáá¬ážáá±á¬ááá¬áááᯠá¡áááºááŒá±á¬áá·áº ááááºážáááºážáááááºážá ááá¯á·áá±á¬áẠáááºážááá¯á·á¡ááœáẠá¡áá»áááºáá»á¬ážá áœá¬ áá¯á¶ážá áœá²áááŒááºážá
ááá¯ááŸááºážá¡á±á¬áẠá¥ááá¬áá áºáá¯áá±ážáááºá áá±ážáááºáá²á· á¡ááŒááºááŸá¯ááºážááŒáááááá¬á áááºááá¯á¡áá¯ááºáá¯ááºááá² ááá¯ááŒáá«á áá¯á·á áááºážááẠáááºááœá¬ážáá²á·áá±á¬ ááá®ážá¡ááœá¬á¡áá±ážááᯠááŸááºáááºážáááºáááºá áááºážááᯠáááºááá¯ážáá áºáá¯ááŸáá·áº áá¯áááá¡ááŒáááºá¡ááŒá Ạáá±á«ááºážááá·áºááá·áºá¡áá»áááºááá¯ááºážááᯠááŸááºáááºážáááºáááºá ááá¯ááºážááŒá¬ážáá«á áá»ááºážáá»áŸá¡ááŒááºááŸá¯ááºážáááŸááááºá áá°áá®áá±á¬á¡áá¬ááᯠáááºáá¯ááºáá±á¬ááºááá¯ááºáááºá ááá¯á¡ááºáá±á¬á¡áá»ááºáá»á¬ážá¡á¬ážáá¯á¶ážááᯠá¡ááŒááºááá·áºááœááºážáá«á
áá±á¬ááºážááŒá®á áá«áá±ážááœááºážáá¬ážáááºáááºá áááºážáá²á·á á¶ááá°áá¬á áá°á·áá±áá¬áá²á·áá°ááŸááááºá áááºááá¯á¡ááºááá·áºá¡áá¬áá»á¬ážááᯠá á¯á ááºážááááŸááá«áá áááºážááẠá¡áá±á¬ááºážáá¯á¶ážá¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ááŒá áºáááºá áá«áá±ááá·áº ááŒá¿áá¬ááá±á¬á· áá°ááœá±á áá®áááºááá áºááœá±á ClickHouse áá²á áá±áá¬ááá»áá¯á·ááᯠááááºážáááºážááŒá®áž áá°ááá¯á· áááºááá¯á á¯áá±á«ááºážááŒá®áž á¡áá¬áááºááŸá¬ áá°ááá¯á·ááᯠá á áºáá¯ááºáááºááá¯áᬠáááááŒáá±ážáá¬ááŒá±á¬áá·áº áá±áá¬á¡ááŒááºážá¡á¬ážáá¯á¶ážááᯠááááºážáááºážáááŸá¬ ááŒá áºáá«áááºá áá«áá±ááá·áº áá»ááºážáá»áŸá¡á¬ážááŒáá·áº áá áºáá¯áá¯ááᯠááœááºáá»ááºááááºááá¯áᬠáááºááááẠá¡á²áá®áá±áá¬ááŸá¬ áá¯ááºááŒááºážáááºááá¯ážááœá±ááᯠááááºážáááºážááá·áºá¡á á¬áž áá¬ááŒá±á¬áá·áº áááœááºáá»ááºáá¬áá²á áá«âáá±ááá·áºâ áá«á áááºâááá¯á¡ááºâáá²á·á¡áá¬ááᯠá¡ááá¡áá»ááááŸáá¬áá»áŸááºâááŒá áºâáááºâá
á
áá¬ážáá
ááºá á¡áá»áááºá
á®ážáá®ážáá»á¬ážááᯠááááºážáááºážáááºá¡ááœáẠáá±áá¬áá±á·á
áºáá»á¬ážááẠá¡á
á¯ááá¯ááºáá±ááœááºááŒááºážááᯠáá¶á·ááá¯ážáá±ážáááºá á¥ááá¬á Prometheus á áá±á¬ááºáá¶áááºá
á¥ááá¬á¡á¬ážááŒáá·áºá áá»áœááºá¯ááºáááááºá¡áá¯ááºááœáẠááŒá®ážáá²á·ááá·áºáá¬áá®á¡ááœááºáž áá»áŸá±á¬ááŒáááºážáá±á«ááºááŸá ááŒá áºáááºá¡áá±á¡ááœááºááᯠáá±ááœááºááẠááá¯á¡ááºáá«áááºá ááŒá¿áá¬ááŸá¬ Go ááœáẠá€á¡áá¬á¡á¬áž áá±ááœááºááẠáááºáá±á¬ááºááŸá¯áá áºáᯠááŒá¯áá¯ááºáááŒááºážááŒá±á¬áá·áºááŒá áºáááºá ááœááºáá»ááºáááºáááºáá²áá±á¬ááŒá±á¬áá·áº á€áááºáá±á¬ááºááŸá¯ááẠáá±á¬ááºáá¯á¶ážááœááºá¡áá±ážá¡ááœá²ááá¯ááºáá±á áááºááŸááºáá¬ážáá±á¬ á¡áá»áááºáá¬áá¡ááá¯ááºážá¡ááŒá¬ážáá»á¬ážááœáẠá á¯á ááºážááŸá¯á¡áá»áá¯á·ááᯠáá±ááœááºááẠááá¯á¡ááºáá«á á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ááẠááá¯ážááŸááºážáá«áááºá áá»áŸá±á¬ááŒáááºážáá±á«ááºááŸá á¡ááŒá áºá¡áá»ááºáá»á¬ážááᯠáá±ááœááºááá¯áá«áá áááºááá±á¬áẠáááá¯ážááŸááºážáá«á á¡áá±á¬ááºá¡áááºáá±á¬áºááẠáááºáá²áá±á¬ááŒá±á¬áá·áº áááºážááᯠClickHouse ááá¯á·ááá¯áẠtimeseries databases áá»á¬ážááœáẠá¡áá±á¬ááºá¡áááºááá±á¬áºáá±ážáᯠáá»áœááºáá±á¬áºáááºáá«áááºá
áá±á¬ááºáááºáá±ážááœááºážáá áºáá¯á áá»áœááºá¯ááºááá¯á·ááẠáá»ááºážáá»áŸááŒááºážá¡ááŒá±á¬ááºážááŒá±á¬áá±ááŒááŒá®áž áá áºáá»áááºá áá¬ááœááºáá±á¬ááºáá¶ááŒáá·áº Graphite áá²á·ááá¯á·áá±á¬ á¡áá¬áá áºáá¯ááŸááá²á·áá°ážáááºááᯠáááááááááºá áá±áá¬áá±á¬ááºážáá»á¬ážááᯠáááºááŸá¬ážáááºážá ááá¯ááá¯áááºááŸá¬ áá áºáááá áºáá»áŸáẠáá áºááŸááºá áá áºáá¬áá®áá»áŸáẠáá áºááŸáẠá áááºááá¯á·ááᯠáá»ááºáá¬ážááá¯ááºáááºááᯠáá°áááá«áááºá áá°á¡áá áá»áœááºá¯ááºááá¯á·ááẠáá±áá¬á¡ááŒááºážááá¯á¡ááºáááºá áá áºáááŒá¬áááºááŸáá·áº á¡ááŒá¬ážá¡áá¬á¡á¬ážáá¯á¶áž áá¯ááºááá¯ááºáá»áŸáẠáááºážááẠá¡áá±á¬áºáá±áž á¡áááºááŒá±áá«áááºá áá«áž . ááá¯á·áá±á¬áº Prometheus ááŸáá·áº VictoriaMetrics ááá¯á·ááẠá€áá¯ááºáá±á¬ááºááá¯ááºá áœááºážááᯠááá¶á·ááá¯ážáá«á áá±á¬ááºáá¶á·ááẠá á®á ááºáá¬ážáá«ááá¬ážá ááá¯ááºááẠáá¬ááŒá±á¬áá·áº ááá¯ááºáá¬áá²á
áá±ážááœááºážá¡ááœááºáá»á±ážáá°ážáááºáá«áááºá áá»áœááºá¯ááºááá¯á·áá¡áá¯á¶ážááŒá¯áá°áá»á¬ážááẠá€áá±ážááœááºážááᯠá¡áá«á¡á¬ážáá»á±á¬áºá
áœá¬ áá±ážáá«áááºá ááŸááá·áºáá»ááá°áá¬á¡ááœáẠá¡áá±á¬ááºá¡áá¶á·ááᯠáááºáá±á¬á·ááá·áºááá²ááá¯á· áá°ááá¯á·á áá±ážáááºá á€áá±áá¬ááœáẠááŒá¿áá¬áá»á¬ážá
áœá¬ááŸááááºá ááááá¯á¶ážá¡áá±áá²á· áá¯á¶ážá
áœá²áá°ááá¯ááºáž áá¬ážáááºáá«áááºá downsampling
ááœá²ááŒá¬ážáá±á¬á¡áá¬- áá
áºá
á¯á¶áá
áºáŠážááẠáá±ážáá¬ážááá·áºááŒá¬ážáá¬ááá
áºáá¯ááœáẠááááºáááᯠá¡ááŸááºáááá¯áááºá áá
áºá
á¯á¶áá
áºáá±á¬ááºááẠá¡áá»á¬ážáá¯á¶ážá á¡áááá·áºáá¯á¶ážá áá»ááºážáá»áŸáááºááá¯ážáá»á¬ážááᯠááá¯áá»ááºáááºá á
áá
áºáá»á¬ážá
áœá¬ááẠáááºááá±áá¬áá±á·á
áºááá¯á· áá±áá¬áá»á¬ážáá±ážáá«áá áááºážááᯠáá±á«ááºážá
ááºážááááá«á á
áá
áºáá
áºáá¯á
á®ááẠááá°áá®áá±á¬ áá«ážááœáŸá¬ááŸá¯ááá¯á¡ááºáá±á¬ááŒá±á¬áá·áº ááŒá
áºááá¯ááºáááºá ááŒá®ážáá±á¬á· áá«á á¡áá±á¬ááºá¡áááºáá±á¬áºááá¯á· áááºáááºá
áá¯áááá¡áá»ááºááŸá¬ ClickHouse áá²á·ááá¯á· VictoriaMetrics ááẠáá±áá¬áá¯ááºááŒááºážá¡ááŒá±á¬ááºá¡ááŒá¬ážáá±á«áºááœáẠáá¯ááºáá±á¬ááºáááºá¡ááœáẠá¡áá±á¬ááºážáá¯á¶ážááŒá áºááŒá®ážá ááá¯á·ááŒá±á¬áá·áº ááá·áºá áá áºááœáẠcores áá»á¬ážá áœá¬ááŸááá«á áá áºá áá¹ááá·áºá¡ááœááºáž ááá¯ááºážáá áºáá®áá®áá¶ááᯠááœááºážááŸááºááá¯ááºáááºááŒá áºáááºá VictoriaMetrics ááŸá á¡áá»áááºá á®ážáá®ážá¡ááŸááºáá»á¬ážááᯠá áááºááºáááºááŒááºáž â áá áºá áá¹ááá·áºáá»áŸáẠáááŸáẠ50 ááŸááºá ááŒá®ážáá±á¬á· áá®á áœááºážáá±á¬ááºáááºá ááŸáááŒá®ážáá¬áž cores ááœá±ááᯠááá¯ááºážáá¬áá«áááºá á¥ááá¬á¡á¬ážááŒáá·áº ááá·áºááœáẠCore 000 ááŸááá»áŸáẠáá áºá áá¹ááá·áºáá»áŸáẠá¡ááŸááºáá áºáá®áá®áá¶ááᯠá áááºááºáááºáááºááŒá áºáááºá VictoriaMetrics ááŸáá·áº ClickHouse á á€ááá¯ááºááá¯ááºááŸá¯ááẠááŸááá·áºáá»ááŒááºážá¡ááœáẠááá¯á¡ááºááŸá¯ááᯠáá»á±á¬á·áááºážá á±áááºá
á¡ááŒá¬ážá¡ááºá¹áá«áááºáá áºáá¯ááŸá¬ VictoriaMetrics ááẠá€áá±áá¬ááᯠáááááá±á¬ááºáá±á¬áẠáá»á¯á¶á·áá±ážááŒááºážááŒá áºáááºá áá¯ááºáá¯ááºááŸá¯ááœáẠáá»ááºážáá»áŸá¡á¬ážááŒáá·áº ááááááºááŸá¯ááẠá¡ááŸááºáá áºáá¯áá»áŸáẠ0,4 á០0,8 bytes ááŸááŒá áºáááºá á¡ááŸááºáá áºáá¯á á®ááẠá¡áá»áááºáá¶áááẠ+ áááºááá¯ážááŒá áºáááºá áááºážááᯠáá»ááºážáá»áŸá¡á¬ážááŒáá·áº áá áºááá¯ááºá¡á±á¬ááºááá¯á· áá»á¯á¶á·áá¬ážáááºá
áá¬áá»á®á áá±ážá áá¬ááŸááá«áááºá á¡áááá·áºáá¯á¶áž á¡áá¶ááœááºážáá»áááºááœááºáááºá áááºáá±á¬ááºáá²á
áá áºáá®áá®á áá¹ááá·áºá áá»áœááºá¯ááºááá¯á·ááẠáááŒá¬áá±ážáá®á á¡ááŒá¬ážá¡áá»áááºá á®ážáá®ážáá±áá¬áá±á·á áºááŒá¯á á¯áá°áá»á¬ážááŸáá·áº á áá¬ážá ááŒááºááŒá±á¬áá²á·áá«áááºá áááºážááá¯á·á á¡áááá·áºáá¯á¶ážá¡áá»áááºá¡ááá¯ááºážááẠáá áºá áá¹ááá·áºááŒá áºáááºá á¥ááᬠGraphite ááœááºáááºážááẠáá áºá áá¹ááá·áºáááºážááŒá áºáááºá OpenTSDB ááœááºáááºážáááºáá áºá áá¹ááá·áºáááºážááŒá áºáááºá InfluxDB ááœáẠáá¬ááá¯á áá¹ááá·áºáááá»ááŸá¯ááŸááááºá VictoriaMetrics ááœááºáááºážáááºáá áºáá®áá®á áá¹ááá·áºááŒá áºáááºá Prometheus ááœááºáááºážáááºáá áºáá®áá®á áá¹ááá·áºááŒá áºáá±á¬ááŒá±á¬áá·áºááŒá áºáááºá VictoriaMetrics ááᯠáá°áá Prometheus á¡ááœáẠá¡áá±ážááááºážááá¯ááŸá±á¬ááºááŸá¯á¡ááŒá Ạáá®ááœááºáá²á·áááºá ááá¯áá° áááºážááẠá¡ááŒá¬ážá áá áºáá»á¬ážá០áá±áá¬áá»á¬ážááᯠááááºážáááºážááá¯ááºááŒá®ááŒá áºáááºá
áá»áœááºáá±á¬áºááŒá±á¬áá°ážáá²á·áá°á áá°ááá¯á·ááŸá¬ á áá¹ááá·áºá០á áá¹ááá·áºá¡áá áááá»ááŸá¯ááŸááááºááá¯á· ááŒá±á¬áá«ááẠ- á¡áá»áááºá á®ážáá®ážáá±áá¬áá±á·á áºááŸá¬ ááááºážáááºážáá¬ážáá²á· áá±áá¬á¡áá»áá¯ážá¡á á¬ážáá±á«áº áá°áááºááá¯á· áá°ááá¯á·á¡ááœáẠáá¯á¶áá±á¬ááºáá«áááºá áááºážááẠDevOps áá±áᬠááá¯á·ááá¯áẠáá áºáááá áºáá»áŸáẠá áá¹ááá·áº 30 á¡ááœá¬á¡áá±ážááœáẠáááºá á¯áá±á¬ááºážááá·áº á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶ááŸáá±áá¬ááŒá áºáá«áá ááá¯á·áá±á¬áẠáá¯ááááááá»ááŸá¯ááẠáá¯á¶áá±á¬ááºááŒá®á áááºááẠáááºááá·áºá¡áá¬áá»áŸ áááá¯á¡ááºáá«á á¡áááºá áááºááẠááŒáááºááŸá¯ááºážááŒáá·áºáá±á¬ áá¯ááºááœááºááŸá¯á áá áºáá»á¬ážá០á€áá±áá¬ááᯠá á¯áá±á¬ááºážáá«áá áááºááẠáá¬ááá¯á áá¹ááá·áºáááá»ááŸá¯ ááá¯á¡ááºáá«áááºá
VictoriaMetrics ááŸá áá®áá®á áá¹ááá·áºáááá»ááŸá¯ááẠDevOps ááá á¹á á¡ááœááºáááºáž ááá·áºáá»á±á¬áºááŒá®áž á¡á á®áááºáá¶á á¬áá¡á ááœáẠáá»áœááºá¯ááºáá±á¬áºááŒáá²á·áá±á¬ á¡ááŸá¯á¡áá»á¬ážá á¯á¡ááœáẠááá·áºáá»á±á¬áºááá¯ááºáááºá áááá·áºáá»á±á¬áºááá¯ááºáá±á¬á¡áá¬ááŸá¬ ááŒáááºááŸá¯ááºážááŒáá·áºáá±á¬ áá¯ááºááœááºááŸá¯á áá áºáá»á¬ážááŒá áºáááºá
áá»á±ážáá°ážáááºáá«áááº! áá±á¬ááºáá±ážááœááºážáá áºáá¯á PromQL ááœáẠááá¯ááºáááºááŸá¯áá¬áž á¡áááºáááºážá
áá±á¬ááºááŒááºááá¯ááºáááºááŸá¯á¡ááŒáá·áºá VictoriaMetrics ááẠPromQL ááᯠá¡ááŒáá·áºá¡ááá±á¬ááºáá¶áááºá ááá¯á·á¡ááŒááºá áááºážááẠPromQL áá¯áá±á«áºáá±á¬á¡ááá·áºááŒáá·áºáá¯ááºáá±á¬ááºááá¯ááºá
áœááºážááá¯áááºáá±á¬ááºážáá±ážáááºá
ááŒá±ážáááºážáá»ááºáááº
á
á¬áááºážááœááºážá¡áá¯á¶ážááŒá¯áá°áá»á¬ážáᬠá
á
áºáááºážááœáẠáá«áááºááá¯ááºáá«áááºá
Prometheus á¡ááœáẠáááºááá±ááŸááºááá¯ááŸá±á¬ááºááŸá¯á¡ááŒá ẠVictoriaMetrics ááá¯á·ááŒá±á¬ááºážááŒááºážá០ááá·áºá¡á¬áž á¡áááºá¡áá¬á áá¬ážáá®ážááááºážá (comment ááŸá¬áá±ážááŒá®áž áá²á á¬áááºážááŸá¬ ááá·áºááá¯ááºáááº))
-
71,4%Prometheus 5 ááá¯á¶ážáá«áá°ážá
-
28,6%VictoriaMetrics2 á¡ááŒá±á¬ááºáž ááááá²á·áá«á
á¡áá¯á¶ážááŒá¯áá° 7 áŠáž áá²áá±ážáá²á·áááºá á¡áá¯á¶ážááŒá¯áá° 12 ááŸá±á¬ááºáá±áá²á·áá«áááºá
source: www.habr.com