ืืคื ื ืฉืืืฉ ืฉื ืื ืืืงืืืจ ืืจื ืืกืงื ืืืืืกืื ืืืืืืืืื ืืืื ืืงืก ืขื ืืืื HighLoad ++
ืฉืืืฉ ืฉื ืื ืืืืืจ ืืืชืจ ืงืืืงืืืืก ืืคื ืืืจืื ืืืชืจ ืืื - ืืืืื ืืืื ืืื ืืืืกื ืืจ ืืงืื ืืช ืืืจืช Altinity, ืฉืื ืจืง ืขืืืจืช ืืื ืฉืื ืืขืืืจ ืืืื ืงืืืงืืืืก ืขืฉืจืืช ืคืจืืืงืืื, ืืื ืื ืืฉืคืจ ืืช ืืืืฆืจ ืขืฆืื ืืื ืขื ืขืืืชืื ื-Yandex. ืขึทืืฉืึธืื ืงืืืงืืืืก ืขืืืื ืื ืืืื ืืกืจ ืืืืืช, ืืื ืืืจ ืื ืฉืื ืืืงืฉืื.
ืืืืกื ืืจ ืขืืื ืขื ืืขืจืืืช ืืืืืจืืช ืืื 2003, ืืืคืชื ืคืจืืืงืืื ืืืืืื ืื ืืฉื MySQL, ืืืจืงื ะธ Vertica. ืขื ืืืืจืื + + 2019 ืืืืกื ืืจ, ืืืืืฆื ืืฉืืืืฉ ืงืืืงืืืืก, ืกืืคืจ ืื ืื ื-DBMS ืืื ืขืืฉืื. ื ืืื ืขื ืืชืืื ืืช ืืขืืงืจืืืช ืงืืืงืืืืก: ืืื ืืื ืฉืื ื ืืืขืจืืืช ืืืจืืช ืืืืืื ืืงืจืื ืืขืื ืืืชืจ ืืืฉืชืืฉ ืื. ืืขืืจืช ืืืืืืืช, ื ืืื ืคืจืงืืืงืืช ืขืืื ืืืช ืื ืืืงื ืืคืจืืืงื ืืื ืืืช ืืขืจืืืช ืืืืืกืกืืช ืขื ืงืืืงืืืืก.
ืืืืขืื: ืื ืงืจื ืืคื ื 3 ืฉื ืื
ืืคื ื ืฉืืืฉ ืฉื ืื ืืขืืจื ื ืืช ืืืืจื LifeStreet ืขื ืงืืืงืืืืก ืืืกื ื ืชืื ืื ืื ืืืื ืืืจ, ืืืืืืจื ืฉื ื ืืชืื ืจืฉืช ืืืืืขืืช ื ืจืืชื ืื:
- ืืื ื 2016. ื ืงืื ืคืชืื ืืืคืืข ืงืืืงืืืืก ืืืคืจืืืงื ืฉืื ื ืืชืืื;
- ืืืืืกื. ืืืืื ืฉื ืจืขืืื ืื ืชืืืจืื: ืจืฉืช ืคืจืกืื ืืืืื, ืชืฉืชืืช ื-200-300 ืืจื-ืืืื ืฉื ื ืชืื ืื;
- ืืึนืงึฐืืึนืึผึถืจ. ื ืชืื ื ืืืฆืืจ ืจืืฉืื ืื;
- ืึตืฆึถืืึผึถืจ. ืขืืืก ืืืืฆืจ ืืืื ืืื 10-50 ืืืืืืจื ืืืจืืขืื ืืืื.
- ืืื ื 2017. ืืืืจื ืืืฆืืืช ืฉื ืืฉืชืืฉืื ื ืงืืืงืืืืก, 2,5 ืคืื-ืืืื ืฉื ื ืชืื ืื ืขื ืืฉืืื ืฉื 60 ืฉืจืชืื.
ืืืืื ืชืืืื ืืืืืจื, ืืืจื ืืืื ื ืืื ืงืืืงืืืืก ืืื ืืขืจืืช ืืืื ืฉื ืขืื ืืขืืื ืืืชื, ืืื ืื ืคืจืืืงื ืคื ืืื ืฉื Yandex. ืืื, ืืฉื ื ื ืืืื ืกืื: Yandex ืชืขืกืืง ืงืืื ืื ืืืงืืืืช ืคื ืืืืื ืืฉืื ืืจืง ืืืืจ ืืื ืืงืืืื ืืืฆืจืืื ืฉื ืืฉืชืืฉืื ืืืฆืื ืืื, ื- ClickHouse ืื ืืืืขื ืื ืืจืืช ืืืจืืื ืืชืืืืื ืคืื ืงืฆืืื ืืืื ืจืืื. ืื ืืกืืื ืฉืืงืื ื ืืช Altinity ืืืจืฅ 2017 ืืื ืืขืฉืืช ืงืืืงืืืืก ืืคืืื ืืืชืจ ืืืืจ ืื ืื ืื ืจืง ืขืืืจ Yandex, ืืื ืื ืขืืืจ ืืฉืชืืฉืื ืืืจืื. ืืขืืฉืื ืื ืื ื:
- ืื ื ืืืื ืื ืืขืืืจืื ืืื ืืืช ืคืชืจืื ืืช ืืืืืกืกืื ืขื ืงืืืงืืืืก ืืื ืฉืืืงืืืืช ืื ืืกืชืืื, ืืืื ืฉืืคืชืจืื ืืขืืื ืืกืืคื ืฉื ืืืจ;
- ืื ื ืืกืคืงืื ืชืืืื 24/7 ืงืืืงืืืืก- ืืชืงื ืืช;
- ืื ื ืืคืชืืื ืคืจืืืงืืื ืฉื ืืขืจืืช ืืงืืืืืืช ืืฉืื ื;
- ืื ื ืืชืืืืืื ืืขืฆืื ื ืืืืคื ืคืขืื ืงืืืงืืืืก, ืืขื ื ืืืงืฉืืช ืฉื ืืฉืชืืฉืื ืฉืจืืฆืื ืืจืืืช ืชืืื ืืช ืืกืืืืืช.
ืืืืืื, ืื ืื ื ืขืืืจืื ืืืขืืจ ืงืืืงืืืืก ั MySQL, Vertica, ืืืจืงื, ืืจืื ืคืืื, ืืืกื ืืืืื ืืืขืจืืืช ื ืืกืคืืช. ืืืื ื ืืขืืจืืื ืืืืืื ืืืืืื, ืืืืื ืืฆืืืื.
ืืื ืืขืืืจ ื ืงืืืงืืืืก
ืื ืืื! ืื ืืกืืื ืืขืืงืจืืช. ืงืืืงืืืืก - ืืกื ื ืชืื ืื ืืืืจ ืืืื ืขืืืจ ืชืจืืืฉืื ืฉืื ืื:
ืฆืืืืืื ืืงืจืืืื ืฉื ืื ืฉืื ืฉืขืืืืื ืขื ืื ืฉืื ืืืฉื ืืื ืจื ืงืืืงืืืืก.
ืืืจืืืืช. ืืืกื ื ืชืื ืื ืืืจ ืืชื ืืืื ืืืฉืื ืืืฆืืขืื ืืืืื ืขื ืคืืกืช ืืืืจื ืืืช, ืืื ืงืืืงืืืืก ืืชื ืืืื ืืฉื ืืช ืงื ื ืืืื ืื ืจืง ืื ืืืช, ืืื ืื ืืืคืงืืช, ืคืฉืื ืขื ืืื ืืืกืคืช ืฉืจืชืื. ืืื ืื ืขืืื ืืฆืืจื ืืืงื ืืื ืฉืืืื ื ืจืืฆืื, ืืื ืื ืขืืื. ืืชื ืืืื ืืืจืืื ืืช ืืืขืจืืช ืืื ืฉืืขืกืง ืฉืื ืืื. ืืฉืื ืฉืื ื ืืื ืืืืืืื ืขื ืืื ืืคืชืจืื ืขืืฉืื ืืชืืื ืืฉ ืคืืื ืฆืืื ืืคืืชืื.
ืึดืึทืืึฐืืึผืช. ืืื ืงืฉืจ ืืืืจ ืืื. ืืืฉื, ืขื ืืืืื ืฉื ืืืืื ืงืฉื ืืืื ืืืงืื ืืืฉืื. ื ืงืืืงืืืืก ืืชื ืืืื ืืืชืงืื ืืืชื ืขื ืืืืฉื ืื ืืื, ืืฉืจืช ืฉืื, ืืคืจืืก ืืืชื ืืขื ื, ืขืืืจ ืื ืงืืืจื ื - ืืื ืืืืืืช ืขื ืชืคืขืื ืืชืฉืชืืช. ืื ื ืื ืืืืื, ืืืื ืืชืจืื ืืืื ืฉืืืืจื ืืืืข ืืืืื ืจืืื ืืืจืื ืื ืืืืืื ืืืชืืืจ ืื.
ืืืืฉืืช. ืงืืืงืืืืก ืื ืขืืฆืจ ืืืืจ ืืื, ืืืฉื, Yandex.Metrica, ืืื ืืคืชืืช ืืืฉืืฉืช ืืืืชืจ ืืืืชืจ ืคืจืืืงืืื ืืชืขืฉืืืช ืฉืื ืืช. ื ืืชื ืืืจืืื ืืืชื ืขื ืืื ืืืกืคืช ืืืืืืช ืืืฉืืช ืืคืชืจืื ืืขืืืช ืืืฉืืช. ืืืืืื, ืืื ืืืืื ืื ืืืกืื ืืืื ืื ืืืกื ื ืชืื ืื ืืื ื ืืืืกืื ืืจืืขืื, ืื ืื ืืืืขื ืขื Elasticsearch. ืืื ืืืืืช ืืืืืฉืืช ืงืืืงืืืืก, ืืชื ืืืื ืื ืืืืกื ืื ืืืื ืื, ืืืขืชืื ืงืจืืืืช ืื ืืคืืื ืืื ืืืชืจ ืืืฉืจ ื Elasticsearch - ืคื ืืื ืงืืืงืืืืก ืื ืืืจืฉ ืคื 10 ืคืืืช ืืจืื.
ืืืคืฉื ืงืื ืคืชืื. ืืชื ืื ืฆืจืื ืืฉืื ืขื ืฉืื ืืืจ. ืืื ืฆืืจื ืื ืื ืืฉื ืืืชื ืขื ืืจืฉืื ืืืชืงื ืช ืืืขืจืืช ืขื ืืืืฉื ืื ืืื ืื ืืฉืจืช ืฉืื. ืืื ืขืืืืช ื ืกืชืจืืช. ืืื ืขื ืืืช, ืฉืื ืืื ืืืืืืืช ืืกื ื ืชืื ืื ืืืจืช ืฉื ืงืื ืคืชืื ืื ืืืืื ืืืชืืจืืช ืืืืืจืืช ืงืืืงืืืืก. MySQL, MariaDB, Greenplum - ืืืื ืืจืื ืืืชืจ ืืืืืื.
ืงืืืื, ืืื ื ื ืึผึตืืฃ. ืืฉืขื ืงืืืงืืืืก ืงืืืื ืืฆืืื ืช: ืืคืืฉืื, ืฆ'ืืื ืืืืืกืื ืืืืืืืืื, ืฉืืืขืื ืืช ืืืื ื ืืื ืจืืื ืืืืืคืืืืืืช ืฉืื.
ืขืืืจืื ืืงืืืงืืืืก
ืืืืช ื ืงืืืงืืืืก ืืกืืื ืืืฉืื, ืืชื ืฆืจืื ืจืง ืฉืืืฉื ืืืจืื:
- ืืืืื ืืช ืืืืืืืช ืงืืืงืืืืก ืืืื ืื ืื ืืชืืื.
- ืื ืฆื ืืืื ืืืืืื ืืืืชืจืื ืืช ืืืืืืื ืืืืชืจ ืฉืื.
- ืึฐื ึทืกืึนืช. ืืคืืื ืืืืื ืืื ืื ืขืืื ืงืืืงืืืืก, ืื ืชืืื ื ืืชื ืืืืืช ืืชื ืื ืืืื ืืืืจ ืืืชืจ, ืืชื ืื ืืืื ืืืื ืืืชืจ, ืืชื ืื ืืืื ืืื ืืืชืจ ืืืชื ืื ืืืื ืืืชืจ ืืจืืข. ืื ื ืกื ืืช ืื.
ืืขืื ืืชื ืืขื
ืืฉ ืจืง "ืืื" ืืื: ืื ืชืขืืืจ ื ืงืืืงืืืืก ืืืฉืื ืืืจ, ืื ืืืจื ืืื ืืฉืื ืืฉืชืืฉ. ืื ืื ื ืจืืืืื ืืืื ืคืจืงืืืงืืช ืืืืจืื ืฉืขืืืืื ืืืกื ืื ืชืื ืื ืืืืืืื ืขืืื ื. ืืืฉื, ืื ืื ืฉืขืืื ืขื SQืืกืื ื ืชืื ืื ืฉื L ืจืืืื ืืกื ืืคืื ืงืฆืืืช ืืื ืืืื:
- ืขืกืงืืืช;
- ืืืืืฆืื;
- ืขึฒืงึตืึดืืึผืช;
- ืืืืื;
- ืขืืื/ืืืง;
- NULLs;
- ืืืคืืืช ืฉื ืืืช;
- ืืฆืืงืืช ืืกืื ืืืืืืื;
- ืืืืืจืื ืืจืืืื;
- ืืืืฆืืช ืฉืจืืจืืชืืืช;
- ืืืื ืื ืืืื ืืฉืืืืืช.
ืืืืืก ืืื ืืืื, ืืื ืืคื ื ืฉืืืฉ ืฉื ืื ื ืงืืืงืืืืก ืืฃ ืืืช ืืืคืื ืงืฆืืืช ืืืื ืื ืืืืชื ืืืื ื! ืืขืช ื ืืชืจ ืคืืืช ืืืืฆืืช ืืื ืฉืื ืืืฉื: ืขืกืงืืืช, ืืืืืฆืื, ืขืงืืืืช, ืืืคืืืช ืฉื ืืืช ืืืืืืืง ืกืื.
ืืืขืืงืจ ืฉื ืงืืืงืืืืก ืืืง ืืืฉืืืืช ืืืืืฉืืช ืืกืื ืืจืืืืช ืืื ื ืคืืขืืืช ืื ืคืืขืืืช ืืฆืืจื ืฉืื ื ืืื ืฉืื ื ืจืืืืื. ืื ืื ืฉืืืคืืข ื ืงืืืงืืืืก, ืืชืืื ื "ืืจื ืงืืืงืืืืก", ืืืืืจ. ืคืื ืงืฆืืืช ืฉืื ืืช ืืืืืจื ืืืืข ืืืจืื. ืืืืืื:
- ืืื ืืงืกืื ืืื ื ื ืืืจืื, ืื ืืืืืื ืขืืืื.
- ืขืืื/ืืืง ืื ืกืื ืืจืื ื, ืืื ืืกืื ืืจืื ื.
- ืืฉื ื ืืกืคืจ ืืฆืืจืคืืช, ืื ืืื ืืชืื ื ืฉืืืืชืืช. ืืื ืื ืืืืฆืขืื ืื ืืืจื ืืื ืื ืืจืืจ ืืืื ืืื ืฉืื ืืขืืื ืืกืื ืื ืชืื ืื.
ืกืงืจืืคืืื ืฉื ClickHouse
ืืฉื ืช 1960, ืืชืืืืงืื ืืืจืืงืื ืืืืฆื ืืื ืืจื ืืืืื ืจ EP ืืชื ืืืืจ"ืืืคืงืืืืืืช ืืืืชื ืกืืืจื ืฉื ืืืชืืืืงื ืืืืขื ืืืืข" ("ืืืขืืืืช ืืืืชื ืืืื ืช ืฉื ืืชืืืืงื ืืืืขื ืืืืข") ืฉืืขืืื ืกืืืื ื ืืชืืืจ ืืฉืื ืื ืืืื ืขื ืืื ืืืงืื ืืชืืืืื. ืืชืืืืงื ืืื ืืืข ืืืคืฉื, ืืืืงืื ืคืืืืงืืืื ืืืืืขืื ืืฆืืจื ืืชืืืืช ืืื ื ืืจืืืืืืืืื, ืืื ืืืืื ืจ EP ืืืืืฉ ืฉืื ืืืื ืืืืจ.
ืื ืงืืืช ืืื ืฉืื, ืงืืืงืืืืก - ืืืชื ืืืืจืืช. ืื ืื ืกื ืืืืฉ ืืช ืืืืื ืจ, ืืคืฉืจ ืืืืจ ืืืช: ืืืขืืืืช ืืืืชื ื ืชืคืกืช ืืืืืื ืงืืืงืืืืก ืืืืืื ืจืื ืฉื ืืืฉืืืื ืื ืืืืืื!
ืืืืืื, ืืืื ื ืืงื ืืืกื ื ืชืื ืื ืืืื ืืืช, ืฉืืืื ื ืืขื ืื ื ืชืื ืื ืืืขื ืืจืฆืืคืืช. ืื ืื ื ืจืืฆืื ืืงืื ืืื ื ืืงืฉืืช ืืืืืืจ ืฉื ื. ืืืงืฉื - ืืฉืชืืฉ ืื ืงืืืงืืืืก, ืื ืื ืืชืจืืืฉ ืฉืืื ืชืืื ื ืขืืืจื. ืงืืืงืืืืก ืื ืืืืืง ืืื ืืื ืืฉืืฉ ืื ืจืง ืืืื ืืจื ื, ืืื ืื ืืฉืืืืง ืื ืืชืื ืคืื ื ืกื, AdTech, ืืื ืื ื ืืืืื ืืื ืืื . IN ืืืกื ื ืชืื ืื ืืืื ืืืช ื ืขืฉื ืฉืืืืฉ ืืกืืืื ืืืื ืืช ืืืจืืืช ืืื "ืืืื" ืื "ืคืชืืช ืฉืื", ืขื ืืืืืืช ืจืืืช ืืืฆืืจืฃ (ืืขืืชืื ืืจืืืื), ืืื ืชืื ืื ืืืจื ืืื ืืืืืกื ืื ืืืฉืชื ืื ืืืขืจืืืช ืืกืืืืืช.
ืืืื ื ืืงื ืชืจืืืฉ ืืืจ - ืกืืจืช ืืื: ื ืืืืจ ืืืฉืืจืื, ืจืฉืชืืช, ืกืืืืกืืืงืืช ืฉืืืืฉ, ืืืื ืืจื ื ืฉื ืืืืจืื. ืืื ืื ื ื ืชืงืืื ืืืืจืืขืื ืคืฉืืืื ืืืื ืืกืืืจืื ืืืื. ืงืืืงืืืืก ืื ืคืืชืื ืขืืืจ ืื ืืืงืืจ, ืืื ืืืืืื ืืช ืขืฆืื ืขืืืืช ืืืื, ืืื ืืกืืื ืฉืืืจืืช ืืืืืืช ืืฉืชืืฉืืช ืงืืืงืืืืก ืืืืืจ ืื ืืืืจ ืืืืข. ืืื ืืืืืง ืื ืื ืืชืืื ืงืืืงืืืืก ืขืืืจ ืกืืจืืช ืืื, ืขืฉืื ื ืืื ืืืืืกืก ืขื ืืืืฉื ืืืชืืฆืืืช InfluxDB ะธ ืืืื ืืื ืื DB - ืืชืืื ืกืืจืช ืืื ืืกืื ื ืชืื ืื.
ะ ืกืืจืช ืืื ืืืจื ืืื ืืฉืชืืฉืื ืืืืื ืฆืจื - ืืื ืขืืืืืช ืงืื ืืช. ื ืชืื ืื ืจืืื ืืืืืื ืืืืืข ืื ืืืืจ - ืืืืืื ื ืจืฉืืืืช ืืฉื ืืื - ืืื ืืืจื ืืื ืืืืขืื ืืคืจืฆืื ืงืื ืื (ืืื ืืืช ื ึฐืึดืืจึธื). ืืื, ืืฉ ืฆืืจื ืืกืงืจืืคื ืืืกืคื ืืืจ, ืืืฉืืืืชืืช ืขืฆืื ืืฉ ืคืจืืื ืืฉืืื.
ื ืืืื ืืืื. ืืืกืืฃ ืืืื ืื ืืืกื ื ืชืื ืื ืืื ืืืจื ืืื ืืจืืข, ืืื ืงืืืงืืืืก ืื ืืืื ืืืืขืฉืืช ืขื ืืื ืืขืจืืช ืืืชืืืจ ืืขืื. ืืืจืืช ืจืืืช ืืฉืชืืฉืืช ืงืืืงืืืืก ืืืืืง ืืืืจื ืื. ืืืงืจื ืื, ืื ื ืืฉืชืืฉืื ืืืืื ืจืืื ืฉืืืื ืฉืื ืื ื ืืืืกื ืื ืืช ืื ืืืืื ืื (ืืืืืื, ืืืืคืก JSON), ืื ืืืชืื ืืืชืืืืช. ืื ืชืื ืื ื ืืขื ืื ืืืจื ืืื ืืืฆืืืช ืืืืืืช (ืงืืฆืื), ืืื ืื ื ืืืคืฉืื ืืคื ืฉืื ืืืฉืื.
ืขืืืจ ืื ืืืช ืืืคืื ืงืฆืืืช ืืืื, ืืฉืชืืฉืื ืืืจื ืืื ืืืกืืกื ื ืชืื ืื ืืืืืืื. ืงืืืงืืืืก ืืคืฉืจ ืืขืฉืืช ืืื ืืื ืื ืืื ืขื ืฉืื ืืชืขืื ืขืืืื. ืืืื ื ืกืชืื ืืงืจืื ืืืชืจ ืกืืจืช ืืื ืชืจืืืฉ, ืืืืฆื "ืืืฉื" ื ืืื ืงืืืงืืืืก ืืชืจืืืฉ ืื.
ืกืืจืช ืืื
ื ืืื ืืขืืฉืื ืื ืืชืจืืืฉ ืืขืืงืจื ืฉืขืืืจื ืงืืืงืืืืก ื ืืฉื ืืคืชืจืื ืืกืื ืืจืื. ืกืืจืช ืืื ืืื ืงืืืฆื ืฉื ืืืจืืขืื ืืกืืืจืื ืืืื, ืืืืืฆืืื ืฉืื ืืืื ืืชืืืื ืืืฉืื ืืืืจื ืืื. ืืืืืื, ืื ืืืื ืืืืืช ืงืฆื ืืื ืืืื ืื ืืกืคืจ ืืชืืืืืื ืืืขืจืืช. ืื ืื ืฉื ืืชื ืืืื ืืชืงืชืง ืขื ืืื ืืืืื ืืื ืกืืจืช ืืื:
ืจืื ืกืืื ืืืืจืืขืื ืืืื ืืืืขืื ืืืขืงื. ืื ืืืื ืืืืืช ืื ืจืง ื ืืืืจ ืืืื ืืจื ื, ืืื ืื ืืืฉืืจืื ืืืืชืืื: ืืืื ืืืช, ืืขืจืืืช ืชืขืฉืืืชืืืช, IOT, ืืคืขืืื ืื ืืื ืืืช ืืืชื ืืืืืฉืืช, ืืชื ืืืืขื ืฉื Yandex ืืืจ ืืื ืืกื ืงืืืงืืืืก-ืฉืจืช.
ืืืฉื, ืืฉ ืืืจืืช ืฉืืืกืคืืช ื ืชืื ืื ืืืื ืืืช. ืื ืืื ืฉื ืืืช, ืืืืฉื ืื ืืกืคืื ืช ืืืืืืืช ืฉืืืืื ืืืืช ืืืืืืช ืฉืื ืืช. ืืื ืืกืื ืืืืืื ืืืชื, ืืื ืื ืืืืื ืืื ืกืื ืืืืื ืืืืื ืืขืืืืช ืืฉืชืืฉืื ืืืื ืืฉืื, ืื ืกืคืื ืช ืืืืืืช ืื ืฆืจืืื ืืืืืช ืืืื ืืคืืื ืืฉื ืืื. ืื ืืฉืืชื ืืื ืืคืกื ืืกืฃ, ืืืื ืืฉืื ืืืืืช ืืช ืืืกืืื ืื ืฉืืขืฆืืจืืช ืืืื ืืื ืืืืืืช.
ืืืื ืืฉ ืืืืื ืฉื ืืืืจื ืืืืข ืืืืืืื ืฉืืืืืื ืกืืจืช ืืื. ืืืชืจ ืื ืืขื DB ืืกืื ืื ืชืื ืื ืืฉืื ืื ืืืืจืืื ืืืืฉืื, ืืชืืืื ืืืฆืื ืืืชื ืืคื ืกืื:
ืืกืื ืืืื ืืื ืืืจ ืืื ืกืืจืช ืืืืก. ืื ืืกืื ื ืชืื ืื ืฉื ืืจืคืื ืฆืืืืื, ืืื ืกืืจืช ืืืs ืืื ืืืจ ืืืชืจ ืืืืื ืืฉื ืื ืืืืจืื ืืช. ื ืฆืืืื ืืืคืืื ืืื ืฉื ืืฉืคืืช ืืืืจื ืืืืข ืื ืื InfluxDB, ืคืจืืืชืืืก, KDB, ืืืื ืืื ืื DB (ืื ืื ืขื PostgreSQL), ืคืชืจืื ืืช ื ืืืืื ืืขืืจืืช. ืงืืืงืืืืก ืืืื ืืฉืืฉ ืื ืืื, ืืืื ืืฉืืฉ. ืืจืฉื ืื ืืชืช ืืื ืืื ืืืืืืืช ืคืืืืืืช.
ืืืช ืืืืืฆืืช ืืื ืืืืจื CloudFlare (CDN-ืกืคืง). ืื ืขืืงืืื ืืืจืืื CDN ืืจื ืงืืืงืืืืก (DNS-ืืงืฉืืช, HTTP-ืฉืืืืชืืช) ืขื ืขืืืก ืขืฆืื - 6 ืืืืืื ืืืจืืขืื ืืฉื ืืื. ืืื ืขืืืจ ืงืคืงื, ืืืื ื ืงืืืงืืืืก, ืืืกืคืง ืืืืื ืืช ืืจืืืช ืืืืืช ืืืืื ืื ืฉื ืืืจืืขืื ืืืขืจืืช ืืืื ืืืช.
Comcast - ืืืืืืืืื ืืชืืื ืืืืงืืืื ืืงืฆืื ืืืจื"ื: ืืื ืืจื ื, ืืืืืืืื ืืืืืืืืช, ืืืคืื ืื. ืื ืืฆืจื ืืขืจืืช ืืงืจื ืืืื CDN ืืชืื ืงืื ืคืชืื ืคืจืืืืงื ืืงืจืช ืชื ืืขื ืฉื ืืคืืฆ'ื ืืขืืื ืขื ืื ืชืื ืื ืืขืฆืืืื ืฉืื. ืงืืืงืืืืก ืืฉืืฉ ืืงืฆื ืืืืจื ืื ืืชืื.
ืคืจืงืื ื ื ึดืื ึธื ืึผึฐ ืงืืืงืืืืก ืืชืื ืฉืื PMMืืืืกื ื ืืืืจ ืฉื ืฉืื ืื MySQL.
ืืจืืฉืืช ืกืคืฆืืคืืืช
ืืืกืืกื ื ืชืื ืื ืฉื ืกืืจืืช ืืื ืืฉ ืืจืืฉืืช ืกืคืฆืืคืืืช ืืฉืืื.
- ืืื ืกื ืืืืจื ืืกืืื ืื ืจืืื. ืขืืื ื ืืืื ืืก ื ืชืื ืื ืืืจืืื ืจืืื ืืืืืจืืช ืจืื. ืงืืืงืืืืก ืืื ืขืืฉื ืืืช ืืืื ืืืืืื ืฉืื ืืชืืกืคืืช ืฉืื ืื ืืืกืืืช. ืื ืืืื ืืก ืืื ืงืืืฅ ืืืฉ ืืืืกืง, ืื ืืชื ืืืืกื ืชืืกืคืืช ืงืื ืืช ืืฆืืจื ืืื ืื ืืืจืช. IN ืงืืืงืืืืก ืขืืืฃ ืืืื ืืก ื ืชืื ืื ืืืฆืืืช ืืืืืืช ืืื ืฉืืจื ืืืช ืืื ืคืขื.
- ืชืื ืืช ืืืืฉื. ืืชืื ืกืืจืช ืืื ืื ืื ื ืืืจื ืืื ืื ืืืืขืื ืืช ืืื ื ืื ืชืื ืื ืืืืืืื. ืืคืฉืจ ืืื ืืช ืืขืจืืช ื ืืืืจ ืืืคืืืงืฆืื ืกืคืฆืืคืืช, ืืื ืื ืงืฉื ืืืฉืชืืฉ ืื ืืืคืืืงืฆืื ืืืจืช. ืื ืืืจืฉ ืชืืื ืืช ืืืืฉื ืืืชืจ. ืงืืืงืืืืก, ืืืคืฉืจ ืื ืืขืฉืืช ืืืช, ืืืจืืช ืฉืื ืืกืืก ืืืงืื ืืืง.
- ืืืกืื ืืขืื ืืฉืืืช ื ืชืื ืื. ืืืจื ืืื ื ืกืืจืช ืืื ืืืืช ืขืฆืืื ืฉื ื ืชืื ืื, ืืืื ืืฉ ืืืืกื ืืืชื ืืฆืืจื ืืขืืื ืืื ืืืคืฉืจ. ืืืืืื, ื InfluxDB ืืืืกื ืืืื ืืื ืืชืืื ื ืืขืืงืจืืช ืฉืื. ืืื ืืืื ืืืกืื, ืืชื ืื ืฆืจืื ืืืืืช ืืกืืื "ืืฉืืื" ื ืชืื ืื ืืฉื ืื ืืืขืฉืืช ืกืื ืืืฉืื ืืืืืช ืืคืืชื - ืกืคืืจื ืืืืืืืืช ืฉื ืืืจืืืื.
- ืฉืืืืชืืช ืืืืจืืช ืขื ื ืชืื ืื ืืฆืืืจืื. ืืคืขืืื ืืขื ืืื ืืืกืชืื ืขื 5 ืืืงืืช ืืืืจืื ืืช ืืืืืง ืฉื ืืืคืืืช ืฉื ืืืช, ืืื ืื ืชืื ืื ืืืืฉืืื ืืืชืื ืฉืื ืืืื ืฆืืจื ืืคืืจืื ืืงื ืื ืฉื ืื - ืื ืืกืืืืกืืืงื ืืืืืช. ืชืืืื ืืืกืื ืืื ืืืจืืืช, ืืืจืช ืืงืฉื ื-3 ืืืืฉืื ืืืงื ืืจืื ืืืื ืืื ืืืฉืืื ืื ื ืงืืืงืืืืก.
- ืืงืฉืืช ืืื "ื ืงืืื ืืืจืื ื, ื ืืื ืืืืยป. ืืื ืืืคืืื ืืื ื ืกืืจืช ืืื ืฉืืืืชืืช: ืืกืชืื ืขื ืืืืืื ืื ืืืฆื ืืืืจืื ืฉื ืืืขืจืืช ืืจืืข ืืืื t. ืืื ืฉืืืืชืืช ืื ืืืื ื ืขืืืืช ืขืืืจ ืืกื ื ืชืื ืื, ืืื ืืชื ืื ืฆืจืื ืืืืืช ืืกืืื ืืืฆืข ืืืชื.
- ืกืืจืช ืืื "ืืืืงื".. ืกืืจืช ืืื ืืื ืกืืจืช ืืื. ืื ืืฉ ืฉืชื ืกืืจืืช ืืื, ืืขืชืื ืงืจืืืืช ืืฉ ืฆืืจื ืืืืืืจ ืืืงืืจืืฆืื ืืื ืืื. ืื ื ืื ืืขืฉืืช ืืืช ืืื ืืกืื ืื ืชืื ืื, ืืืืืื ืขื ืกืืจืืช ืืื ืื ืืืืฉืจืืช: ืื ื ืืื ื ืงืืืืช ืืื, ืืฉ ืืืจืืช. ืืชื ืืืื ืืฉืงืื ืืืืฆืข, ืืื ืคืชืืื ืขืืืื ืืืื ืฉื ืืืจ, ืื ืื ืื ืืจืืจ.
ืืื ื ืจืื ืืืฆื ืืืจืืฉืืช ืืืื ืืชืงืืืืืช ืงืืืงืืืืก.
ืขืจืืชื
ะ ืงืืืงืืืืก ืชืืื ืืช ืขืืืจ ืกืืจืช ืืื ื ืืชื ืืขืฉืืช ืืืจืืื ืฉืื ืืช, ืืืชืื ืืืืืช ืกืืืจืืช ืื ืชืื ืื. ืืคืฉืจ ืืื ืืช ืืขืจืืช ืขื ื ืชืื ืื ืจืืืืื ืืฉืื ืื ื ืืืืขืื ืืช ืื ืืืืืื ืืจืืฉ. ืืืฉื, ืขืฉืืชื ืืช ืื CloudFlare ืขื ื ืืืืจ CDN ืืื ืืขืจืืช ืืืชืืืช ืืืื. ื ืืชื ืืื ืืช ืืขืจืืช ืืืืืช ืืืชืจ ืืื ืืจืช ืืช ืื ืืชืฉืชืืช ืืืฉืืจืืชืื ืืฉืื ืื. ืืืงืจื ืฉื ื ืชืื ืื ืื ืกืืืจืื, ืื ืื ื ืื ืืืืขืื ืืจืืฉ ืขื ืื ืื ืื ื ืขืืงืืื - ืืื ืื ืจืื ืืืงืจื ืื ืคืืฅ ืืืืชืจ.
ื ืชืื ืื ืจืืืืื. ืขืืืืืช. ืืกืืืื ืคืฉืืื - ืขืืืืืช ืขื ืืกืืืื ืื ืืจืฉืื:
CREATE TABLE cpu (
created_date Date DEFAULT today(),
created_at DateTime DEFAULT now(),
time String,
tags_id UInt32, /* join to dim_tag */
usage_user Float64,
usage_system Float64,
usage_idle Float64,
usage_nice Float64,
usage_iowait Float64,
usage_irq Float64,
usage_softirq Float64,
usage_steal Float64,
usage_guest Float64,
usage_guest_nice Float64
) ENGINE = MergeTree(created_date, (tags_id, created_at), 8192);
ืืืื ืืืื ืจืืืื ืืื ืืจืช ืืืืืฉืื ืคืขืืืืช ืืขืื ืช ืืขืจืืช (ืืืฉืชืืฉ, ืืขืจืืช, ืืืชืืื, ื ืืื). ืคืฉืื ืื ืื, ืืื ืื ืืืืฉ. ืื ืื ืื ื ืจืืฆืื ืกืืื ืืืืฉื ืืืชืจ, ืื ืื ืื ื ืืืืืื ืืืฉืชืืฉ ืืืขืจืืื.
ื ืชืื ืื ืื ืกืืืจืื. ืืขืจืืื:
CREATE TABLE cpu_alc (
created_date Date,
created_at DateTime,
time String,
tags_id UInt32,
metrics Nested(
name LowCardinality(String),
value Float64
)
) ENGINE = MergeTree(created_date, (tags_id, created_at), 8192);
SELECT max(metrics.value[indexOf(metrics.name,'usage_user')]) FROM ...
ืืื ื ืืงืื ื ืื ืฉื ื ืืขืจืืื: metrics.name ะธ metrics.value. ืืื ืืชื ืืืื ืืืืกื ื ืชืื ื ื ืืืืจ ืฉืจืืจืืชืืื ืืืื ืืืขืจื ืฉื ืฉืืืช ืืืขืจื ืืืืืืช ืขืืืจ ืื ืืืจืืข. ืืืืคืืืืืืฆืื ื ืืกืคืช, ืืืงืื ืืื ื ืืื ืืื, ืืชื ืืืื ืืขืฉืืช ืืื. ืืืฉื, ืืื ืขืืืจ ืืฆืืฃ-ืขืจื, ืืืจ - ืขืืืจ int-ืืืืื ื ืื int ืื ื ืจืืฆื ืืืืกื ืืฆืืจื ืืขืืื ืืืชืจ.
ืืื ืืืื ื ืืื ืงืฉื ืืืชืจ ืืืฉืช. ืชืฆืืจื ืืืฉืชืืฉ ืืืื ื ืืืืื, ืชืื ืฉืืืืฉ ืืคืื ืงืฆืืืช ืืืืืืืช ืืื ืืฉืืืฃ ืืช ืืขืจืืื ืฉื ืชืืืื ืืืื ืืงืก ืืืืืจ ืืื ืืืขืจื:
SELECT max(metrics.value[indexOf(metrics.name,'usage_user')]) FROM ...
ืืื ืื ืขืืืื ืขืืื ืื ืืืจ. ืืจื ื ืืกืคืช ืืืืกื ื ืชืื ืื ืื ืกืืืจืื ืืื ืืคื ืฉืืจื.
ื ืชืื ืื ืื ืกืืืจืื. ืืืจืืืืช. ืืฉืืื ืืกืืจืชืืช ืื, ืืื ืืขืจืืื, ืฉืืืช ืืขืจืืื ืืืืืกื ืื ืื ืืื ืืช. ืื 5 ืืืืืืช ืืืืขืืช ืืืืฉืืจ ืืื ืืืช ืืืช, ื ืืฆืจืืช 000 ืฉืืจืืช ืืืกื ืื ืชืื ืื:
CREATE TABLE cpu_rlc (
created_date Date,
created_at DateTime,
time String,
tags_id UInt32,
metric_name LowCardinality(String),
metric_value Float64
) ENGINE = MergeTree(created_date, (metric_name, tags_id, created_at), 8192);
SELECT
maxIf(metric_value, metric_name = 'usage_user'),
...
FROM cpu_r
WHERE metric_name IN ('usage_user', ...)
ืงืืืงืืืืก ืืชืืืื ืขื ืื - ืืฉ ืื ืืจืืืืช ืืืืืืืช ืงืืืงืืืืก SQL. ืืืืืื, maxIf - ืคืื ืงืฆืื ืืืืืืช ืืืืฉืืช ืืช ืืืงืกืืืื ืืคื ืืื ืืืฉืจ ืชื ืื ืืืฉืื ืืชืงืืื. ืืชื ืืืื ืืืชืื ืืื ืืืืืืื ืืืื ืืืงืฉื ืืืช ืืืืฉื ืืื ืืช ืืขืจื ืขืืืจ ืืกืคืจ ืืืืื.
ืืื ื ืฉืืื ืฉืืืฉ ืืืฉืืช:
ืืื ืืืกืคืชื "ืืืื ื ืชืื ื ืืืกืง" ืขืืืจ ืงืืืฆืช ื ืชืื ื ืืืืงื ืืืฉืื. ืืืงืจื ืฉื ืขืืืืืช, ืืฉ ืื ื ืืช ืืืื ืื ืชืื ืื ืืงืื ืืืืชืจ: ืืืืกื ืืงืกืืืืืช, ืืืืจืืช ืฉืืืืชื ืืงืกืืืืืช, ืืื ืื ืื ื ืืฉืืืื ืขื ืืื ืืฆืืจื ืืืงืืื ืืื ืืืช ืืืช.
ืืืงืจื ืฉื ืืขืจืืื, ืืื ืงืฆืช ืืืชืจ ืืจืืข. ืื ืชืื ืื ืขืืืื ืืืืกืื ืืืื ืื ืืชื ืืืืกื ืืคืืก ืื ืกืืืจ. ืืื ืงืืืงืืืืก - ืืกื ื ืชืื ืื ืขืืืื, ืืืฉืื ืื ื ืืชืืืืื ืืืืกื ืืื ืืืขืจื, ืืื ืืืคื ืืฉืืจื ืืืช, ืืื ืื ื ืืฉืืืื ืขื ืืืืฉืืช ืืืขืืืืช. ืืื ืคืขืืื ืชืฆืืจืื ืืงืจืื ืืช ืื ืืืขืจื ืืืืืจืื, ืืื ืืืฆืื ืื ืืช ืืืืื ื ืืจืฆืื โ ืืื ืืืขืจื ืืืื, ืื ืืืืืจืืช ืืืจืืช.
ืืืืช ืืืืจืืช ืืืฉืชืืฉืืช ืืืืฉื ืื (ืืืฉื,
ืืืืฉื ืืคืฉืืื ืืืืชืจ ืืื ืขื ืืืจืืืืช. ืืื ืื ืชืื ืื ืืืืกืื ืืฆืืจื ืืจืืขื, ืืืื ืืืืื ืืืื, ืืื ืืืฉืจ ืืฉืืืืชืืช ืืืืกืกืืช ืขื ืืกืคืจ ืืืืื, ClickHouse ืื ืขืืื ืืฆืืจื ืืืคืืืืืืช.
ืชืื ืืช ืืืืจืืืืช
ื ื ืื ืฉืืืจื ื ืืืขืื ืืขืจื. ืืื ืื ืื ืื ื ืืืืขืื ืฉืจืื ืืืืืช ืืืืืื ืื ืฉืื ื ืืฆืืืื ืจืง ืืืื ืืฉืชืืฉืื ืืืขืจืืช, ื ืืื ืื ืืกืฃ ืืืืฉ ืืช ืืืืืื ืืืื ืืขืืืืืช ืืืขืจื ืืจืืช ืืืืื ืืืจื ืื:
CREATE TABLE cpu_alc (
created_date Date,
created_at DateTime,
time String,
tags_id UInt32,
metrics Nested(
name LowCardinality(String),
value Float64
),
usage_user Float64
MATERIALIZED metrics.value[indexOf(metrics.name,'usage_user')],
usage_system Float64
MATERIALIZED metrics.value[indexOf(metrics.name,'usage_system')]
) ENGINE = MergeTree(created_date, (tags_id, created_at), 8192);
ืืขืช ืืื ืกืชื ืงืืืงืืืืก ืืกืคืืจ ืืืชื ืืืืืืืืช. ืื ืชืืืื ืืฉืื ืขืกืงืื ืขื ืื ืื: ืืชืื ืืช ืืืืฉื ืืืืืืช, ืืื ืฉืืคื ื ืืช ืืขืืืืืช ืื ืคืืฆืืช ืืืืชืจ. ืฉืืื ืื ืฉืื ืื ืืฆืจืื ืืฉื ืืช ืืช ื-Insert and ETLืฉืืืฉืื ืืืื ืืก ืืขืจืืื ืืืืื. ืคืฉืื ืขืฉืื ื ืืื ืืืืจ, ืืืกืืคื ืืื ืจืืงืืืื ืืงืืืื ื ืชืืื ืืช ืืืืจืืืืช ืืืืืจื ืืืชืจ ืฉืชืืื ืืืชืืื ืืืฉืชืืฉ ืื ืืื.
ืงืืืงืื ืืืืืกื
ืขืืืจ ืกืืจืช ืืื ืื ืืฉื ื ืืื ืืื ืืชื ืืืจื ืืช ืื ืชืื ืื ืื ืืืืช ืืืืืข ืืืืื ืืืืืช ืืืืื ืืืื. IN ืงืืืงืืืืก ืืฉ ืกื ืืืื ืืืฉืืช ืืคืงื ืืืืกื ืฉื 1:10, 1:20 ืืืคืขืืื ืืืชืจ. ืืืฉืืขืืช ืืื ืฉ-1 TB ืฉื ื ืชืื ืื ืื ืืจืืืื ืืืืกืง ืชืืคืกืื 50-100 GB. ืืืื ืงืื ืืืชืจ ืืื ืืื, ื ืืชื ืืงืจืื ื ืชืื ืื ืืืขืื ืืืชื ืืืจ ืืืชืจ.
ืืื ืืืฉืื ืจืื ืืืืื ืฉื ืืืืกื, ืงืืืงืืืืก ืชืืื ืืงืืืงืื ืืืืื:
ืืืื ืืืืืื:
CREATE TABLE benchmark.cpu_codecs_lz4 (
created_date Date DEFAULT today(),
created_at DateTime DEFAULT now() Codec(DoubleDelta, LZ4),
tags_id UInt32,
usage_user Float64 Codec(Gorilla, LZ4),
usage_system Float64 Codec(Gorilla, LZ4),
usage_idle Float64 Codec(Gorilla, LZ4),
usage_nice Float64 Codec(Gorilla, LZ4),
usage_iowait Float64 Codec(Gorilla, LZ4),
usage_irq Float64 Codec(Gorilla, LZ4),
usage_softirq Float64 Codec(Gorilla, LZ4),
usage_steal Float64 Codec(Gorilla, LZ4),
usage_guest Float64 Codec(Gorilla, LZ4),
usage_guest_nice Float64 Codec(Gorilla, LZ4),
additional_tags String DEFAULT ''
)
ENGINE = MergeTree(created_date, (tags_id, created_at), 8192);
ืืื ืื ื ืืืืืจืื ืืช ื-codec DoubleDelta ืืืงืจื ืืื, ืืืงืจื ืืฉื ื - ืืืจืืื, ืืืืืื ื ืืกืืฃ ืขืื LZ4 ืึฐืึดืืกึธื. ืืชืืฆืื ืืื, ืืืื ืื ืชืื ืื ืืืืกืง ืืฆืืืฆื ืืืื:
ืื ืืจืื ืืื ืืงืื ืชืืคืกืื ืืืชื ื ืชืื ืื, ืื ืืืืฆืขืืช ืจืืืื ืงืืืงืื ืืืืืกืืช ืฉืื ืืช:
- ืืงืืืฅ GZIP ืืืืกืง;
- ื-ClickHouse ืืื ืงืืืงืื, ืืื ืขื ืืืืกืช ZSTD;
- ื-ClickHouse ืขื ืงืืืงืื ืืืืืกื LZ4 ื-ZSTD.
ื ืืชื ืืจืืืช ืฉืืืืืืช ืขื ืงืืืงืื ืชืืคืกืื ืืจืื ืคืืืช ืืงืื.
ืืืื ืืฉืื
ืื ืคืืืช ืืฉืื
ืืื ืืืืืืืืช ืืืขืื ืืฉืชืืฉืชื 64. ืจืืื. ืืื ืื ืืืจื ื 32. ืจืืื, ืื ืื ืืืื ืืคืืื ืืืชืจ ืืื. ืื ืืืื ืืืื ืขื ืืื ืืืืจ'ื ืืคืจืงืื ื ืืืืืจ ืืืงืืฉืจ ืืืขืื. ืืฉืื ืืืฉืชืืฉ ืืกืื ืืงืืืคืงืื ืืืืชืจ ืฉืืชืืื ืืืฉืืื: ืืคืืื ืคืืืช ืืืืื ืืืืกืง ืืืฉืจ ืืืืืจืืช ืืฉืืืืชื. ืงืืืงืืืืก ืืืื ืจืืืฉ ืืื.
ืื ืืชื ืืืื ืืืฉืชืืฉ int32 ืืืงืื int64, ืื ืฆืคื ืืขืืืื ืฉื ืืืขื ืคื ืฉื ืืื ืืืืฆืืขืื. ืื ืชืื ืื ืชืืคืกืื ืคืืืช ืืืืจืื, ืืื ื"ืืฉืืื" ืขืืื ืืจืื ืืืชืจ ืืืจ. ืงืืืงืืืืก ืืืืื ื ืคื ืืืืช ืืืื ืืขืจืืช ืืืืคืกืช ืืืื; ืืื ืขืืฉื ืฉืืืืฉ ืืจืื ืืื ืืืคืฉืจืืืืช ืฉืืขืจืืืช ืืืืจื ืืืช ืืกืคืงืืช.
ืฆืืืจื ื ืชืฆืืืืช ืืืืืฉืืช
ืฆืืืจื ืืชืฆืืืืช ืืืืืฉืืช ืืืคืฉืจืืช ืื ืืืฆืืจ ืืืจืืืื ืืืืจืืขืื ืฉืื ืื:
ืืืืืื, ืืืชืื ืฉืืฉ ืื ื ืชืื ื ืืงืืจ ืื ืืฆืืืจืื, ืืชืืื ืืฆืจืฃ ืืืืื ืชืฆืืืืช ืืืืฉืืืช ืขื ืกืืืื ืืืืืืื ืืืืฆืขืืช ืื ืืข ืืืืื SummingMergeTree (SMT). SMT ืืื ืืื ื ื ืชืื ืื ืฆืืืจืช ืืืืื ืฉืืืฉื ืืืจืืืื ืืืืคื ืืืืืืื. ื ืชืื ืื ืืืืืืื ืืืื ืกืื ืืืกื ืื ืชืื ืื, ืื ื ืฆืืจืื ืืืืืืืืช, ืื ืืชื ืืืฉืชืืฉ ืื ืืืืืืช ืืืืืืช ืืืืื ืื.
TTL - "ืืฉืื" ื ืชืื ืื ืืฉื ืื
ืืื "ืืฉืืื" ื ืชืื ืื ืฉืืืจ ืืื ืฆืืจื ืืื? ืงืืืงืืืืก ืืืืข ืืื ืืขืฉืืช ืืช ืื. ืืขืช ืืฆืืจืช ืืืืืืช, ืืชื ืืืื ืืฆืืื TTL ืืืืืืื: ืืืืืื, ืฉืื ื ืืืืกื ืื ื ืชืื ื ืืงืืช ืืืื ืืื, ื ืชืื ืื ืืืืืื ืืืฉื 30 ืืื, ืืืขืืื ืื ื ืืืขืื ืื ืชืื ืื ืฉืืืขืืื ืื ืืืืฉืืื:
CREATE TABLE aggr_by_minute
โฆ
TTL time + interval 1 day
CREATE TABLE aggr_by_day
โฆ
TTL time + interval 30 day
CREATE TABLE aggr_by_week
โฆ
/* no TTL */
ืจื ืฉืืืชื - ืืืืง ื ืชืื ืื ืขื ืคื ื ืืืกืงืื
ืื ืืืงืืื ืืช ืืจืขืืื ืืื ืืืื, ื ืืชื ืืืืกื ื ืชืื ืื ืงืืืงืืืืก ืืืงืืืืช ืฉืื ืื. ื ื ืื ืฉืื ื ืจืืฆืื ืืืืกื ื ืชืื ืื ืืืื ืขืืืจ ืืฉืืืข ืืืืจืื ืืืงืืืื ืืืืจ ืืืื SSD, ืืฉืื ื ื ืชืื ืื ืืืกืืืจืืื ื ืืกืคืื ืืืงืื ืืืจ. IN ืงืืืงืืืืก ืื ืืคืฉืจื ืขืืฉืื:
ืืชื ืืืื ืืืืืืจ ืืืื ืืืช ืืืกืื (ืืืื ืืืช ืืืกืื) ืื ืงืืืงืืืืก ืืขืืืจ ื ืชืื ืื ืืืืืืืืช ืขื ืืืขื ืืชื ืืื ืืกืืืืื ืืืืกืื ืืืจ.
ืืื ืื ืื ืืื. ืืจืืช ืืืื ืกืคืฆืืคืืช, ื ืืชื ืืืืืืจ ืืืืื ืืืืืง ืืชื ืื ืชืื ืื ื ืื ืกืื ืืืืกืื ืงืจ. ืืืืืื, ื ืชืื ืื ืืืืืกื ืื ืืืืกืง ืืืืจ ืืืื ืืืฉื 7 ืืืื, ืืื ืื ืฉืืฉื ืืืชืจ ืืืขืืจ ืืืืื. ืื ืืื ืื ืื ืืืคืฉืจ ืื ืืฉืืืจ ืขื ืืืฆืืขืื ืืงืกืืืืืื ืฉื ืืืขืจืืช, ืชืื ืฉืืืื ืืขืืืืืช ืืื ืืืืื ืืกืฃ ืขื ื ืชืื ืื ืงืจืื:
CREATE TABLE
...
TTL date + INTERVAL 7 DAY TO VOLUME 'cold_volume',
date + INTERVAL 180 DAY DELETE
ืืืืื ืืืืช ืืืืืืืืช ืงืืืงืืืืก
ืืืขื ืืื ืืืจ ืงืืืงืืืืก ืืฉ "ืืืืืืืืก" ืืืื, ืืื ืื ืืชืงืืืื ืขื ืืื ืืืขืืืืช - ืืืจ ืฉืื ื ืืฆื ืืืืืจื ืืืืข ืืืจืื. ืืืืืื, ืื ื ืืื ืืืชืืื ืืช ืืืืืืืืืช ืงืืืงืืืืก:
- ืืขืจืืื. ืืชืื ืงืืืงืืืืก ืชืืืื ืืืื ืืืื ืขืืืจ ืืขืจืืื, ืืื ืื ืืืืืืช ืืืฆืข ืืืฉืืืื ืืืจืืืื ืขืืืื.
- ืฆืืืจืช ืืื ื ื ืชืื ืื. ืื ืืืช ื"ืชืืื ืืช ืืจืืฆืืืช" ืงืืืงืืืืก. ืืืจืืช ืืขืืืื ืฉืืืืจ'ื ืืืื ืืงืก ืืืืจืื ืฉืื ืื ื ืื ืจืืฆืื ืืฆืืืจ ื ืชืื ืื, ืืื ืืฆืืืจ ื ืงืืืงืืืืก, ืื ืื ืืืืจ ืื ืื.
- ืฆืคืืืช ืืืืืฉืืช. ืืื ืขื ืืื ื ื ืชืื ืื ืืฆืืืจืื, ืชืฆืืืืช ืืืืืฉืืช ืืืคืฉืจืืช ืื ืืขืฉืืช ื ืืืืช ืืื ืืืช ืฆืืืจื.
- ClickHouse SQL. ืืืื ืืจืืื ืืฉืคื SQL ืขื ืืื ืชืืื ืืช ื ืืกืคืืช ืืืืขืืืืช ืืืืื ืืช ืจืง ื ืงืืืงืืืืก. ืืขืืจ ืื ืืื ืืื ืืจืืื ืืฆื ืืื, ืืืืกืจืื ืืฆื ืฉื ื. ืขืืฉืื ืืืขื ืื ืืืกืจืื ืืช ืืขืืืช SQL 92 ืืกืจื ื ืืช ืื, ืขืืฉืื ืื ืจืง ืืจืืื.
- ืืืืื-ืืืืืืื. ืืื ืื ืขืืืื ืืืกืืก ื ืชืื ืื ืืืฉืื?
- ML-ืชืืืื. ืื ืืืื ืืืกืื ื ืชืื ืื ืฉืื ืื, ืืืงื ืืืืื ืืืชืจ, ืืืงื ืืจืืขืื ืืืชืจ.
- ืงืื ืคืชืื. ืื ืื ื ืืืืืื ืืืจืืื ืงืืืงืืืืก ืึทืึทื. ืขืืฉืื ื ืงืืืงืืืืก ื-500 ืชืืจืืื, ืืืกืคืจ ืื ืืื ืืื ืืจืฃ.
ืฉืืืืชืืช ืืกืืืืืช
ะ ืงืืืงืืืืก ืืฉ ืืจืื ืืจืืื ืฉืื ืืช ืืขืฉืืช ืืช ืืืชื ืืืืจ. ืืืืืื, ืืชื ืืืื ืืืืืืจ ืืช ืืขืจื ืืืืจืื ืืืืื ืืฉืืืฉ ืืจืืื ืฉืื ืืช ืขืืืจ CPU (ืืฉ ืื ืจืืืขืืช, ืืื ืืื ืืคืืื ืืืชืจ ืืงืืืืืช).
ืืจืืฉืื ืืจืื ืืื ื ืื ืืขืฉืืช ืื ืงืืืงืืืืก ืฉืืืืชืืช ืืืฉืจ ืืชื ืจืืฆื ืืืืืง ืืช ืื ืืืคื ืืืืื ืืฉืืืืชืช ืืืฉื ื. ืื ืืฉืื ืฉืืืฉ ืืชืืขืืขืชื ืืืื ืืืืืจื ืืืืข ืืืจืื. ืื ืื ื ืจืืฆื ืืืฉืืืช ืืฉืื ืขื ืฉืืืืชืช ืืฉื ื, ืื ืืืกืื ื ืชืื ืื ืืืจืื ื ืืชื ืืืฉืืืช ืืืชื ืจืง ืกืงืืืจ, ืืื ืขืืืจ ืืื ืขืืืืืช ืื ื ืฆืจืื ืืืชืื ืืืฆืืจืฃ. ืืชืื ืงืืืงืืืืก ืืชื ืืืื ืืืฉืชืืฉ tuple:
SELECT *
FROM cpu
WHERE (tags_id, created_at) IN
(SELECT tags_id, max(created_at)
FROM cpu
GROUP BY tags_id)
ืืฉืืื ืืฉื ืืื ืขืืฉื ืืช ืืืชื ืืืืจ ืืื ืืฉืชืืฉืช ืืคืื ืงืฆืื ืฆืืืจื argMax:
SELECT
argMax(usage_user), created_at),
argMax(usage_system), created_at),
...
FROM cpu
ะ ืงืืืงืืืืก ืืฉ ืืื ืขืฉืจืืช ืคืื ืงืฆืืืช ืืฆืืืจืืช, ืืื ืืชื ืืฉืชืืฉ ืืงืืืืื ืืืจืื, ืื ืืคื ืืืงื ืืงืืืืื ืืืจืืงื ืชืงืื ืืืืฃ ืืื. ืืจืืืงืก - ืืืช ืืคืื ืงืฆืืืช ืฉืืืฉืืืช ืืช ืืขืจื ืืืงืกืืืื: ืืืงืฉื ืืืืืจื ืืช ืืขืจื usage_user, ืฉืื ืืืืขืื ืืขืจื ืืืงืกืืืื ื ืืฆืจ ื:
SELECT now() as created_at,
cpu.*
FROM (SELECT DISTINCT tags_id from cpu) base
ASOF LEFT JOIN cpu USING (tags_id, created_at)
ASOF JOIN - "ืืืืงืช" ืฉืืจืืช ืขื ืืื ืื ืฉืื ืื. ืืืื ืชืืื ื ืืืืืืืช ืขืืืจ ืืกืื ื ืชืื ืื ืฉืืืื ื ืจืง ื kdb +. ืื ืืฉ ืฉืชื ืกืืจืืช ืืื ืขื ืืื ืื ืฉืื ืื, ASOF JOIN ืืืคืฉืจ ืื ืืืขืืืจ ืืืืื ืืืชื ืืืงืฉื ืืืช. ืขืืืจ ืื ืขืจื ืืกืืจืช ืืื ืืืช, ื ืืฆื ืืขืจื ืืงืจืื ืืืืชืจ ืืืืจืช, ืืื ืืืืืจืื ืืืืชื ืฉืืจื:
ืคืื ืงืฆืืืช ืื ืืืืืืช
ืืชืงื SQL-2003 ืืชื ืืืื ืืืชืื ืื:
SELECT origin,
timestamp,
timestamp -LAG(timestamp, 1) OVER (PARTITION BY origin ORDER BY timestamp) AS duration,
timestamp -MIN(timestamp) OVER (PARTITION BY origin ORDER BY timestamp) AS startseq_duration,
ROW_NUMBER() OVER (PARTITION BY origin ORDER BY timestamp) AS sequence,
COUNT() OVER (PARTITION BY origin ORDER BY timestamp) AS nb
FROM mytable
ORDER BY origin, timestamp;
ะ ืงืืืงืืืืก ืืชื ืื ืืืื ืืขืฉืืช ืืช ืื - ืื ืื ืชืืื ืืชืงื SQL-2003 ืืื ืจืื ืืขืืื ืื ืืขืฉื ืืช ืื. ืืืงืื ืืืช, ื ืงืืืงืืืืก ื ืืื ืืืชืื ืื:
ืืืืืชื ืืืืืืช - ืื ื ืื ืืื!
ืืื ืื ืืืื ืืฉืืืืชื ืืื ืืืืืช ืืชืงื SQL-2003: ืืื ืกืืคืจ ืืช ืืืืื ืืื ืืฉื ืืื ืืืชืืช ืืื, ืืฉื, ืืกืคืจ ืกืืืืจื - ืื ืื ืฉืื ื ืืืฉืืืื ืืืจื ืืื ืืคืื ืงืฆืืืช ืื ืืืืืืช. IN ืงืืืงืืืืก ืื ืื ื ืกืืคืจืื ืืืชื ืืจื ืืขืจืืื: ืงืืื ืื ืื ื ืืืืืฆืื ืืช ืื ืชืื ืื ืืืขืจื, ืืืจื ืื ืื ืื ื ืขืืฉืื ืืช ืื ืื ืฉืื ืื ื ืจืืฆืื ืขื ืืืขืจื, ืืื ืื ืื ื ืืจืืืืื ืืืชื ืืืืจื. ืื ืื ืืืื ื ืื, ืื ืืืจืฉ ืืืื ืืชืื ืืช ืคืื ืงืฆืืื ืื ืืื ืืคืืืช, ืืื ืื ืืืื ืืืืฉ.
ืืืคืืื ืื ืืืืืืื
ืืืฅ ืืื, ื ืงืืืงืืืืก ืคืื ืงืฆืืืช ืืืืืืืช ืจืืืช. ืืืืืื, ืืืฆื ืืงืืืข ืืื ืืคืืฉืื ืืชืงืืืืื ืื ืืื ืืช? ืืฉืืืช ื ืืืืจ ืืืคืืกืืช ืืื ืืงืืืข ืืช ืืขืืืก ืืืจืื ืืืืฆืขืืช ืืงืฉื ืืืช. IN ืงืืืงืืืืก ืืฉ ืคืื ืงืฆืื ืืืืืืช ืืืืจื ืื:
ืืืืคื ืืืื, ื- ClickHouse ืืฉ ืคืื ืงืฆืืืช ืืืืืืืช ืืืืจืืช ืจืืืช:
- runningDifference, runningAccumulate, ืฉืื;
- sumMap(ืืคืชื, ืขืจื);
- timeSeriesGroupSum(uid, ืืืชืืช ืืื, ืขืจื);
- timeSeriesGroupRateSum(uid, timestamp, value);
- skewPop, skewSamp, kurtPop, kurtSamp;
- ืขื ืืืืื / ืขื ืงืฉืจืื;
- simpleLinearRegression, stochasticLinearRegression.
ืื ืื ืจืฉืืื ืืืื ืฉื ืคืื ืงืฆืืืช, ืืฉ 500-600 ืืกื ืืื. ืจืื: ืื ืืคืื ืงืฆืืืช ื ืงืืืงืืืืก ื ืืฆื ืืืืืช ืืืขืจืืช (ืื ืืืื ืืชืืขืืื, ืืื ืืืื ืืขื ืืื ืื):
select * from system.functions order by name
ืงืืืงืืืืก ืืื ืืืืกื ืืืืข ืจื ืขื ืขืฆืื, ืืืื ืืืืืืช ืืืื, query_log, ืืืื ืืขืงื, ืืืื ืคืขืืืืช ืขื ืืืืงื ื ืชืื ืื (ืืืง_ืืืื), ืืืื ืืืืื ืืืืื ืืขืจืืช, ืฉืืื ืืืจื ืืื ืืืชื ืืืืกืง. ืืืื ืืืื ืืื ืกืืจืช ืืื ะฒ ืงืืืงืืืืก ืืืขืฉื ืงืืืงืืืืก: ืืกื ืื ืชืื ืื ืขืฆืื ืืืื ืืฉืืง ืชืคืงืื ืกืืจืช ืืื ืืืืจื ืืืืข, ืืืื "ืืืื" ืืช ืขืฆืื.
ืื ืื ืืืจ ืืืืืื - ืฉืื ืื ืื ื ืขืืฉืื ืขืืืื ืืืื ืขืืืจ ืกืืจืช ืืื, ืืื ืื ืื ื ืื ืืืืืื ืืืืกื ืืช ืื ืื ืฉืื ืื ื ืฆืจืืืื ืืชืืื ื? ืื ืื ื ืื ืฆืจืืืื ืคืจืืืชืืืก, ืื ืื ื ืฉืืืจืื ืืื ืืขืฆืื ื. ืึฐืืึผืึผึธืจ ืืจืคื ื ืืื ืื ื ืขืืงืืื ืืืจ ืขืฆืื ื. ืืขืืืช ืืืช, ืื ืงืืืงืืืืก ื ืืคื, ืื ื ืจืื ืืื, ืื ืื ืืืจื ืืื ืื ืขืืฉืื ืืช ืื.
ืืฉืืื ืืืื ืื ืืจืื ืงืื ืื ืงืืืงืืืืก
ืื ืขืืืฃ - ืืฉืืื ืืื ืืืื ืื ืืจืื ืืชื ืงืืืงืื ืงืื ืื? ืืืฉื ืืกืืจืชืืช ื DWH ืืื ืืฉืืื ืืืื ืฉืื ืืืงืฆืื ืืขืืืื ืืื ืืืฉืื. ืืืขื ื ืืื ืื ืืกื ืื ืชืื ืื - ืชื ืื ื ืชืจืฉืื, ืืื ื ืชื ื ืื ื ืืื:
ะ ืงืืืงืืืืก ืืชื ืืืื ืืขืฉืืช ืืช ืื ืืืจืช. ืืชื ืืืื ืืืคืื ืื ืืืฉืื ืืฉืื ืงืืืงืืืืก:
ืื ืื ื ืื ืฆืจืืืื ืืช ืืืคืืฆืชืืช ืืืืืื ืืืชืจ DWH ืืื ืืืื ืืืชื ืคืชืืจืื. ืื ืื ื ืืืืืื ืืชืช ืืื ืืคืืืงืฆืื ืืฉืื ืงืืืงืืืืก, ืืืืคืชื ืืืื ืืขืฉืืช ืืืช ืืขืฆืื, ืฉืื ืงืืืงืืืืก ืงื ืืืื ืืืชืงื ื ืืืื ื ืืืจืฉ ื ืืืื ืืืจืื:
ืืื ืื ืืฉ ืื ื ืืจืื ืงืืืงืืืืก, ืืืชื ืฆืจืื ืืืชืงืื ืืืชื ืืขืชืื ืงืจืืืืช, ืื ืืชื ืจืืฆื ืืืคืื ืืช ืืชืืืื ืืื ืืืืืืืื. ืืฉื ืื ื ืืื, ืืืฉื, ืืืฉืชืืฉ ืงืืืจื ื ะธ ืืืช ืงืืืง-ืึทืคืขึดืื. IN Kubernetes ClickHouse ืืชื ืืืื ืืฉืื ืืช ืื "ืืืืืฆื": ืื ื ืืืื ืืืืืฅ ืขื ืืคืชืืจ, ืืืคืขืื ืืช ืืื ืืคืกื ืืืกื ืื ืชืื ืื ืืืื. ืื ื ืืืื ืืื ืืืฆืืจ ืืืืืจืื, ืืืชืืื ืืืขืืืช ืฉื ืืืืื, ืืชืื 5 ืืงืืช ืืฉ ืื ืืื ืืืืื ืื ืืืื ืืจืคื ื. ืื ืื ืื ืคืฉืื!
ืืชืืฆืื?
ืืคืืื, ืงืืืงืืืืก - ืื:
- ืืืจ. ืืืื ืืืืขืื ืืช ืื.
- ืจืง. ืงืฆืช ืฉื ืื ืืืืืืงืช, ืืื ืื ื ืืืืื ืฉืื ืงืฉื ืืืืืื ืื, ืงื ืืืืืื. ืื ืืชื ืืืื ืืื ืงืืืงืืืืก ืื ืขืืื, ืืื ืืื ืืืื ืคืฉืื.
- ืืืืคื ืืื ืืืจืกืื. ืื ืืชืืื ืืชืจืืืฉืื ืฉืื ืื: DWH, ืกืืจืช ืืื, ืืืกืื ืืืื ืื. ืืื ืื ืื OLTP ืืกื ื ืชืื ืื, ืื ืื ืชื ืกื ืืืฆืข ืืืกืคืืช ืืงืจืืืืช ืงืฆืจืืช ืฉื.
- ืืขื ืืื. ืื ืจืื ืื ืฉืขืืื ืืืชื ืงืืืงืืืืก, ืืืื ืจืืขืื ืืขื ืืื ืื ืจืืื ืืืืื ืืืื ืืืจืข. ืืืฉื, ืืฆืื ืืืืืจื ืืืฉื, ืืื ืืคืกืืง ืืขืืื. ืื ืืืฉืจ ื ืืืงืช ืืืฉืืื ืืืฉื ืืืืืื, ืื ืืืืจ ืฉืฉืืืช ืฉืืื ืืฆ'ืื ืืืืืจื, ืืืฉืืื ื ืคืชืจื ืชืื ืฉืชื ืืงืืช. ืื ืืื ืืื ืก ืืืืืื ืฉื ืืฉื ืืืืืืืืื, ืฆืืืื ืืกื ื ืงืืืงืืืืก ืฉืืจ ืืช ืืฉืืืืจ HighLoad ++. ืืืจืื ืืืื ืงืืจืื ืื ืืืื ืืืงืฉืื ืขื ืืืื ื. ืงืืืงืืืืก ืืืืจ ืืืขื ืืื!
ื ืืชื ืืฆืคืืช ืืืฆืืช
ืืืคืืฉ ืืืืืื ืฉื ืืคืชืื ืืขืจืืืช ืขืืืก ืืืื ื
HighLoad ++ ืืชืงืืื ื-9 ืื-10 ืื ืืืืืจ ืืกืงืืืงืืื. ืืืกืืฃ, ืื ืืืื ืืขืืื ืื ืืงืืื ืช (ืื ืื ืขื ืื ืืืฆืขื ืืืืืจืืช ืืืงืื), ืืืืืื ืฉืื ื ืืชื ืืืจืื ืืช ืืื ืจืืื ืฉื HighLoad++ ืืืืคื ืืงืืื.ืืื ืก ืื ื ืืืฆืืื ืืืจืืื ืืื ืืงืจืื ืขื ืืืืืืืช ืืืงืกืืืืืืช ืฉื ืืืื ืืืืืื: HighLoad++ ืืื, ืืื ืืืืื ืืืงืื ืืืืื ืื ืชืืืื ืืืืื ืชืื ืืืืืื ืืืฆื ืคืืขืืืช ืคืืืกืืืง, Yandex, VKontakte, ืืืื ืืืืืื.
ืืืืจ ืฉืงืืืื ื ืืช ืืืคืืฉืื ืฉืื ื ืืื ืืคืจืขื ืืื 2007, ืืฉื ื ื ืืคืืฉ ืืคืขื ื-14. ืืืืื ืชืงืืคื ืื, ืืื ืก ืืื ืคื 10; ืืฉื ื ืฉืขืืจื, ืืืืจืืข ืืืจืืื ืืชืขืฉืืื ืจืืื 3339 ืืฉืชืชืคืื, 165 ืืืืจืื, ืืืืืช ืืืคืืฉืื, ื-16 ืืกืืืืื ืคืขืื ืื ืืื ืืช.
ืืฉื ื ืฉืขืืจื ืืื 20 ืืืืืืืกืื, 5280 ืืืืจ ืชื ืืงืคื, 1650 ืืืืจ ืืฉืงืืืช ืคืืจืืช ื-10200 ืืงืืืงื ืืื. ืืขืื 2640 ืงืืืืืจืืื ืฉื ืืืื, 16 ืฆืืืืช ื-000 ืืืกืืช. ืืื, ืืืกืฃ ืฉื ืืกืฃ ืื ืืืจ ืืืืืืจ ืฉืชืื ื 25 ืฉืชืืื ืืืื :)ืืชื ืืืื ืืงื ืืช ืืจืืืกืื
ืืื , ืงืื ืืืฉืืช ืขื ืืื ืก -ืืื , ืืืืืจ ืืื ืืจืฉืชืืช ืืืืจืชืืืช:ืืืจืง ,ืคืืืกืืืง ,Vkontakte ะธืืืืืจ .
ืืงืืจ: www.habr.com