ClickHouse + Graphite: เดกเดฟเดธเตเด•เต เดธเตเดชเต‡เดธเต เด‰เดชเดญเต‹เด—เด‚ เดŽเด™เตเด™เดจเต† เด—เดฃเตเดฏเดฎเดพเดฏเดฟ เด•เตเดฑเดฏเตเด•เตเด•เดพเด‚

ClickHouse + Graphite: เดกเดฟเดธเตเด•เต เดธเตเดชเต‡เดธเต เด‰เดชเดญเต‹เด—เด‚ เดŽเด™เตเด™เดจเต† เด—เดฃเตเดฏเดฎเดพเดฏเดฟ เด•เตเดฑเดฏเตเด•เตเด•เดพเด‚

เด†เดถเด‚เดธเด•เตพ, เดนเดพเดฌเตผ.

เด†เดฐเต†เด™เตเด•เดฟเดฒเตเด‚ เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเต† เดšเต‚เดทเดฃเด‚ เดšเต†เดฏเตเดคเดพเตฝ เด—เตเดฐเดพเดซเตˆเดฑเตเดฑเต-เดตเต†เดฌเต เด•เต‚เดŸเดพเดคเต† เด’เดฐเต เดธเตเดฑเตเดฑเต‹เดฑเต‡เดœเต เดชเตเดฐเด•เดŸเดจ เดชเตเดฐเดถเตโ€Œเดจเด‚ เดจเต‡เดฐเดฟเดŸเตเดŸเต เดตเดฟเดฐเดธเดค (IO, เดกเดฟเดธเตเด•เต เดธเตเดชเต‡เดธเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต), เดคเตเดŸเตผเดจเตเดจเต เด•เตเดฒเดฟเด•เตเด•เตเดนเต—เดธเต เดชเด•เดฐเด•เตเด•เดพเดฐเดจเดพเดฏเดฟ เด•เดพเดธเตโ€Œเดฑเตเดฑเต เดšเต†เดฏเตเดฏเดชเตเดชเต†เดŸเดพเดจเตเดณเตเดณ เดธเดพเดงเตเดฏเดค เด’เดจเตเดจเดพเดฏเดฟ เดฎเดพเดฑเตเด‚. เดˆ เดชเตเดฐเดธเตเดคเดพเดตเดจ เดธเต‚เดšเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเต เด’เดฐเต เดฎเต‚เดจเตเดจเดพเด‚ เด•เด•เตเดทเดฟ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตฝ เด’เดฐเต เดกเต†เดฎเตบ เดธเตเดตเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจ เดฎเต†เดŸเตเดฐเดฟเด•เตเด•เตเด•เดณเดพเดฏเดฟ เด‡เดคเดฟเดจเด•เด‚ เดคเดจเตเดจเต† เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเดฟเดŸเตเดŸเตเดฃเตเดŸเต เดŽเดจเตเดจเดพเดฃเต. เด•เดพเตผเดฌเตบเดฑเตˆเดฑเตเดฑเตผ เด…เดฅเดตเดพ เด—เต‹-เด•เดพเตผเดฌเตบ.

ClickHouse เดตเดฟเดตเดฐเดฟเดšเตเดš เดชเตเดฐเดถเตเดจเด™เตเด™เตพ เดจเดจเตเดจเดพเดฏเดฟ เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดตเดฟเดธเตเดชเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต 2TiB เดกเดพเดฑเตเดฑ เดŸเตเดฐเดพเตปเดธเตเดซเตผ เดšเต†เดฏเตเดค เดถเต‡เดทเด‚, เด…เดต 300GiB-เดฒเต‡เด•เตเด•เต เดฏเต‹เดœเดฟเด•เตเด•เตเดจเตเดจเต. เดคเดพเดฐเดคเดฎเตเดฏเดคเตเดคเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดžเดพเตป เดตเดฟเดถเดฆเดฎเดพเดฏเดฟ เดธเด‚เดธเดพเดฐเดฟเด•เตเด•เดฟเดฒเตเดฒ; เดˆ เดตเดฟเดทเดฏเดคเตเดคเดฟเตฝ เดงเดพเดฐเดพเดณเด‚ เดฒเต‡เด–เดจเด™เตเด™เดณเตเดฃเตเดŸเต. เด•เต‚เดŸเดพเดคเต†, เด…เดŸเตเดคเตเดคเดฟเดŸเต† เดตเดฐเต†, เดžเด™เตเด™เดณเตเดŸเต† ClickHouse เดธเด‚เดญเดฐเดฃเดคเตเดคเดฟเตฝ เดŽเดฒเตเดฒเดพเด‚ เดคเดฟเด•เดžเตเดžเดฟเดฐเตเดจเตเดจเดฟเดฒเตเดฒ.

เด‰เดชเดฏเต‹เด—เดฟเดšเตเดš เดธเตเดฅเดฒเดตเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดชเตเดชเต†เดŸเตเดŸ เดชเตเดฐเดถเตเดจเด™เตเด™เตพ

เด’เดฑเตเดฑเดจเต‹เดŸเตเดŸเดคเตเดคเดฟเตฝ, เดŽเดฒเตเดฒเดพเด‚ เดจเดจเตเดจเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดฃเด‚. เดชเดฟเดจเตเดคเตเดŸเดฐเตเดจเตเดจเต เดชเตเดฐเดฎเดพเดฃเต€เด•เดฐเดฃเด‚, เดฎเต†เดŸเตเดฐเดฟเด•เตเดธเต เดธเตเดฑเตเดฑเต‹เดฑเต‡เดœเต เดธเตเด•เต€เดฎเดฟเดจเดพเดฏเดฟ เด’เดฐเต เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด• (เด•เต‚เดŸเตเดคเตฝ retention), เดคเตเดŸเตผเดจเตเดจเต เด—เตเดฐเดพเดซเตˆเดฑเตเดฑเต-เดตเต†เดฌเดฟเดจเดพเดฏเดฟ เดคเดฟเดฐเดžเตเดžเต†เดŸเตเดคเตเดค เดฌเดพเด•เตเด•เต†เตปเดกเดฟเดจเตเดฑเต† เดถเตเดชเดพเตผเดถ เด…เดจเตเดธเดฐเดฟเดšเตเดšเต เด’เดฐเต เดชเดŸเตเดŸเดฟเด• เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด•: เด•เดพเตผเดฌเตบ-เด•เตเดฒเดฟเด•เตเด•เตเดนเต—เดธเต+เด—เตเดฐเดพเดซเตˆเดฑเตเดฑเต-เด•เตเดฒเดฟเด•เตเด•เตเดนเต—เดธเต เด…เดฅเดตเดพ เด—เตเดฐเดพเดซเตŒเดธเต, เดเดคเต เดธเตเดฑเตเดฑเดพเด•เตเด•เต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต เดŽเดจเตเดจเดคเดฟเดจเต† เด†เดถเตเดฐเดฏเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เดชเดฟเดจเตเดจเต†... เดŸเตˆเด‚ เดฌเต‹เด‚เดฌเต เดชเตŠเดŸเตเดŸเตเดจเตเดจเต.

เดเดคเดพเดฃเต เดŽเดจเตเดจเต เดฎเดจเดธเดฟเดฒเดพเด•เตเด•เดพเตป, * เด•เตเดŸเตเด‚เดฌเดคเตเดคเดฟเดจเตเดฑเต† เดŽเดžเตเดšเดฟเดจเตเด•เดณเตเดŸเต† เดชเดŸเตเดŸเดฟเด•เด•เดณเดฟเตฝ เด‰เตพเดชเตเดชเต†เดŸเตเดคเตเดคเดฒเตเด•เตพ เดŽเด™เตเด™เดจเต† เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเตเดตเต†เดจเตเดจเตเด‚ เดกเดพเดฑเตเดฑเดฏเตเดŸเต† เดคเตเดŸเตผเดจเตเดจเตเดณเตเดณ เดœเต€เดตเดฟเดค เดชเดพเดคเดฏเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเด‚ เดจเดฟเด™เตเด™เตพ เด…เดฑเดฟเดฏเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต.เดฎเต†เตผเดœเต เดŸเตเดฐเต€ เด•เตเดฒเดฟเด•เตเด•เตเดนเต—เดธเต (เดšเดพเตผเดŸเตเดŸเตเด•เตพ เดŽเดŸเตเดคเตเดคเดคเต เด…เดตเดคเดฐเดฃเด™เตเด™เตพ เด…เดฒเด•เตเดธเดฟ เดธเดพเดฑเตเดฑเต†เดฒเดฟเดชเดฟเตป):

  • เดšเต‡เตผเดคเตเดคเต ะฑะปะพะบ เดกเดพเดฑเตเดฑ. เดžเด™เตเด™เดณเตเดŸเต† เด•เดพเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดŽเดคเตเดคเดฟเดฏ เดฎเต†เดŸเตเดฐเดฟเด•เตเดธเต เด†เดฏเดฟเดฐเตเดจเตเดจเต.
    ClickHouse + Graphite: เดกเดฟเดธเตเด•เต เดธเตเดชเต‡เดธเต เด‰เดชเดญเต‹เด—เด‚ เดŽเด™เตเด™เดจเต† เด—เดฃเตเดฏเดฎเดพเดฏเดฟ เด•เตเดฑเดฏเตเด•เตเด•เดพเด‚
  • เด…เดคเตเดคเดฐเด‚ เด“เดฐเต‹ เดฌเตเดฒเต‹เด•เตเด•เตเด‚ เดกเดฟเดธเตเด•เดฟเตฝ เดŽเดดเตเดคเตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเต เด•เต€ เด…เดจเตเดธเดฐเดฟเดšเตเดšเต เด…เดŸเตเด•เตเด•เตเดจเตเดจเต. ORDER BYเดชเดŸเตเดŸเดฟเด• เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต.
  • เด…เดŸเตเด•เตเด•เดฟเดฏ เดถเต‡เดทเด‚, ะบัƒัะพะบ (part) เดกเดพเดฑเตเดฑ เดกเดฟเดธเตเด•เดฟเตฝ เดŽเดดเตเดคเดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต.
    ClickHouse + Graphite: เดกเดฟเดธเตเด•เต เดธเตเดชเต‡เดธเต เด‰เดชเดญเต‹เด—เด‚ เดŽเด™เตเด™เดจเต† เด—เดฃเตเดฏเดฎเดพเดฏเดฟ เด•เตเดฑเดฏเตเด•เตเด•เดพเด‚
  • เดธเต†เตผเดตเตผ เดชเดถเตเดšเดพเดคเตเดคเดฒเดคเตเดคเดฟเตฝ เดจเดฟเดฐเต€เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเดพเตฝ เด…เดคเตเดคเดฐเด‚ เดจเดฟเดฐเดตเดงเดฟ เดญเดพเด—เด™เตเด™เตพ เด‰เดฃเตเดŸเดพเด•เดพเดคเดฟเดฐเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดชเดถเตเดšเดพเดคเตเดคเดฒเด‚ เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต ัะปะธัะฝะธั (merge, เด‡เดจเดฟ เดฎเตเดคเตฝ เดฒเดฏเดฟเดชเตเดชเดฟเด•เตเด•เตเด•).
    ClickHouse + Graphite: เดกเดฟเดธเตเด•เต เดธเตเดชเต‡เดธเต เด‰เดชเดญเต‹เด—เด‚ เดŽเด™เตเด™เดจเต† เด—เดฃเตเดฏเดฎเดพเดฏเดฟ เด•เตเดฑเดฏเตเด•เตเด•เดพเด‚
    ClickHouse + Graphite: เดกเดฟเดธเตเด•เต เดธเตเดชเต‡เดธเต เด‰เดชเดญเต‹เด—เด‚ เดŽเด™เตเด™เดจเต† เด—เดฃเตเดฏเดฎเดพเดฏเดฟ เด•เตเดฑเดฏเตเด•เตเด•เดพเด‚
  • เดกเดพเดฑเตเดฑเดฏเดฟเดฒเต‡เด•เตเด•เต เดธเดœเต€เดตเดฎเดพเดฏเดฟ เด’เดดเตเด•เตเดจเตเดจเดคเต เดจเดฟเตผเดคเตเดคเดฟเดฏ เด‰เดŸเตป เดคเดจเตเดจเต† เดธเต†เตผเดตเตผ เดธเตเดตเดจเตเดคเดฎเดพเดฏเดฟ เดฒเดฏเดจเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเต เดจเดฟเตผเดคเตเดคเตเดจเตเดจเต ะฟะฐั€ั‚ะธั†ะธัŽ (partition), เดŽเดจเตเดจเดพเตฝ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด•เดฎเดพเตปเดกเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดธเตเดตเดฎเต‡เดงเดฏเดพ เดชเตเดฐเด•เตเดฐเดฟเดฏ เด†เดฐเด‚เดญเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚ OPTIMIZE.
  • เดชเดพเตผเดŸเตเดŸเต€เดทเดจเดฟเตฝ เด’เดฐเต เด•เดทเดฃเด‚ เดฎเดพเดคเตเดฐเดฎเต‡ เด…เดตเดถเต‡เดทเดฟเด•เตเด•เตเดจเตเดจเตเดณเตเดณเต‚ เดŽเด™เตเด•เดฟเตฝ, เดธเดพเดงเดพเดฐเดฃ เด•เดฎเดพเตปเดกเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดฒเดฏเดจเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเดฟเดฒเตเดฒ; เดจเดฟเด™เตเด™เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดฃเด‚ OPTIMIZE ... FINAL

เด…เดคเดฟเดจเดพเตฝ, เด†เดฆเตเดฏ เด…เดณเดตเตเด•เตพ เดตเดฐเตเดจเตเดจเต. เด…เดตเตผ เด•เตเดฑเดšเตเดšเต เดธเตเดฅเดฒเด‚ เดŽเดŸเตเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เดคเตเดŸเตผเดจเตเดจเตเดณเตเดณ เดธเด‚เดญเดตเด™เตเด™เตพ เดชเดฒ เด˜เดŸเด•เด™เตเด™เดณเต† เด†เดถเตเดฐเดฏเดฟเดšเตเดšเต เด…เดฒเตเดชเด‚ เดตเตเดฏเดคเตเดฏเดพเดธเดชเตเดชเต†เดŸเดพเด‚:

  • เดชเดพเตผเดŸเตเดŸเต€เดทเดจเดฟเด‚เด—เต เด•เต€ เดตเดณเดฐเต† เดšเต†เดฑเตเดคเต‹ (เด’เดฐเต เดฆเดฟเดตเดธเด‚) เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดตเดณเดฐเต† เดตเดฒเตเดคเต‹ (เดจเดฟเดฐเดตเดงเดฟ เดฎเดพเดธเด™เตเด™เตพ) เด†เด•เดพเด‚.
  • เดธเดœเต€เดตเดฎเดพเดฏ เดชเดพเตผเดŸเตเดŸเต€เดทเดจเดฟเดฒเต† (เดฎเต†เดŸเตเดฐเดฟเด•เตโ€Œเดธเต เดฐเต‡เด–เดชเตเดชเต†เดŸเตเดคเตเดคเดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดฟเดŸเดคเตเดคเต) เดจเดฟเดฐเดตเดงเดฟ เดธเตเดชเตเดฐเดงเดพเดจ เดกเดพเดฑเตเดฑ เด…เด—เตเดฐเด—เต‡เดทเตป เดคเตเดฐเต†เดทเต‹เตพเดกเตเด•เตพ เดจเดฟเดฒเดจเดฟเตผเดคเตเดคเตฝ เด•เต‹เตบเดซเดฟเด—เดฑเดฟเดจเต เดฏเต‹เดœเดฟเดšเตเดšเต‡เด•เตเด•เดพเด‚.
  • เดงเดพเดฐเดพเดณเด‚ เดกเดพเดฑเตเดฑ เด‰เดฃเตเดŸเต†เด™เตเด•เดฟเตฝ, เดฌเดพเด•เตเด•เตเด—เตเดฐเต—เดฃเตเดŸเต เดฒเดฏเดจเด‚ เดฎเต‚เดฒเด‚ เด‡เดคเดฟเดจเด•เด‚ เดคเดจเตเดจเต† เดตเดณเดฐเต† เดตเดฒเตเดคเดพเดฏเต‡เด•เตเด•เดพเดตเตเดจเตเดจ เด†เดฆเตเดฏ เดญเดพเด—เด™เตเด™เตพ (เดจเดฟเด™เตเด™เตพ เด’เดชเตเดฑเตเดฑเดฟเดฎเตฝ เด…เดฒเตเดฒเดพเดคเตเดค เดชเดพเตผเดŸเตเดŸเต€เดทเดจเดฟเด‚เด—เต เด•เต€ เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ), เดชเตเดคเดฟเดฏ เดšเต†เดฑเดฟเดฏ เด•เดทเดฃเด™เตเด™เดณเตเดฎเดพเดฏเดฟ เดธเตเดตเดฏเด‚ เดฒเดฏเดฟเด•เตเด•เดฟเดฒเตเดฒ.

เด…เดคเต เดŽเดชเตเดชเต‹เดดเตเด‚ เด’เดฐเต‡ เดชเต‹เดฒเต† เด…เดตเดธเดพเดจเดฟเด•เตเด•เตเดจเตเดจเต. ClickHouse-เตฝ เดฎเต†เดŸเตเดฐเดฟเด•เตเด•เตเด•เตพ เด‰เตพเด•เตเด•เตŠเดณเตเดณเตเดจเตเดจ เด‡เดŸเด‚ เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจเดตเดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ เดฎเดพเดคเตเดฐเดฎเต‡ เดตเตผเดฆเตเดงเดฟเด•เตเด•เตเด•เดฏเตเดณเตเดณเต‚:

  • เดชเตเดฐเดฏเต‹เด—เดฟเด•เตเด•เดฐเตเดคเต OPTIMIZE ... FINAL เดธเตเดตเดฎเต‡เดงเดฏเดพ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ
  • เดŽเดฒเตเดฒเดพ เดชเดพเตผเดŸเตเดŸเต€เดทเดจเตเด•เดณเดฟเดฒเต‡เด•เตเด•เตเด‚ เดคเตเดŸเตผเดšเตเดšเดฏเดพเดฏเดฟ เดกเดพเดฑเตเดฑ เดšเต‡เตผเด•เตเด•เดฐเตเดคเต, เด…เดคเตเดตเดดเดฟ เดŽเดคเตเดฐเดฏเตเด‚ เดตเต‡เด—เด‚ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดชเดฟเดจเตเดจเต€เดŸเต เด’เดฐเต เดชเดถเตเดšเดพเดคเตเดคเดฒ เดฒเดฏเดจเด‚ เด†เดฐเด‚เดญเดฟเด•เตเด•เตเด‚

เดฐเดฃเตเดŸเดพเดฎเดคเตเดคเต† เดฐเต€เดคเดฟ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เดพเตป เดเดฑเตเดฑเดตเตเด‚ เดŽเดณเตเดชเตเดชเดฎเดพเดฃเต†เดจเตเดจเต เดคเต‹เดจเตเดจเตเดจเตเดจเต, เด…เดคเดฟเดจเดพเตฝ เด‡เดคเต เดคเต†เดฑเตเดฑเดพเดฃเต, เด†เดฆเตเดฏเด‚ เดชเดฐเต€เด•เตเดทเดฟเดšเตเดšเต.
เด•เดดเดฟเดžเตเดž 4 เดตเตผเดทเดฎเดพเดฏเดฟ เดŽเดฒเตเดฒเดพ เดฆเดฟเดตเดธเดตเตเด‚ เดกเดฎเตเดฎเดฟ เดฎเต†เดŸเตเดฐเดฟเด•เตโ€Œเดธเต เด…เดฏเดฏเตเด•เตเด•เตเด•เดฏเตเด‚ เด“เดฐเต‹ เดฎเดฃเดฟเด•เตเด•เต‚เดฑเดฟเดฒเตเด‚ เด•เตเดฐเต‹เตบ เดฑเตบ เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจ เดตเดณเดฐเต† เดฒเดณเดฟเดคเดฎเดพเดฏ เด’เดฐเต เดชเตˆเดคเตเดคเตบ เดธเตโ€Œเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดžเดพเตป เดŽเดดเตเดคเดฟ.
ClickHouse DBMS-เดจเตเดฑเต† เดฎเตเดดเตเดตเตป เดชเตเดฐเดตเตผเดคเตเดคเดจเดตเตเด‚ เดˆ เดธเดฟเดธเตเดฑเตเดฑเด‚ เดŽเดคเตเดฐเดฏเตเด‚ เดตเต‡เด—เด‚ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดชเดฟเดจเตเดจเต€เดŸเต เดŽเดฒเตเดฒเดพ เดชเดถเตเดšเดพเดคเตเดคเดฒ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเตเด‚ เดšเต†เดฏเตเดฏเตเดฎเต†เดจเตเดจ เดตเดธเตเดคเตเดคเดฏเต† เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟเดฏเตเดณเตเดณเดคเดพเดฃเต, เดŽเดจเตเดจเดพเตฝ เดŽเดชเตเดชเต‹เดดเดพเดฃเต†เดจเตเดจเต เด…เดฑเดฟเดฏเดฟเดฒเตเดฒ, เดชเดดเดฏ เด•เต‚เดฑเตเดฑเตป เดญเดพเด—เด™เตเด™เตพ เดฒเดฏเดฟเด•เตเด•เดพเตป เดคเตเดŸเด™เตเด™เตเดจเตเดจ เดจเดฟเดฎเดฟเดทเดคเตเดคเดฟเดจเดพเดฏเดฟ เด•เดพเดคเตเดคเดฟเดฐเดฟเด•เตเด•เดพเตป เดŽเดจเดฟเด•เตเด•เต เด•เดดเดฟเดžเตเดžเดฟเดฒเตเดฒ. เดชเตเดคเดฟเดฏ เดšเต†เดฑเดฟเดฏเดต. เดจเดฟเตผเดฌเดจเตเดงเดฟเดค เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเดจเตเด•เตพ เด“เดŸเตเดŸเต‹เดฎเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด’เดฐเต เดตเดดเดฟ เดžเด™เตเด™เตพ เดจเต‹เด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต†เดจเตเดจเต เดตเตเดฏเด•เตเดคเดฎเดพเดฏเดฟ.

ClickHouse + Graphite: เดกเดฟเดธเตเด•เต เดธเตเดชเต‡เดธเต เด‰เดชเดญเต‹เด—เด‚ เดŽเด™เตเด™เดจเต† เด—เดฃเตเดฏเดฎเดพเดฏเดฟ เด•เตเดฑเดฏเตเด•เตเด•เดพเด‚

ClickHouse เดธเดฟเดธเตเดฑเตเดฑเด‚ เดŸเต‡เดฌเดฟเดณเตเด•เดณเดฟเดฒเต† เดตเดฟเดตเดฐเด™เตเด™เตพ

เดชเดŸเตเดŸเดฟเด•เดฏเตเดŸเต† เด˜เดŸเดจ เดจเต‹เด•เตเด•เดพเด‚ เดธเดฟเดธเตเดฑเตเดฑเด‚.เดญเดพเด—เด™เตเด™เตพ. ClickHouse เดธเต†เตผเดตเดฑเดฟเดฒเต† เดŽเดฒเตเดฒเดพ เดŸเต‡เดฌเดฟเดณเตเด•เดณเตเดŸเต‡เดฏเตเด‚ เด“เดฐเต‹ เดญเดพเด—เดคเตเดคเต†เดฏเตเด‚ เด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดธเดฎเด—เตเดฐเดฎเดพเดฏ เดตเดฟเดตเดฐเดฎเดพเดฃเดฟเดคเต. เดฎเดฑเตเดฑเต เด•เดพเดฐเตเดฏเด™เตเด™เตพเด•เตเด•เตŠเดชเตเดชเด‚, เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดจเดฟเดฐเด•เตพ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต:

  • db เดชเต‡เดฐเต (database);
  • เดชเดŸเตเดŸเดฟเด•เดฏเตเดŸเต† เดชเต‡เดฐเต (table);
  • เดชเดพเตผเดŸเตเดŸเต€เดทเตป เดชเต‡เดฐเตเด‚ เดเดกเดฟเดฏเตเด‚ (partition & partition_id);
  • เด•เดทเดฃเด‚ เดธเตƒเดทเตเดŸเดฟเดšเตเดšเดชเตเดชเต‹เตพ (modification_time);
  • เด’เดฐเต เด•เดทเดฃเดคเตเดคเดฟเดฒเต† เดเดฑเตเดฑเดตเตเด‚ เด•เตเดฑเดžเตเดžเดคเตเด‚ เด•เต‚เดŸเดฟเดฏเดคเตเดฎเดพเดฏ เดคเต€เดฏเดคเดฟ (เดตเดฟเดญเดœเดจเด‚ เดฆเดฟเดตเดธเด‚ เด•เตŠเดฃเตเดŸเดพเดฃเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต) (min_date & max_date);

เด’เดฐเต เดฎเต‡เดถเดฏเตเด‚ เด‰เดฃเตเดŸเต system.graphite_retentions, เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดฐเดธเด•เดฐเดฎเดพเดฏ เดซเต€เตฝเดกเตเด•เตพเด•เตเด•เตŠเดชเตเดชเด‚:

  • db เดชเต‡เดฐเต (Tables.database);
  • เดชเดŸเตเดŸเดฟเด•เดฏเตเดŸเต† เดชเต‡เดฐเต (Tables.table);
  • เด…เดŸเตเดคเตเดค เด…เด—เตเดฐเด—เต‡เดทเตป เดชเตเดฐเดฏเต‹เด—เดฟเด•เตเด•เต‡เดฃเตเดŸ เดฎเต†เดŸเตเดฐเดฟเด•เต เดชเตเดฐเดพเดฏเด‚ (age);

เด…เด™เตเด™เดจเต†:

  1. เดžเด™เตเด™เตพเด•เตเด•เต เดšเด™เตเด•เตเด•เดณเตเดŸเต† เด’เดฐเต เดชเดŸเตเดŸเดฟเด•เดฏเตเด‚ เด…เด—เตเดฐเด—เต‡เดทเตป เดจเดฟเดฏเดฎเด™เตเด™เดณเตเดŸเต† เด’เดฐเต เดชเดŸเตเดŸเดฟเด•เดฏเตเด‚ เด‰เดฃเตเดŸเต.
  2. เดžเด™เตเด™เตพ เด…เดตเดฏเตเดŸเต† เด•เดตเดฒเด•เตพ เดธเด‚เดฏเต‹เดœเดฟเดชเตเดชเดฟเดšเตเดšเต เดŽเดฒเตเดฒเดพ เดŸเต‡เดฌเดฟเดณเตเด•เดณเตเด‚ *GraphiteMergeTree เดจเต‡เดŸเตเดจเตเดจเต.
  3. เดžเด™เตเด™เตพ เดŽเดฒเตเดฒเดพ เดชเดพเตผเดŸเตเดŸเต€เดทเดจเตเด•เดณเตเด‚ เดคเดฟเดฐเดฏเตเดจเตเดจเต:
    • เด’เดจเตเดจเดฟเดฒเดงเดฟเด•เด‚ เด•เดทเดฃเด™เตเด™เตพ
    • เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด…เดŸเตเดคเตเดค เด…เด—เตเดฐเด—เต‡เดทเตป เดฑเต‚เตพ เดชเตเดฐเดฏเต‹เด—เดฟเด•เตเด•เดพเดจเตเดณเตเดณ เดธเดฎเดฏเด‚ เดตเดจเตเดจเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต, เด•เต‚เดŸเดพเดคเต† modification_time เดˆ เดจเดฟเดฎเดฟเดทเดคเตเดคเต‡เด•เตเด•เดพเตพ เดชเดดเดฏเดคเต.

เดจเดŸเดชเตเดชเดพเด•เตเด•เตฝ

เดˆ เด…เดญเตเดฏเตผเดคเตเดฅเดจ

SELECT
    concat(p.database, '.', p.table) AS table,
    p.partition_id AS partition_id,
    p.partition AS partition,
    -- ะกะฐะผะพะต "ัั‚ะฐั€ะพะต" ะฟั€ะฐะฒะธะปะพ, ะบะพั‚ะพั€ะพะต ะผะพะถะตั‚ ะฑั‹ั‚ัŒ ะฟั€ะธะผะตะฝะตะฝะพ ะดะปั
    -- ะฟะฐั€ั‚ะธั†ะธะธ, ะฝะพ ะฝะต ะฒ ะฑัƒะดัƒั‰ะตะผ, ัะผ (*)
    max(g.age) AS age,
    -- ะšะพะปะธั‡ะตัั‚ะฒะพ ะบัƒัะบะพะฒ ะฒ ะฟะฐั€ั‚ะธั†ะธะธ
    countDistinct(p.name) AS parts,
    -- ะ—ะฐ ัะฐะผัƒัŽ ัั‚ะฐั€ัˆัƒัŽ ะผะตั‚ั€ะธะบัƒ ะฒ ะฟะฐั€ั‚ะธั†ะธะธ ะฟั€ะธะฝะธะผะฐะตั‚ัั 00:00:00 ัะปะตะดัƒัŽั‰ะตะณะพ ะดะฝั
    toDateTime(max(p.max_date + 1)) AS max_time,
    -- ะšะพะณะดะฐ ะฟะฐั€ั‚ะธั†ะธั ะดะพะปะถะฝะฐ ะฑั‹ั‚ัŒ ะพะฟั‚ะธะผะธะทะธั€ะพะฒะฐะฝะฝะฐ
    max_time + age AS rollup_time,
    -- ะšะพะณะดะฐ ัะฐะผั‹ะน ัั‚ะฐั€ั‹ะน ะบัƒัะพะบ ะฒ ะฟะฐั€ั‚ะธั†ะธะธ ะฑั‹ะป ะพะฑะฝะพะฒะปั‘ะฝ
    min(p.modification_time) AS modified_at
FROM system.parts AS p
INNER JOIN
(
    -- ะ’ัะต ะฟั€ะฐะฒะธะปะฐ ะดะปั ะฒัะตั… ั‚ะฐะฑะปะธั† *GraphiteMergeTree
    SELECT
        Tables.database AS database,
        Tables.table AS table,
        age
    FROM system.graphite_retentions
    ARRAY JOIN Tables
    GROUP BY
        database,
        table,
        age
) AS g ON
    (p.table = g.table)
    AND (p.database = g.database)
WHERE
    -- ะขะพะปัŒะบะพ ะฐะบั‚ะธะฒะฝั‹ะต ะบัƒัะบะธ
    p.active
    -- (*) ะ˜ ั‚ะพะปัŒะบะพ ัั‚ั€ะพะบะธ, ะณะดะต ะฟั€ะฐะฒะธะปะฐ ะฐะณะณั€ะตะณะฐั†ะธะธ ัƒะถะต ะดะพะปะถะฝั‹ ะฑั‹ั‚ัŒ ะฟั€ะธะผะตะฝะตะฝั‹
    AND ((toDateTime(p.max_date + 1) + g.age) < now())
GROUP BY
    table,
    partition
HAVING
    -- ะขะพะปัŒะบะพ ะฟะฐั€ั‚ะธั†ะธะธ, ะบะพั‚ะพั€ั‹ะต ะผะปะฐะดัˆะต ะผะพะผะตะฝั‚ะฐ ะพะฟั‚ะธะผะธะทะฐั†ะธะธ
    (modified_at < rollup_time)
    -- ะ˜ะปะธ ั ะฝะตัะบะพะปัŒะบะธะผะธ ะบัƒัะบะฐะผะธ
    OR (parts > 1)
ORDER BY
    table ASC,
    partition ASC,
    age ASC

เด“เดฐเต‹ *GraphiteMergeTree เดŸเต‡เดฌเดฟเตพ เดชเดพเตผเดŸเตเดŸเต€เดทเดจเตเด•เดณเตเด‚ เดจเตฝเด•เตเดจเตเดจเต, เด…เดตเดฏเตเดŸเต† เดฒเดฏเดจเด‚ เดกเดฟเดธเตเด•เต เดธเตเดชเต‡เดธเต เดถเต‚เดจเตเดฏเดฎเดพเด•เตเด•เตเด‚. เด’เดฐเต เด…เดญเตเดฏเตผเดคเตเดฅเดจเดฏเตเดฎเดพเดฏเดฟ เด…เดตเดฏเดฟเดฒเต‚เดŸเต† เด•เดŸเดจเตเดจเตเดชเต‹เด•เตเด• เดฎเดพเดคเตเดฐเดฎเดพเดฃเต เด‡เดจเดฟ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเต OPTIMIZE ... FINAL. เดธเดœเต€เดตเดฎเดพเดฏ เดฑเต†เด•เตเด•เต‹เตผเดกเดฟเด‚เด—เต เด‰เดณเตเดณ เดชเดพเตผเดŸเตเดŸเต€เดทเดจเตเด•เตพ เดธเตเดชเตผเดถเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเดฟเดฒเตเดฒ เดŽเดจเตเดจ เดตเดธเตเดคเตเดคเดฏเตเด‚ เด…เดจเตเดคเดฟเดฎ เดจเดŸเดชเตเดชเดพเด•เตเด•เตฝ เด•เดฃเด•เตเด•เดฟเดฒเต†เดŸเตเด•เตเด•เตเดจเตเดจเต.

เด‡เดคเตเดคเดจเตเดจเต†เดฏเดพเดฃเต เดชเดฆเตเดงเดคเดฟเดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต เด—เตเดฐเดพเดซเตˆเดฑเตเดฑเต-ch-เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเตผ. Yandex.Market-เตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดฎเตเตป เดธเดนเดชเตเดฐเดตเตผเดคเตเดคเด•เตผ เด‡เดคเต เด‰เตฝเดชเตเดชเดพเดฆเดจเดคเตเดคเดฟเตฝ เดชเดฐเต€เด•เตเดทเดฟเดšเตเดšเต, เดœเต‹เดฒเดฟเดฏเตเดŸเต† เดซเดฒเด‚ เดšเตเดตเดŸเต† เด•เดพเดฃเดพเตป เด•เดดเดฟเดฏเตเด‚.

ClickHouse + Graphite: เดกเดฟเดธเตเด•เต เดธเตเดชเต‡เดธเต เด‰เดชเดญเต‹เด—เด‚ เดŽเด™เตเด™เดจเต† เด—เดฃเตเดฏเดฎเดพเดฏเดฟ เด•เตเดฑเดฏเตเด•เตเด•เดพเด‚

ClickHouse เด‰เดณเตเดณ เด’เดฐเต เดธเต†เตผเดตเดฑเดฟเตฝ เดจเดฟเด™เตเด™เตพ เดชเตเดฐเต‹เด—เตเดฐเดพเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ, เด…เดคเต เดกเต†เดฎเตบ เดฎเต‹เดกเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเตป เดคเตเดŸเด™เตเด™เตเด‚. เด’เดฐเต เดฎเดฃเดฟเด•เตเด•เต‚เดฑเดฟเตฝ เด’เดฐเดฟเด•เตเด•เตฝ เด’เดฐเต เด…เดญเตเดฏเตผเดคเตเดฅเดจ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเด‚, เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเตเดจเตเดจ เดฎเต‚เดจเตเดจเต เดฆเดฟเดตเดธเดคเตเดคเดฟเดฒเดงเดฟเด•เด‚ เดชเดดเดฏ เดชเตเดคเดฟเดฏ เดชเดพเตผเดŸเตเดŸเต€เดทเดจเตเด•เตพ เดชเตเดฐเดคเตเดฏเด•เตเดทเดชเตเดชเต†เดŸเตเดŸเดฟเดŸเตเดŸเตเดฃเตเดŸเต‹ เดŽเดจเตเดจเต เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเด•.

เดžเด™เตเด™เดณเตเดŸเต† เด‰เดŸเดจเดŸเดฟ เดชเดฆเตเดงเดคเดฟเด•เตพ เด•เตเดฑเดžเตเดžเดคเต เดกเต†เดฌเต เดชเดพเด•เตเด•เต‡เดœเตเด•เดณเต†เด™เตเด•เดฟเดฒเตเด‚ เดจเตฝเด•เดพเดจเดพเดฃเต, เดธเดพเดงเตเดฏเดฎเต†เด™เตเด•เดฟเตฝ เด†เตผเดชเดฟเดŽเดฎเตเดฎเตเด‚.

เดชเด•เดฐเด‚ เด’เดฐเต เดจเดฟเด—เดฎเดจเดคเตเดคเดฟเตฝ เดŽเดจเตเดจ

เด•เดดเดฟเดžเตเดž 9+ เดฎเดพเดธเด™เตเด™เดณเดพเดฏเดฟ เดžเดพเตป เดŽเดจเตเดฑเต† เด•เดฎเตเดชเดจเดฟเด•เตเด•เตเดณเตเดณเดฟเดฒเดพเดฃเต เด‡เดจเตเดจเต‹เด—เต†เดฏเดฟเด‚เดธเต เด•เตเดฒเดฟเด•เตเด•เต เดนเต—เดธเดฟเดจเตเดฑเต†เดฏเตเด‚ เด—เตเดฐเดพเดซเตˆเดฑเตเดฑเต-เดตเต†เดฌเดฟเดจเตเดฑเต†เดฏเตเด‚ เด•เดตเดฒเดฏเดฟเตฝ เดงเดพเดฐเดพเดณเด‚ เดธเดฎเดฏเด‚ เดšเดฟเดฒเดตเดดเดฟเดšเตเดšเต. เด‡เดคเตŠเดฐเต เดจเดฒเตเดฒ เด…เดจเตเดญเดตเดฎเดพเดฏเดฟเดฐเตเดจเตเดจเต, เด‡เดคเต เดตเดฟเดธเตโ€Œเดชเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เด’เดฐเต เดฎเต†เดŸเตเดฐเดฟเด•เตโ€Œเดธเต เดธเตโ€Œเดฑเตเดฑเต‹เดฑเต‡เดœเดพเดฏเดฟ ClickHouse-เดฒเต‡เด•เตเด•เต เดชเต†เดŸเตเดŸเต†เดจเตเดจเตเดณเตเดณ เดชเดฐเดฟเดตเตผเดคเตเดคเดจเดคเตเดคเดฟเดจเต เด•เดพเดฐเดฃเดฎเดพเดฏเดฟ. เดˆ เดธเตเดฑเตเดฑเดพเด•เตเด•เดฟเดจเตเดฑเต† เดตเดฟเดตเดฟเดง เดญเดพเด—เด™เตเด™เดณเดฟเตฝ เดžเด™เตเด™เตพ เดŽเดจเตเดคเตŠเด•เตเด•เต† เดฎเต†เดšเตเดšเดชเตเดชเต†เดŸเตเดคเตเดคเดฒเตเด•เตพ เดตเดฐเตเดคเตเดคเดฟ, เดญเดพเดตเดฟเดฏเดฟเตฝ เดŽเดจเตเดคเตเดšเต†เดฏเตเดฏเตเด‚ เดŽเดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เด’เดฐเต เดชเดฐเดฎเตเดชเดฐเดฏเตเดŸเต† เดคเตเดŸเด•เตเด•เดฎเดพเดฃเต เดˆ เดฒเต‡เด–เดจเด‚ เดŽเดจเตเดจเต เดžเดพเตป เดชเตเดฐเดคเต€เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเต.

เด…เดญเตเดฏเตผเดคเตเดฅเดจ เดตเดฟเด•เดธเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเดพเดฏเดฟ เดจเดฟเดฐเดตเดงเดฟ เดฒเดฟเดฑเตเดฑเตผ เดฌเดฟเดฏเดฑเตเด‚ เด…เดกเตเดฎเดฟเตป เดฆเดฟเดตเดธเด™เตเด™เดณเตเด‚ เดšเต†เดฒเดตเดดเดฟเดšเตเดšเต v0เดกเต†เดตเดฟเตพ, เด…เดคเดฟเดจเดพเดฏเดฟ เดžเดพเตป เด…เดฆเตเดฆเต‡เดนเดคเตเดคเต‹เดŸเต เดŽเดจเตเดฑเต† เดจเดจเตเดฆเดฟ เดชเตเดฐเด•เดŸเดฟเดชเตเดชเดฟเด•เตเด•เดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเต. เด•เต‚เดŸเดพเดคเต† เดˆ เดฒเต‡เด–เดจเด‚ เด…เดตเดฒเต‹เด•เดจเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเด‚.

เด—เดฟเดคเตเดคเดฌเดฟเดฒเต† เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เดชเต‡เดœเต

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•