á¨áśáľáľ á ááľ á ááľ áŞááśá áłááááľáŞ áĽá á ááᲠáááŞáśá ᨠYandex á ááľá¨á áá HighLoad ++
á¨áŚáľáľ áááľ á áá á á áł á¤áľ á áŁá áĽáŠ áá - á áá áá á áááłáá°á áá° ááááłááľ áĽáť áłááá á¨á áá˛áᲠáŠáŁááŤá á ááá á á áł á¤áľ á á°ááá á¨ááá አááŽáááśá˝ ᣠáá á°áá áááąá áĽáŤáąá áŤáťá˝áá ᨠYandex áŁáá°á¨áŚá˝ ááᢠá áá á á áł á¤áľ á ááá ááľá¨áá˝ á¨áĽáá áá á áá°áá ᣠáá á¨áĽááá˛á ááá á áá°ááá˘
á áááłáá°á ᨠ2003 ááᎠáľááá ááŽáááśá˝á á áááááľ á á°á¨ááá áľáááśá˝ ááľáĽ á°áłáľáá MySQL, Oracle и áŹáá˛áŤ. á áá¨á¨áťá HighLoad ++ 2019 á áááłáá°á, á¨á á ááá á á ááá˝ á ááą á á áł á¤áľáá DBMS á áá áá áĽáá°áá á°áááŻáᢠáľá áá áá áŁá áŞáŤáľ áĽáááŤáá á á áł á¤áľá¨ááá˝ áľáááśá˝ áĽáá´áľ áĽáá°ááá áĽá á áá ááłáŽá˝ áá áĽáąá ááá áá á¨á áá áá¤áłá ááᢠááłááá˝á á áá ááᣠáľáá áśá˝á áááááŁáľ á á˛áľ áĽá á ááŽáááľ á¨á°á¨ááᥠáááśá˝á áĽáááá¨áľ á á áł á¤áľ.
áá° áá áááľ áĽá: ᨠ3 áááłáľ á ááľ á¨á°á¨á°á°á
á¨áśáľáľ á ááľ á ááľ áŠáŁááŤáá á áľá°áááááᢠLifeStreet áá á á áł á¤áľ á¨á°áᨠá¨áľááłá áłáłá¤áᣠáĽá á¨ááľáłáá፠á ááłá¨ áá¨áĽ áľááłá ááá°áľ áá á áááľááá˘
- á°á 2016. ááľáĽ áááľ ááá áłá¨ á á áł á¤áľ áĽá á¨áĽáá ááŽáááľ ááá¨;
- ááá´. á¨á áá°-ááłáĽ áá¨áááŤáľáá á¨ááľáłáá፠á ááłá, áá á¨á° áááľ áĽá 200-300 á´áŤáŁááľ áááĽ;
- áĽá ááľ. á¨ááááŞáŤá á¨áááľ áá¨á;
- áłá áłáľ. áá á¨áááľ áááľ - á áá á¨10-50 á˘ááŽá ááľá°áśá˝.
- á°á 2017 á¨á°á áááá˝ áľáŹáłá á˝ááá á á áł á¤áľá 2,5 á ááááŽá˝ áľáĽáľáĽ áá 60 petabytes áááĽá˘
áľá°áľ áĽá¨áá á˛ááľ áááá¤á áĽáŤá°á áá° á á áł á¤áľ á áĽáŽ ááľáŤáľ á°áľ á¨áá áĽáŠ áľáááľ áá, áá áá ᨠYandex ááľáŁá ááŽáááľ áá. áľááá , ááŠááśá˝ á á-Yandex á ááááŞáŤ á¨áŤáą á¨ááľáĽ á°áá áá˝ áá ááááá á¨ááŤá á¨áá á á¨á°áĄ áĽá á¨á᪠á°á áááá˝ ááááśá˝ áá áĽáť áá, ááááááľ áá áĽá á°ááŁáŤá á áá á áŤáŁá˘áá˝ á¨áľáá áľ á°á¨á áá á áá°á¨á°á. áľááá á ááá˝ 2017 Altinity áááĽáŤáľ á°ááľáá°áá á á áł á¤áľ áĽáá˛áŤáá ááŁá áĽá á¨á áá ááš á Yandex áĽáť áłááá áááá˝ á°á áááá˝á ááá. áĽá á áá áĽá:
- áĽá á áá°áá á áá á áááľá¨áľ áááľááá˝á áááááŁáľ áĽáá¨áłáá á á áł á¤áľ á°áá áá˝ áĽáĽá áśá˝á áĽááłááá áĽá á áá¨á¨áťá áááľáá áĽáá˛á°áŤ;
- á¨24/7 áľáá áĽáá°áŁááᢠá á áł á¤áľ- áááśá˝;
- á¨áŤáłá˝áá á¨áľá-áá áłá ááŽáááśá˝á áĽáááááá;
- ááŤá´ á áááľ áľáĽ á á áł á¤áľá¨á°áá°á áŁá áŞáŤáľá áá¨áľ ááááá á°á áááá˝ ááááᥠáĽáŤááá˝ ááá˝ ááľá áľá˘
áĽá á áĽáááĽ, áá° ááá°áą áĽáá¨áłááá á á áł á¤áľ Ń MySQL, áŹáá˛áŤ, Oracle, ááŞáááá, áá á áłá áĽá ááá˝ áľáááśá˝. á á°ááŤáŠ á¨ááááŞáŤ áŚáłáá˝ áá á°áłáľááá áĽá ááá áľáŹáłá ááááá˘
ááá áĽááłá áá° ááááłááľ á á áł á¤áľ
á ááááá! ááá ááááŤáľ áá ááᢠá á áł á¤áľ - áá°ááŤáŠ áááłáá˝ á áŁá ááŁá á¨ááἠááł;
á áĽá¨á á¨áá አá°áá˝ á¨áááá° áĽá áśá˝ á á áł á¤áľ.
á¨áá á á á á. á áá á¨ááἠááł ááᣠá á ááľ áááľáá áá áĽáŠ á ááťá¸á ááłáŤáľ áľá˝ááá ᣠááá áá á á áł á¤áľ á ááá á ááááŽá˝á á áá¨áá á á ááŁá áĽáť áłááá á á ááľá áááá áá˝ááᢠááá ááá áĽá á¨ááááááá áŤá á á á°ááá á á áá°áŤá, áá áá°áŤá. áááľá á˛áŤáľá áľáááąá ááłá°á áá˝ááᢠá áá á ááłáá ááá°áŁá˝á á áľááá áá áĽá ááááá á¨áĽáľááľ áĽáá ááአá áľááá áá.
á°áááłáá˝ááľ. áá ááľ ááá ááá ááŤáŤá á¨áá. áááłá á á¨á ááá Redshift á¨áá áŚáł áááááłááľ á áľá¸ááŞ. á á á áł á¤áľ á áĽááľá áááśá, á áááá áá ááľáááĽ, áá° á°áá áá°ááŤáľ áá˝áá, áááą áŠáŁááŤáśá˝ - á áá á¨á° áááľ á ááłá áá ááá áá°áŚá˝ á¨áá. áá áááá á°á ááš áá, áĽá áá ááá˝ áĽá á°ááłáłá á¨ááἠááłáá˝ ááአá¨ááá˝ááľ áľáá áĽá á áá.
á°áááá. á á áł á¤áľ á á ááľ ááá áá á áááá, áááłá, Yandex.Metrica, ááá áá á¨áá áá° áá á á°ááŤáŠ ááŽáááśá˝ áĽá á˘ááąáľáľáŞáá˝ ááľáĽ áĽá¨á°ááᣠáĽá áĽá á áá áááá. á áłá˛áľ á˝ááŽá˝á ááááłáľ á áłá˛áľ áŁá áŞáŤáľá á áá¨áá áá°á áá˝áá. áááłá á áá¨á ááľ ááľáĽ ááááŚá˝á áá¨áá¸áľ ááĽá á áŁá áá á°áĽá áľáááłáá ááá ááá áᥠElasticsearch. áá áá°ááááááľ ááľáá áááŁá á á áł á¤áľá ááľáĄá áááἠááľáłááťáá˝á áá¨áá¸áľ áá˝áá, áĽá áĽááá áá á¨ááľáĽ áĽááłá á¨á°áťá áá Elasticsearch - ááľáĽ á á áł á¤áľ 10 áĽáĽá áŤáá° áĽá¨áľ áŤáľááááá.
ááá áááľ ááá. áááááá ááá áááá á¨ááĽááľáᢠáľáááąá á áĽááľá áááśá ááá á áááá áá áááľááἠáááľ áá°áŤá°á á áŤáľááááᢠááá á¨á°á°á á áááŤáá˝ á¨ááᢠá á°ááłáłá áá ááá áá ᨠOpen Source áłáłá¤á á´áááá á ááĽááľ áááłá°á á áá˝ááᢠá á áł á¤áľ. MySQLᣠMariaDBᣠGreenplum - ááá á áŁá áááá áá¸á.
áá á á¨á°áĽ, áááłáľ áĽá á°áľáłâŚ á áá á á áł á¤áľ áłáá áá á á¨á°áĽ: áľáĽá°áŁáὠᣠáťáśá˝ áĽá á ááᲠáááŞáśá ᣠááá˝ááá á ááá áą áĽá á áĽáŠá á°áľáá áŤáľá¨ááááá˘
áá° ClickHouse á áááľ áá
áá° áááá¨á á á áł á¤áľ á¨á ááľ ááá áá áśáľáľ áááŽá˝á áĽáť áŤáľáááááłá
- áá°áŚá˝á áá¨áą á á áł á¤áľ áĽá á¨áááľááá ááá.
- áĽá áášá á°á áá á´áááá áĽá á¨áá°á áĽááŤáŹááš.
- áá¨áŤ. áĽáá´áľ áĽáá°áá°áŤ áĽááłá ááá á á áł á¤áľáŁ ááź ááŁá áĽáá°ááá ᣠááź áĽáá°áááá ᣠááź á¨á°áťá áĽáá°ááá áĽá ááź áĽáá°áá¨á ááááľ áááá á ááťááᢠáľááá ááááŠá˘
á¨ááááłááľ á˝áá
á ááľ "áá" áĽáť á á: áá° á¨á°ááአá á áł á¤áľ á¨áá ááá áá ᣠáĽááá áá á ááľ ááá áľá á°áľ ááᢠá á°ááłá á¨ááἠááłá˝á ááľáĽ á¨áá°áŠ á ááłááľ áááśá˝á áĽá áááŽá˝á áĽáááááłááᢠáááłá, ááááá á°á á áĽáŽ áá°áŤá SQL-á¨ááἠááłáá˝áŁ á¨áá¨á°ááľá á¨á°ááŁáŽá˝ áľáĽáľáĽ á áľááłá áĽáá°áá áááááŁááĄ-
- ááĽááśá˝;
- áá°áŚá˝;
- ááĽááľ;
- á˘áá´ááśá˝;
- á ááá/á°áá;
- áŁáśáá˝;
- ááá°á¨ááśá˝;
- á ááśáá˛á ááááľ áááŁáá˝;
- áĽá ááááá;
- á¨áááá° áááááŽá˝;
- á¨áááľá°á á áľá°áłá°á ááłáŞáŤáá˝.
áááá áá´áł ááᣠââáá á¨áśáľáľ á ááľ á ááľ á á á áł á¤áľ á¨áĽááá áŁá áŞáŤáľ ááľáĽ á ááłá¸áá á ááá áŠá! á áá á¨áááłáááľ á áŞáśá˝ ááľáĽ á¨ááá˝ áŤááąáĄ ááĽááśá˝áŁ áĽááłáá˝áŁ ááĽááľáŁ ááá°á¨ááśá˝ áĽá á¨ááá°áľ á áááľá˘
áĽá ááá ááá ááľáĽ áá á á áł á¤áľ á ááłááľ áá°á á áááśá˝ áĽá á ááŤá¨áŚá˝ á áá°áŠá ááá áĽáá°áááľáá á áá°áŠáᢠááľáĽ á¨ááłá¨á áá á á áł á¤áľ, áá ááááłá "á¨á¤áąá ááááľ á á áŤáľááâᣠáááľá áĽ.á¤.á . á°ááŁáŤáľ á¨ááá˝ á˛á˘áá˝ á¨á°áአáá¸á. áááłá:
- á˘áá´ááśá˝ á áá°áá¨áĄáᣠáá á°ááááá˘
- á ááá/á°áá á¨á°ááłá°á á áá°ááᣠáá á áá°ááłá°ááá˘
- áĽá áááááá˝ á áᣠáá ááá á¨áá áá áĽá áľ á á᪠á¨ááᢠá¨á፠á áá áĽáá´áľ áĽáá°ááá¸á á á á ááá á¨ááἠááł ááá áá á°áá˝ á áŁá ááá˝ á áá°áá.
ClickHouse Scenarios
á 1960, á¨ááá᪠á°ááá á¨áá á ááŞáŤá á¨ááłáĽ áá WignerEP á ááľ á˝áá áťáá á°ááĽáŽ áłáááľ ááľáĽ áŤáá ááááŤáłá áŤááá á¨ááłáĽ áá¤áłáááľ"("á á°ááĽáŽ áłáááľ ááľáĽ áŤáá á¨ááłáĽ áá¤áłáááľ ááá¨áłáľ á¨áááťá") á ááŞáŤá˝á áŤáá ááá á áá ááááŤáľ á ááłáĽ á áá˝ á á°áἠá°áááżá. ááłáĽ á¨áá áłáááľ ááᣠáĽá á ááłáĽ ááá á¨á°ááášáľ áááŤá á áá˝ ááá á áá°ááᣠáĽá WignerEP áá á áŁá áĽáááł áááá á á˝ááŚáľ á°áĽáˇá.
á áĽá áĽááłáŁ á á áł á¤áľ - á°ááłáłá áĽáĽáľ. ááááá áááľá°áŤá¨áᣠáá á áááľ áĽáá˝áááᥠá áľá°ááá á¨áááłá°áĽ áĽááľ ááᢠá á áł á¤áľ á á°ááŤáŠ á¨áľááłá áá°áá áŞáŤáá˝ ááľáĽ!
áááłá áĽááá°áľ á¨áĽááá°á áá á¨ááἠáá¨ááť, áá° á¨áľáá ááἠáŤáááá¨áĽ áááľ ááťáá ááŤáá. áááá°á áá áááá¨áľ á¨áĽáą áĽáŤááá˝á ááá á áĽáááááá. áĽáŁáá áá áá á á
áł á¤áľááááŤáąá á¨á°áááá ááá
áááł ááᢠá á
áł á¤áľ á áľá áá áĽáť áłááá á ááĽááľ áĽá á áááááşáŤá áľááłááá˝ ááľáĽá áĽá
á áá á¨áááá á áá
ááááľ áá ᣠAdTech, áĽáá˛áá ááľáĽ á¨ááá áá á ááááŤn. ááľáĽ á¨áĽááá°á áá á¨ááἠáá¨ááť áĽáá° "áŽá¨áĽ" ááá "á¨á á¨áś á
ááŁáľ" áŤá ááľáĽáľáĽ á¨á°ááᨠááľá áĽá
á áá áááá, áĽá á á¨á´ááá˝ áŤááľ JOIN (á ááłááľ áá áĽá)ᣠáĽá ááᥠá áĽáááá áá á á ááłááľ áľáááśá˝ ááľáĽ áá¨ááťá áĽá ááá¨áŤáá˘
áá áááł áĽááá°áľ - á¨áá á°á¨áłáłáá¨áááŁá áŞáŤ ááłáŞáŤáá˝, á ááłá¨ áá¨áŚá˝, á¨á á ááá áľáłá˛áľá˛ááľ, á¨áááŽá˝ á˘áá°áááľ. áĽáá
á áá á¨áłáá ááá ááá ááľá°áśá˝á áĽááááááᢠá á
áł á¤áľ ááááŞáŤ áá ááá
á áá°áá á¨á, ááá áá áĽáŤáąá á á°áἠá áłááˇá, áľááá
áľááá
áŠáŁááŤáá˝ áá ááá á á
áł á¤áľ áá¨áá ááá¨áłá°á áĽáá° áá áŤáááŤ. á¨ááľáá áááá ááá¨áľ á á
áł á¤áľ ááá-á°á¨áłáłá, á á ááŤá¨áĽ áĽá á áá¤áśá˝ áá á áááľá¨áľ áááŞáŤ á á°á¨áá InfluxDB и áłáááľáá á˛.á˘. - áአá¨áá á°á¨áłáłá á¨ááἠááłáá˝.
Đ á¨áá á°á¨áłáłá áĽááá áá á áŁáĽ á á¨á´á áĽá
á áá áááá - áĽá áľááá˝ áááśá˝. áĽá áá¨ááá˝ á¨ááľáľá ááᥠáá˝áá - á áááŽáá˝ á¨ááá አááááŚá˝ á á°á¨ááľ - áĽá áĽááą áĽááá áá á áľáá˝ ááľáá˘áŤáá˝ ááľáĽ áááŁá (á á°ááłáłá á°ááľ áĽá¨áľ)ᢠáľááá
, á¨á°áᨠá áľáᣠáľááŞááľ áŤáľááááá, áĽá áá ááá˝ áĽáŤáłá¸á - á¨áŤáłá¸á á¨á°áá°á ááááŽá˝ áá.
áá ááá áááľ. á áá¨á ááą ááľáĽ á¨áááἠááľáłááťáá˝á áá°áĽá°áĽ áĽááá áá ááĽá ááᣠáá ááľáĽ á á áł á¤áľ áá á¨áá áĽáá°á°áááá á á ááłááľ á áľá°áŤá¨áśá˝ áá¨ááá áá˝áá. áĽá áŠáŁááŤáá˝ áá ááá á á áł á¤áľ ááá áĽáťá˘ á áá áááł, á ááŁá á°á á á¨á´á áĽá á áá áááá, áááá áááἠááľáłááťáá˝ á¨ááá¨áá˝á áľ (áááłá, á á áš JSON), ááá áá° áááĽáŤáŽá˝ ááá¨áĄ. ááᥠáĽá áá á¨ááŤáá á áľáá áá°áĽ (áááá˝) ááᣠáĽá á¨á°áá°á ááľá áĽá¨áááá ááá˘
ááĽáŤááłááłá¸á áĽááá á°ááŁáŤáľ, áአá¨ááἠááłáá˝ á áĽáááá áá áĽá á áá áááá. á á áł á¤áľ á ááľ á°á áááá ááá ááľá¨á áá˝áá áĽá á áĽáŠ áááł á á áááá ááľáĽ áŤááá¸áá. á áá á áá áĽáá áĽááááá á¨áá á°á¨áłáłá áľááŞááľ áĽá áĽáá´áľ "ááĽá°á" áĽáá°ááťá á á áł á¤áľ á áá áááł áľá.
á¨áá á°á¨áłáłá
áá á á áá áá áá¨áľáá áá áááł áá á á áł á¤áľ áá°á ááá áááľá áááľ ááľáĽ áŤáľááŁá. á¨áá á°á¨áłáłá á áá áá°áľ á¨áá°á¨á áááŚá˝á á¨áááá á áá á¨áłáá ááľá°áśá˝ áľáĽáľáĽ ááᢠáááłá, á áá á¨áἠááľ ááá á áľáááą ááľáĽ áŤá áá°áśá˝ áĽááľ ááá áá˝áá. áá á¨áá°áĽ ááá áá á¨á ááłááľ ááŹáśá˝ áá ááᢠá¨áá á°á¨áłáłá:
á áĽááááš áĽááá
ááľá°áśá˝ á¨ááľáľá á¨ááᥠáá¸áᢠáá
á¨áľá ááĽáĽá áĽáť áłááá áĽááá°á ááłáŞáŤáá˝á ááá áá˝áá-ááŞááὠᣠá¨á˘ááąáľáľáŞ áľáááśá˝ ᣠIoT, á˘ááąáľáľáŞáá˝ ááá á°á á áᣠáłáá˛áá˝, Yandex á áľááľá á ááŤáľááá á áááľ ááľáĽ á á
áł á¤áľ- á áááá.
áááłá, á¨ááá¨áŚá˝ áá¨áá á¨áá°á áľáĄ áŠáŁááŤáá˝ á á. á á¨áĽááľ á´áŽááśá˝ á¨ááŤáŁ ááá¨áĽ á¨ááᥠáłáłážá˝ á ááśáá˝ á¨ááá አá¨á°ááŤáŠ áááŞáŤáá˝á áááŤáᢠáááá˛áśá˝ áŤá áá¸áá, áá´áá˝á ááááŁá áĽá ááá¨á§ áá áŤá á áá¤áłá á áá ááááľ áĽá á áá áĽáá°ááá ááá¨áłáľ ááááŤá, ááááŤáąá á¨áĽá ááŤá ááá¨áĽ áá ááľ á°á¨ááľ áŤá á áľáŤ ááľáś ááá á¨áá áľá. ááááá á¨áĽá¨ááľ áá áááἠááŁá¨á áá, áľááá á¨ááŞá ááá፠á ááľá°á áĽáá˛áá ááááąá áá°áá á á áľááá áá.
á áá á¨ááአáአá¨ááἠááłáá˝ áĽáľááľ á áᢠá¨áá á°á¨áłáłá. á áŁá˘áŤá áá á˛á˘-á¤áááá˝ áĽáá°ááá á¨á°ááŤáŠ á¨ááἠááłáá˝ á°á¨á á°á°áĽáˇá¸ááᣠáĽá á á áááľ ááłáŠ áá˝áááĄ
á áŁá ááŁá áĽáľááľ ááááľ á°á¨áłáłá ááá¤áľ. á¨ááŤá áłáłá¤á áĽáá˛á áĽáŤá°á áá¸áᣠáá á°á¨áłáłá áááŁáááľ áĽááľ áááłáľ ááľáĽ s á ááĽááľ áĽáŤá°á ááᢠá¨áá
á¨ááἠááł á¤á°á°áĽ á¨á°áááą á°ááŤáŽá˝ áá¸áᢠInfluxDB, ááŽááľá¨áľ, KDB, áłáááľáá á˛.á˘. (á áá á¨á°á°áŤ PostgreSQL), áááľááὠᨠá ááá. á á
áł á¤áľ áĽáá
á áĽá
á áá ááá áá˝áá, áĽá áĽá
á áá áááá. áĽááľ á¨á á°áŁáŁá ááłááá˝á ááľáĽá˘
á¨á á áááš á ááą áŠáŁááŤá ááᢠCloudFlare (CDNá á áŤá˘)ᢠáá¨áłá°áá CDN á áŠá á á áł á¤áľ (Რá¤á á¤áľ- áĽáŤááá˝; HTTP-áĽáŤááá˝) á¨áľáá áááľ áá - 6 áááŽá ááľá°áśá˝ á á°á¨ááľ. ááá ááá áŤááá áŤááŤáŁ áááłá á á áł á¤áľ, áá á á áľáááą ááľáĽ á¨áĽááá°á áá áłá˝áŚááśá˝á á¨áá¨áľ á˝ááł áá°áŁá.
áŽáá¨á - á áŠáááľáľ áľá´áľáľ ááľáĽ á á´ááŽáááŹá˝á ááľáĽ áŤááľ ááŞáá˝ á ááą: á˘áá°áááľ, á˛ááłá á´ááŞáĽá, á´ááá. á°ááłáłá á¨ááĽáĽá áľáááľ áá አCDN á áááá ááľáĽ áááľ ááá ááŽáááľ Apache á¨áľáŤáá ááĽáĽá áŤáá¸áá ááá ááἠáá áááľáŤáľ. á á áł á¤áľ ááľááłá áĽáá° ááᣠáĽá á áá áááá.
ConááŽá ááľáĽ á°áááĽáˇá á á áł á¤áľ á áĽááľá ááľáĽ áá¤áá¤áá¨á°áᨠááľáľá áááľá¨á MySQL.
á¨á°áá°á ááľáááśá˝
á¨áá á°á¨áłáłá á¨ááἠááłáá˝ á¨áŤáłá¸á áአááľáááśá˝ á áá¸áá˘
- á¨áĽá ááŞáá˝ á ááĽááľ ááľááŁáľ. á¨áĽá áĽá¨áśá˝ ááἠá ááĽááľ ááľááŁáľ á ááĽáᢠá á áł á¤áľ áĽáŠ áŤá°áááá, ááááŤáąá ááá á¨ááŤááľ ááľáá˘áŤáá˝ á ááľ. ááááá á áľáᣠá á˛áľá áá áŤá á á˛áľ ááá áá ᣠáĽá áľááá˝ ááľáá˘áŤáá˝ á á ááľ ááá á áá ááááľ áááᥠáá˝ááᢠááľáĽ á á áł á¤áľ á á ááľ áá á¨á ááľ ááľáá ááá áá¨áá á áľáá áľáĽáľáŚá˝ ááľáĽ ááľááŁáľ á¨á°áťá áá.
- á°áááá áá¨áł. á á¨áá á°á¨áłáłá áĽááá áá á¨áá¨ááá ááá á áá á áá á ááá áᢠáá ááľ á¨á°áá°á áá°áá áŞáŤ á¨ááľáľá áľáááľ ááááŁáľ ááťáá, áá á¨á፠ááá áá°áá áŞáŤ ááá áá á áľá¸á᪠áá. áá á¨á áá á°áááá áĽá áľ áŤáľááááá. á á áł á¤áľ, áá á áĽáá˛áŤá°áá ááá áľáááłá, ááá áĽááłá á á ááŤáŤ á¨á°á°á¨á á áá á¨áľ á˘ááá.
- áá¤áłá áá¨ááť áĽá "á¨áááłáľ" áááĽ. á áĽáááá áá ááľáĽ á¨áá á°á¨áłáłá á¨áá°á áá á áŤáá áááĽ, áľááá á á°áťá áá á á áĽááľ áá¨áá¸áľ á ááŁá¸á. áááłá á 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 ...
ááá á á¨á°á°á¨á áááľ áľááľáŽá˝ áá¸á: áááŞáŤáá˝.áľá и áááŞáŤáá˝.áĽá´áľ. áĽáá áĽáá°áá áŤá á¨áááá° ááľáľá áá¨ááá˝á áĽáá° á¨áľá áľááľá áĽá ááĽáŤááłááą ááľá°áľ á¨áááŞáŤ áľááľá áá¨áá¸áľ áá˝ááᢠáá áá áááťá¸áľ, á¨á ááľ ááá áĽá áĽáá°áá áŤá ááá áŽá˝ áá°á¨á áá˝áá. áááłá á ááľ á á°ááłáá- áĽá´áľ, áá - á 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. áááłá á˘á á - á ááłááľ áááłáá˝ á˛áá á¨áá°ááá á áááŞáŤ á¨ááŤá°á áአá°ááŁáᢠá á ááľ áá áá ááľáĽ áĽá áĽáá°áá áŤá á áŁáŁáá˝á ááťá áĽá áá˛áŤáá ááĽá áááŞáŤáá˝ áááá ááľááľ áá˝ááá˘
áśáľáľ á ááŤá¨áŚá˝á áĽáááłáľááĄ-
áĽáá áá ááłááľ á¨áá¨áŤ á¨ááἠáľáĽáľáĽ "á á˛áľá áá áŤáá á¨ááἠáá á" á¨ááŹáŤáá. á á ááśá˝ ááľáĽ, á áŁá áľááš á¨ááἠáá á á áá: á¨áá°áá á¨áá¨áááŤ, á¨áá°á á¨áá áá ááĽááľ, ááá áá áááá ááá á á ááľ áá á ááľá°áŤá¨á áĽáá¨áááá.
á áľááľá áááł áááŽá˝ áľáá˝ á¨á¨á áá¸áᢠáá¨áá á ááá á á°áἠáá¨ááá áĽá áá°á á áŤááá áľááá°-áĽááľ áá¨áá¸áľ ááťáá. áá á á áł á¤áľ - á¨á ááľ áłáłá¤á ᣠáĽá áááá ááá á áľááľá ááľáĽ áá¨áá¸áľ áľáááá ᣠáá° ááĽá¨áááááľ ááááŁá ᣠáĽá áá°ááááááľ á áĽááľ áĽáá¨ááááᢠáááááá ááá áááá áľááľá áá° áá á°á¨ áľááľáł ááá ἠá ááĽáᾠᣠá¨á፠á¨áááááľá ááĽá¨ ááá á ááľáĄ áááá - áĽá áľááľá áŤá°á ááĽááą ááááłáá˘
áá
áá á áŤááľ á¨áá áá áŠáŁááŤáá˝ ááľáĽ á á ááą (áááłá áŁ
á áŁá ááá á ááŤá¨áĽ á áááľ áá. ááá áá ááᥠá á°áἠá áá°á¨ááá, á¨á°áá á¨áĄ áá á áľáá áá, áĽá áá ááá˝ á á ááŤáł ááŹáśá˝ áá á¨á°áá°á¨áą á˘ááá, 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);
á˛áá á á á áł á¤áľ á áŤáľ-á°á áááĽáŤá¸áá. á áá ááááľ áááľá á¨á°áľáł áá ááŁáá áá˝áá-áááááĽáŠ á°áááá áĽá á á ááá áá ᣠáá á áĽááľ áĽá á áá á¨áá á ááśá˝á á ááĽá°ááᢠáá á áľáᣠááá¨á á áŤáľááááá áááá áἠáá á áĽá ETL, áĽáąá áá° á á¨á´áá ááľáĽ áľááľáŽá˝á ááľááŁáľ á¨áá á. á á á á°á¨ááᢠTABLE á ááááĄ, áááľ áľáá˝ áááŤáá˝á á¨ááŻá áĽá áľáĽáá áĽá ááŁá áĽá áľ á ááá°á áá˛áŤáá áá áá áá˝áá.
áŽá´áŽá˝ áĽá áááá
á á¨áá á°á¨áłáłá áááĄá áá áŤá á á á°áἠáá¸á á áľááá áá, ááááŤáąá á¨áá¨áá áľááľá á áŁá áľáá ááá áá˝áá. ááľáĽ á á áł á¤áľ á¨áá¨áá፠1:10ᣠ1:20 áĽá á ááłááľ áá á°á¨á᪠áá¤áľá áááááľ á¨ááłáŞáŤáá˝ áľáĽáľáĽ á áᢠáá áááľ 1 á´áŁ áŤáá°á¨áá áá¨á á á˛áľá áá á¨50-100 áᢠáááľáłáᢠá ááľ áŤá áá á áĽáŠ ááᣠááἠá ááĽááľ ááá ἠáĽá áá°áŤ áá˝ááá˘
á¨áá°á á¨á¨áá á°á¨áá áááááľ; á á áł á¤áľ á¨áá¨á°ááľá áŽá´áŽá˝ áá°ááá:
á¨á°áá á¨áĽ ááłááĄ-
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);
áĽáá áŽá´áá áĽáááááá DoubleDelta á á ááľ ááłá áá, á ááá°áá ááľáĽ ááŞá, áĽá á°á¨á᪠áá¨ááá áĽááá á ááá LZ4 áááá . á áá ááááŤáľ á á˛áľá áá áŤáá á¨ááἠáá á á áĽá á áááˇá.
áá
á¨ááŤáłá¨á á ááľ á áááľ ááἠáá áŤá
á áŚáł áĽáá°áááľáľ ááᣠááá áá á¨á°ááŤáŠ áŽá´áŽá˝á áĽá áááááŤáá˝á á áá áááĄ-
- á á˛áľá áá á GZIP ááá ááľáĽ;
- á ClickHouse áŤá áŽá´áŽá˝ ᣠáá ᨠZSTD áááá፠áá;
- á ClickHouse ᨠLZ4 áĽá ZSTD áŽá´áŽá˝ áĽá áááá፠ááá˘
áŽá´á áŤáá¸á á á¨á´ááá˝ á áŁá áŤáá° áŚáł áĽáá°ááá áá¨áľ ááťáá.
á¨áá á áá á ááłáŽá˝
áŤáá° á áľááá á áá°áá
á¨áá áŁááľ ááłááá˝ áá á°á á
ááŤáá á°ááłáá64. áá á¨áá¨áĽá á°ááłáá32፠á°áá á¨á°áťá ááááᢠáá
á¨áá áŁáá á ááá áá áŁáá ááŁáĽá ááľáĽ á áááŽá á áᥠá°áá˝ á á°áἠá áłááˇáᢠááĽáŤá á¨ááľáááá á áŁá á¨áłáá ááááľ áá áá á áľááá ááᥠá á˛áľá áá áŤáá áá á á¨áĽáŤá ááĽááľ áŤáá° áĽááłáᢠá á
áł á¤áľ ááĽáą á áŁá áľááłáá˘
áá áá á¨áťá int32 á int64, á¨ááŤá á¨á ááťá¸á áááľ áĽáĽá á¨áá á áá᪠áá áĽá. áá¨áá á ááľá°á áá á°á¨ áľááľáłá áááá, áĽá ááá "ááłáĽ" á áŁá á ááĽááľ áá°áŤá. á á áł á¤áľ á ááľáĄ á áŁá áĽáĽá á¨á°á°á¨á áľáááľ áá, áááá áľáááśá˝ á¨áá°áĄáľ áááá áĽáľáá˝ á¨á áá áá ááá.
áľáá áĽá á°áááľá á¨áá áą áááłáá˝
áľáá áĽá á°á¨áŁá áĽááłáá˝ áá°ááŤáŠ á ááŁááá˝ áľááá áááľáŤáľ áŤáľá˝áááłááĄ-
áááłáᣠáŤáá°á ááá á¨ááá áá¨á áááá
áá˝ááᣠáĽá á áአáá°á á áŠá á áŤáľ-á°á á áá ááá á¨á°ááŤáŠ ááłá áĽááłáá˝á á áĽááą áá ááľáá áľá˝ááá
ᢠSummingMergeTree (SMT). SMT áľááá á áŤáľ-á°á á¨áááĽá áአá¨áá áá፠ááἠááá
á ááᢠáĽáŹ áá¨á á áá¨á ááą ááľáĽ ááĽáˇáᣠá áŤáľ-á°á áá°á á°áŁáᣠáĽá áłá˝áŚááśá˝ áá˛áŤáá áĽá
á áá ááá áá˝ááá˘
á˛á˛á¤á - á¨áľáŽáá ááἠ"áááłáľ".
á¨á áá á áá á¨ááááá áááĽá áĽáá´áľ "áááłáľ" ááťáá? á á áł á¤áľ áĽáá´áľ áĽáá°áá°áŤ áŤááá. á áá á¨áŚá˝á á˛ááĽáŠ, áááá˝ áá˝áá á˛á˛á¤á á áááážá˝áĄ áááłá á¨á°áá áááĽá áá ááľ ááᣠáááłá áá¨áá á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 */
áŁááĽá á°á¨á - á á˛áľáŽá˝ áá áá¨áá áá¨ááá
áá áá ááłáĽ á ááłá á ááἠá ááľáĽ áá¨áá˝ áá˝ááᢠá á áł á¤áľ á á°ááŤáŠ áŚáłáá˝. áŁááá áłáááľ á áŁá ááŁá á áá á áŤáŁá˘áŤá áá áľáŠáľ áá¨ááá˝á áá¨áá¸áľ áĽáááááá áĽáá á á¤áľá¤áľá˛áĽá á°á¨á᪠áłáŞáŤá áá¨ááá˝á áá° áá áŚáł áĽáá¨ááŤáá. ááľáĽ á á áł á¤áľ á áá ááťáá:
á¨áá፠ááá˛áá áááá áá˝áá (á¨áá¨ááť áááŞáŤ) áľááá
á á
áł á¤áľ á ááłááľ áááłáá˝ á˛áá á áŤáľ á°á ááἠáá° áá áá¨ááť áŤáľá°ááááá˘
áá ፠áĽáť á áá°ááᢠá á ááľ á¨á°áá°á á°áá á¨áĽ á°á¨á, ááἠáá° áááá áá¨ááť á˛á°ááá á áľááá á°ááŚá˝á áááá áá˝áá. áááłá, ᨠ7 áááľ ááἠá áŁá ááŁá á áá á˛áľá áá áá°áá, áĽá ááá ááá á¨áá¨á áá° áááá áá°áááá. áá áĽáŠ áá ááááŤáąá áľáááą á¨áá°á á áááá áĽáá˛áá¨á áľáááŤáľá˝áá ááŞáá˝á á áááŁá á áĽá á áááá ááἠáá áááἠáłáŤááĄá˘
CREATE TABLE
...
TTL date + INTERVAL 7 DAY TO VOLUME 'cold_volume',
date + INTERVAL 180 DAY DELETE
áአáŁá áŞáŤáľ á á áł á¤áľ
ááá ááá áááľ ááťáá á á áł á¤áľ áĽáá°áá áŤá âááľáááŤáá˝â á á ᣠáá áĽááą á áአá°á¨á á¨á°ááᥠáá¸á - á ááá˝ á¨ááἠááłáá˝ ááľáĽ á¨ááᢠáááłá, á ááłááľ áአáŁá áŞáŤáľ áĽáá á á á á áł á¤áľ:
- áľááľáŽá˝. á á á áł á¤áľ ááľááľáŽá˝ á áŁá áĽáŠ áľáá, áĽáá˛áá ááľáĽáľáĽ áľááśá˝á á áĽááą áá á¨áá¨ááá á˝ááł.
- á¨ááἠá ááááŽá˝á áá°áŁá°áĽ. áá ᨠ"ááłá áŁá áŞáŤáľ" á ááą áá. á á áł á¤áľ. ááá áĽááłá ᨠYandex á¨áᥠá°áá˝ áĽá ááἠáá°áĽá°áĽ á ááááá á˘áá ᣠááá ááá á ááľáĽ á°á°áŁááá ᢠá á áł á¤áľááááŤáąá ááŁá áĽá ááš áá.
- ááłá áĽááłáá˝. á¨ááἠá ááááŽá˝á á¨ááááľ ááᣠá ááłááľ á¨á°á°áŠ áĽááłáá˝ ááš áĽáá˛áŤá°áá áŤáľá˝áááłá á á°ááłáłá á°ááľ áľááá˘
- ClickHouse SQL. áá á¨ááá á áĽáŤ ááᢠSQL á ááľáĽ áĽáť á¨ááá á ááłááľ á°á¨á᪠áĽá áአáŁá áŞáŤáľ áá á á áł á¤áľ. áá°á á˛á, áĽáá° áááłá, á á ááľ á áŠá ááŤáááŤ, áĽá á áááá á áŠá á°áá ááľááľ áá á. á áá á¨áá áá°á ááá áľáááśá˝ á˛áááአSQL 92 á áľááá°áááᣠá áá á áĽáŤ áĽáť ááá˘
- ááĽá- ááááŤáá˝. á ááá á á ááłááľ á¨ááἠááł ááľáĽ á á?
- ML- áľáá. áá á á°ááŤáŠ á¨ááἠááłáá˝ ááľáĽ áá, á ááłááśáš á¨á°áťá áá¸á, á ááłááśáš á¨á¨á áá¸á.
- áááľ ááá. ááľááľ áĽáá˝ááá á á áł á¤áľ á ááľ áá¨. á áá ááĽáˇáᢠá á áł á¤áľ áá° 500 á¨áá á á á ááŤážá˝áŁ áĽá áá ááĽá á á¨ááá áĽáŤá°á ááá˘
á°ááŽáá áá ááá˝
Đ á á áł á¤áľ á°ááłáłá ááá áááľá¨á áĽá á¨á°ááŤáŠ ááááśá˝ á á. áááłá á¨áá¨á¨áťáá áá á¨á áá á¨áĽ áááááľ áŚáľáľ á¨á°ááŤáŠ ááááśá˝ á áᢠá˛áአ(á áŤá°áá á°áá á á, áá á¨á áá áĽáááł áá).
á¨ááááŞáŤá áá° ááľáĽ ááááŁáľ áá áŤá á ááš áĽáá°áá áŤáłáŤá á á áł á¤áľ áŤáá áá¨ááἠá ááááá áľ áá áĽáŤááá˝ áááł á ááĄáľ áá áá ááľáĽ á°áŤáľáˇá. áá áĽá á áá á ááá˝ á¨ááἠááłáá˝ ááľáĽ á¨áá°áá ááá ááᢠá ááľá ááá á¨áááľ áá áá áá ááááá á¨áááአá ááá˝ á¨ááἠááłáá˝ ááľáĽ áľáŤáá áĽáť á¨áĽáą áá áááłá°á áá˝áá áĽá ááĽá á ááśá˝ ááá á ááĽáᢠJOIN. á á á áł á¤áľ 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
Đ á á áł á¤áľ áĽá á°ááá á á ááá á°ááŁáŤáľ á á ᣠáĽá á áŁááŞáá˝á á¨á°á áá ᣠá¨á፠á á°áááą á áá˝ áá á¨áľ á ááľ áşá áŤá á áŤáááᢠArgMax - á¨áá°ááá áĽá´áľ á¨ááá áŠáľ á°ááŁáŤáľ á ááąáĄ áá áá áĽá´áąá ááááłá á°á áá_á°á áá, á¨áá°áá áá á¨áá°ááľá áľ á¨á°áá á¨_á :
SELECT now() as created_at,
cpu.*
FROM (SELECT DISTINCT tags_id from cpu) base
ASOF LEFT JOIN cpu USING (tags_id, created_at)
ASOF ááááá - á¨á°ááŤáŠ áááŤáľ áá "ááŁá á " á¨áľáá˝. áá ááłáłá¤á áአáŁá ᪠áá áĽá á¨áááá á ááľáĽ áĽáť ááᢠkdb+. á¨á°ááŤá¨ áá áŤáá¸á áááľ á°á¨áłáłá áááŤáľ áŤáᣠASOF ááááá á á ááľ áĽáŤá ááľáĽ áĽáá˛ááአáĽá áĽáá˛áŁá á áŤáľá˝áá¸áá. á á ááľ á°á¨áłáłá áá ááá áĽáŤááłááą áĽá´áľáŁ á ááá ááľáĽ áŤáá á¨á áᥠáĽá´áľ ááááᣠáĽá á á°ááłáłá ááľáá ááááłááĄ
á¨áľááłá á°ááŁáŤáľ
á á°á¨áá ááľáĽ 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: á áááľ ááŤá¨á áŤááá ááŠááľ áááĽáŤá á¨áá áá á°á, áááł, á°áŤ - áĽááá áá á¨áľááłá á°ááŁáŤáľá á¨ááááĽá¨á ááá ááá. ááľáĽ á á áł á¤áľ áĽá á áľááľá áĽáááĽáŤá¸áááᥠá ááááŞáŤ áááĄá áá° áľááľá áĽáá°á áľáŁáá ᣠá¨á፠á áá á áľááľá áá á¨áááááá áĽáá°áááá áĽá á¨á፠ááá°á áĽáá°ááááᢠá áŁá ááš á áá°áá, á˘áŤááľ á˘áŤááľ á°ááŁáŤá ááŽááŤááá áá áá áá ááá, áá á áŁá á°áááá áá.
áአá°ááŁáŤáľ
á á°á¨ááŞá ᣠá á á áł á¤áľ áĽá áአáŁá áŞáŤáľ. áááłáᣠáľááľ ááá áááá˝ á á°ááłáłá áá áĽáá°áááą áĽáá´áľ ááá°á ááťáá? áááľáľá á¨á°ááá° á°ááŁá á á ááľ áĽáŤá ááľáĽ á¨áá°ááá áááľ ááá°á áá. ááľáĽ á á áł á¤áľ ááá ááá áአá°ááŁá á á-
á á á ááá ᣠClickHouse ááĽá ááááá˝ áአá°ááŁáŤáľ á ááľá˘
- áŠáŤ ááŠááľ, áŠáŤ á á¨áá¸, áá¨á¤áľ;
- sumMap (ááá, áĽá´áľ);
- timeSeriesGroupSum(uidᣠtimestampᣠvalue);
- timeSeriesGroupRateSum(uidᣠtimestampᣠvalue);
- skewPopᣠskewSampᣠkurtPopᣠkurtSamp;
- á¨ááááľ áá / á ááŤáŤá;
- ááá ááľáá áŞááŹá˝áᣠáľáśáŤáľá˛áááá áŞááŹá˝áá˘
áá áá á¨áŁá áŞáá˝ áááá á áá°áá, á¨ááą ááľáĽ 500-600 áĽáť áá¸á. áááᥠááá á°ááŁáŤáľ á á á áł á¤áľ á áľáááľ á áá á¨áĽ ááľáĽ á á (ááá á áá°ááááĄá ᣠáá ááá á áľá°áłá˝ áá¸á)
select * from system.functions order by name
á á áł á¤áľ áľááŤáą áĽá áá¨ááá˝á áŤá¨ááťá, á¨áᎠá¨áááἠááľáłááťáá˝ á á¨á´ááá˝, áá áá _ááááĽáŁ á¨áá¨áłá°áŤ áááἠááľáłáᝠᣠá¨ááá áááἠá¨áłáł áĽááŽá˝ áá (ááá_áá), á¨áááŞáŤáá˝ áááἠáĽá á¨áľáááľ áááἠááľáłááť, áĽááá áá áá° á˛áľá áá˝áá. á¨áááŞáŤ áááἠááľáłááťá ááᢠá¨áá á°á¨áłáłá в á á áł á¤áľ á áĽáááą á á áł á¤áľáłáłá¤á áŤáą áá ááŤááľ áá˝ááᢠá¨áá á°á¨áłáłá á¨ááἠááłáá˝, áľááá á áĽáŤáąá "áá áá".
áá
á°áá áአááá áá - áĽáŠ áľáŤ áĽá¨á°áŤá áľááá á¨áá á°á¨áłáłáááááľáá á¨ááááááá áá á áŤáłá˝á ááľáĽ áá¨áá¸áľ áŤáá°á? á áááááᢠááŽááľá¨áľáááá ááá á áŤáłá˝á áĽááľáááŁááᢠá°ááááˇáᢠááŤáá áĽá áĽáŤáłá˝áá áĽáááŁá áŤáá. á˘ááá, á¨áá á á
áł á¤áľ áááľááᣠá ááá - ááá - áá áá áĽááá áá áŤáá á¨ááŤá°áááľá˘
áľáá áľáĽáľáĽ ááá áĽá áľááá˝ á á áł á¤áľ
áá á¨á°áťá áá - á ááľ áľáá áááľá°á ááá áĽá áľááá˝ ClickHouses? áŁá áá á ááŤá¨áĽ áá° DWH ááĽáŤááłááą áá°áá áŞáŤ áĽá áśá˝ á¨á°áá°áĄá áľ áľáá áľáĽáľáĽ ááᢠáá° á¨áá¨á ááą á áľá°áłáłáŞ ááĽá°áá - ááľá ááľáĄá ᣠáĽá áĽá á°á°áĽáśáá-
Đ á á
áł á¤áľ á á°áᨠááááľ ááľá¨á áá˝áá. áĽáŤááłááą áá°áá áŞáŤ á¨áŤáą ááľá¨á áá˝áá á á
áł á¤áľ:
á¨áĽááá˛á
áľáá
ááŤá
á áŤáľáááááᢠDWH áĽá á¨ááá°áŁá አá áľá°áłáłáŞáá˝á˘ ááĽáŤááłááą áá°áá áŞáŤ á¨áŤáąá ááľá áľ áĽáá˝ááá á á
áł á¤áľ, áĽá ááá˘á áĽáŤáą ááľá¨á áá˝áá, ááᎠá á
áł á¤áľ áááŤá á áŁá ááá áĽá ááľáĽáľáĽ á áľá°áłá°á á áŤáľááááá:
áá áĽá áŤáá á á
áł á¤áľ, áĽá áĽá áá áááá áŤáľáááááłá, á¨á፠áá
á áá°áľ á áŤáľ-á°á ááľá¨á ááááá. ááá
, áááłá, áá áá áĽáá˝ááá áŠáŁááŤáśá˝ и á á
áł á¤áľ- áŚááŹá°á. ááľáĽ Kubernetes ClickHouse "á á á
áł" ááľá¨á áľá˝ááá
: á ááľ á ááŤá á á
ááľá¨á áĽá˝ááá, ááááŤáá ááľáŹáľ áĽá á¨ááἠááł ááá áá. áá˛áŤáá áĽá
áľ ááá á áá˝áá, áĽá፠áááŞáŤáá˝á ááŤá ááááŠ, áĽá ᨠ5 á°áááá˝ á áá áłá˝áŚááľ ááá á áá ááŤáá. á áŁá ááá áá!
áá¨á¨áťá áááľá áá?
áĽá áľááá , á á áł á¤áľ - áá :
- á ááĽááľ. áá áá ááá á°á áŤáááá˘
- á ááá. áľáá˝ á á¨áŤáŤáŞ ááá áá áááá á¨áŁáľáŁ áááááľ ááá áááľáááᢠáĽáá´áľ áĽáá°áá á¨á°á¨áą á á áł á¤áľ áá°áŤá, ááá ááá á áŁá ááá áá.
- áááá°áá. áá°ááŤáŠ áááłáá˝ á°áľáá áá- DWHᣠá¨áá á°á¨áłáłáᣠá¨áááἠááľáłááť áá¨ááť. áá á áá°áá OLTP á¨áá¨á ááľ (áłáłá¤á)ᣠáľááá á áŤáá ááľáá˘áŤáá˝á áááľáŤáľ áĽá áĽá፠áááá ἠá ááááŠá˘
- á¨ááľáĽ. á áĽáŽ á¨áá°áŤá áłááá á áááá á á áł á¤áľáŁ áĽá á áľá°áłá˝ á°áááá˝á á áĽáŠ áĽá á ááĽá áľááľ á áŁáĽáááᢠáááłá, á á˛áľ áááľ ááŁ, ááá ááá ááľáŤáľ á ááá. ááá ááááľ áááľ á¨á ááľ á°ááŁá áá á˛áłáá, ááá áá á á´áááŤá áťáľ ááľáĽ á¨áĽáŤá á áá, á°ááŁáŠ á áááľ á°áááá˝ ááľáĽ á°ááľáˇá. ááá ᣠá ááť áááŞáśá ááᣠáá á á°á°á¨áá áŽááá¨áᾠᣠá á˝á áłá áá˝ áĽááł á á áł á¤áľ áľáááąá á°á ᨠHighLoad ++. áĽáá°áá á áááľ áááŽá˝ á á¨ááá áá¨á°áłá áĽáá á áááłá˝áá áŤá°áááłá á á áł á¤áľ áĽáŠá áĽá á áľá°áłá˝!
á¨ááá
áľ á ááŤá¨áĽ ááłá áá˝áá
áá¨á á áá á˛á á á á¨áá á¨á á¨á¨áá°á áááľ áľáááśá˝ ááá˘áá˝ áľáĽá°áŁ á
HighLoad ++ áĽ.á¤.á ááŹáá á 9 áĽá 10 á áľáŽááŽáŽ ááľáĽ ááŤááłá. á áá¨á¨áťáᣠá¨HighLoad++ ááá á ááľáá áá áá á áá áľáááá˝á á¨ááľáá áá áŽááá¨ááľ áááá (ááá áĽááłá ááá áĽááááá˝ á˘á°á¨áá)á˘ááŽááá¨ááą áĽá á ááá°á áĽááłáááá áľáá´áááá á¨áá°á áĽáľáá˝ ááłáŽá˝áĄ HighLoad ++ áá áᣠáĽá á áááľ áááľ ááľáĽ FacebookᣠYandexᣠVKontakteᣠGoogle áĽá Amazon áĽáá´áľ áĽáá°áá°áŠ á¨áááŠá áľ áĽá¸áá áŚáł ááá˘
ᨠ2007 ááᎠáŤáááá¨áĽ áľáĽá°áŁááťá˝áá á ááŤááľ áááľáŽ á14á áá áĽááááááᢠá áá áá ááľáĽ áŽááá¨ááą 10 áá á áľáá, áŁááá á ááľ á¨á˘ááąáľáľáŞá ááá ááľá°áľ 3339 á°áłáłááá˝á á°áĽáľá§á, 165 á¨áŞáááśá˝ áĽá áľáĽá°áŁáá˝ á°áááŞáá˝, áĽá 16 áľáŤáŽá˝ á á°ááłáłá áá ááŤááą áá á.
áŁááá á ááľ ááĽááľá 20 á ááśáĄáśá˝, 5280 ááľá áťá áĽá áĄá, 1650 ááľá á¨ááŤáᏠáá áŚá˝ áĽá 10200 á áááľ áá áá á. áĽá áá 2640 áŞá ááŤá áááĽ, 16 áłá áá˝ áĽá 000 áŠáŁáŤáá˝. á áááŤá˝á áá áĽáá°áá áĽá á áá á¨áá áá¨ááľ á á°á°á á°á á áááἠ25 á¨áŚá á˝ááá˝á á°á¨áá đá˛áŹáśá˝á ááááľ ááťáá
áĽáá áľá ááŁá¤á áá ááá á -áĽáá , áĽá á ááá áá á áŤá á ááłá¨ áá¨áŚá˝ ááľáĽ áááááŠ:á´áááŤá ,Vkontakte и
ááá: hab.com