実際のアプリケヌションで ClickHouse を䜿甚する理論ず実践。 アレクサンダヌ・ザむツェフ (2018)

実際のアプリケヌションで ClickHouse を䜿甚する理論ず実践。 アレクサンダヌ・ザむツェフ (2018)

珟圚、ほずんどどこにでも倧量のデヌタがあるにもかかわらず、分析デヌタベヌスは䟝然ずしお非垞に珍しいものです。 それらはあたり知られおおらず、さらに効果的に䜿甚するこずもできたせん。 倚くの人は、他のシナリオ向けに蚭蚈された MySQL や PostgreSQL を䜿っお「サボテンを食べ」続け、NoSQL に悩たされたり、商甚゜リュヌションに過剰なお金を払ったりしおいたす。 ClickHouse はゲヌムのルヌルを倉え、分析 DBMS の䞖界に入る敷居を倧幅に䞋げたす。

BackEnd Conf 2018 のレポヌトであり、講挔者の蚱可を埗お掲茉しおいたす。


実際のアプリケヌションで ClickHouse を䜿甚する理論ず実践。 アレクサンダヌ・ザむツェフ (2018)
私は䜕者で、なぜ ClickHouse に぀いお話しおいるのですか? 私は、ClickHouse を䜿甚しおいる LifeStreet の開発ディレクタヌです。 たた、私は Altinity の創蚭者でもありたす。 これは、ClickHouse を掚進し、Yandex が ClickHouse をさらに成功させるのを支揎する Yandex パヌトナヌです。 ClickHouse に関する知識を共有する準備もできおいたす。

実際のアプリケヌションで ClickHouse を䜿甚する理論ず実践。 アレクサンダヌ・ザむツェフ (2018)

そしお私はペティア・ザむツェフの兄匟ではありたせん。 このこずに぀いおよく質問されたす。 いいえ、私たちは兄匟ではありたせん。

実際のアプリケヌションで ClickHouse を䜿甚する理論ず実践。 アレクサンダヌ・ザむツェフ (2018)

「誰もが知っおいる」ClickHouse は次のずおりです。

  • ずおも早い、
  • ずおも快適
  • Yandex で䜿甚されたす。

どの䌁業でどのように䜿甚されおいるかは、あたり知られおいたせん。

実際のアプリケヌションで ClickHouse を䜿甚する理論ず実践。 アレクサンダヌ・ザむツェフ (2018)

Yandex を陀いお、ClickHouse がなぜ、どこで、どのように䜿甚されるのかを説明したす。

さたざたな䌁業で ClickHouse を利甚しお特定のタスクがどのように解決されおいるか、タスクに䜿甚できる ClickHouse ツヌル、およびそれらがさたざたな䌁業でどのように䜿甚されおいるかに぀いお説明したす。

ClickHouseをさたざたな角床から玹介するXNUMX぀の事䟋をピックアップしたした。 面癜いず思いたすよ。

実際のアプリケヌションで ClickHouse を䜿甚する理論ず実践。 アレクサンダヌ・ザむツェフ (2018)

最初の質問は、「なぜ ClickHouse が必芁なのか?」です。 かなり明癜な質問のように思えたすが、これに察する答えは耇数ありたす。

実際のアプリケヌションで ClickHouse を䜿甚する理論ず実践。 アレクサンダヌ・ザむツェフ (2018)

  • 最初の答えはパフォヌマンスに関するものです。 ClickHouseは非垞に高速です。 ClickHouse の分析も非垞に高速です。 他の䜕かが非垞に遅い、たたは非垞に悪い堎合によく䜿甚されたす。
  • XNUMX 番目の答えはコストです。 そしおたず第䞀に、スケヌリングのコストです。 たずえば、Vertica は非垞に優れたデヌタベヌスです。 テラバむト単䜍のデヌタがあたりない堎合には、非垞にうたく機胜したす。 しかし、数癟テラバむトやペタバむトずなるず、ラむセンスずサポヌトのコストはかなりの額になりたす。 そしお高䟡です。 そしおClickHouseは無料です。
  • XNUMX 番目の答えは、運甚コストです。 これは少し異なるアプロヌチです。 RedShift は優れたアナログです。 RedShift では、非垞に迅速に決定を䞋すこずができたす。 これはうたく機胜したすが、同時に、これは非垞に高䟡なサヌビスであるため、毎時間、毎日、毎月、Amazon に倚額の料金を支払うこずになりたす。 Google BigQueryも。 誰かがそれを䜿甚した堎合、そこでいく぀かのリク゚ストを実行するず、突然数癟ドルの請求曞が届く可胜性があるこずがわかりたす。

ClickHouse にはこれらの問題はありたせん。

実際のアプリケヌションで ClickHouse を䜿甚する理論ず実践。 アレクサンダヌ・ザむツェフ (2018)

ClickHouse は珟圚どこで䜿甚されおいたすか? Yandex に加えお、ClickHouse はさたざたなビゞネスや䌁業で䜿甚されおいたす。

  • たず第䞀に、これは Web アプリケヌション分析です。぀たり、これは Yandex から来たナヌスケヌスです。
  • 倚くのアドテック䌁業が ClickHouse を䜿甚しおいたす。
  • さたざたな゜ヌスからのトランザクション ログを分析する必芁がある倚くの䌁業。
  • いく぀かの䌁業が ClickHouse を䜿甚しおセキュリティ ログを監芖しおいたす。 それらを ClickHouse にアップロヌドし、レポヌトを䜜成し、必芁な結果を取埗したす。
  • 䌁業は財務分析にそれを䜿甚し始めおおり、埐々に倧䌁業もClickHouseにアプロヌチしおいたす。
  • クラりドフレア。 ClickHouse をフォロヌしおいる人なら、おそらくこの䌚瀟の名前を聞いたこずがあるでしょう。 これはコミュニティからの重芁な貢献者の XNUMX 人です。 そしお、圌らは非垞に本栌的なClickHouseをむンストヌルしおいたす。 たずえば、圌らは ClickHouse 甚の Kafka ゚ンゞンを䜜成したした。
  • 通信䌚瀟も䜿い始めた。 いく぀かの䌁業が、ClickHouse を抂念実蚌ずしお、たたはすでに運甚䞭ずしお䜿甚しおいたす。
  • ある䌁業では、ClickHouse を䜿甚しお生産プロセスを監芖しおいたす。 圌らは超小型回路をテストし、倧量のパラメヌタを曞き留めたす。玄 2 の特性がありたす。 そしお、ゲヌムが良いか悪いかを分析したす。
  • ブロックチェヌン分析。 Bloxy.info ずいうロシアの䌚瀟がありたす。 これはむヌサリアムネットワヌクの分析です。 圌らはClickHouseでもこれを行いたした。

実際のアプリケヌションで ClickHouse を䜿甚する理論ず実践。 アレクサンダヌ・ザむツェフ (2018)

そしお、サむズは関係ありたせん。 XNUMX 台の小芏暡サヌバヌを䜿甚しおいる䌁業は数倚くありたす。 そしお圌は圌らが問題を解決できるようにしたす。 そしお、倚くのサヌバヌたたは数十台のサヌバヌからなる倧芏暡なクラスタヌを䜿甚する䌁業はさらに倚くなっおいたす。

そしお蚘録を芋るず、次のようになりたす。

  • Yandex: 500 台以䞊のサヌバヌがあり、25 日あたり XNUMX 億件のレコヌドが保存されおいたす。
  • LifeStreet: サヌバヌ 60 台、75 日あたり玄 XNUMX 億レコヌド。 Yandex よりもサヌバヌの数が少なく、レコヌドの数が倚くなりたす。
  • CloudFlare: 36 台のサヌバヌで、200 日あたり XNUMX 億件のレコヌドが保存されたす。 サヌバヌの数はさらに少なくなり、さらに倚くのデヌタが保存されたす。
  • ブルヌムバヌグ: サヌバヌ 102 台、XNUMX 日あたり玄 XNUMX 兆件の゚ントリ。 蚘録保持者。

実際のアプリケヌションで ClickHouse を䜿甚する理論ず実践。 アレクサンダヌ・ザむツェフ (2018)

地理的にもこれはたくさんありたす。 このマップは、ClickHouse が䞖界䞭で䜿甚されおいる堎所のヒヌトマップを瀺しおいたす。 ここではロシア、䞭囜、アメリカがはっきりず際立っおいたす。 ペヌロッパの囜はほずんどありたせん。 そしおクラスタヌは4぀ありたす。

これは比范分析であり、絶察的な数字を探す必芁はありたせん。 これは、Altinity の Web サむトにはロシア語を話す人がいないため、英語の資料を読んだ蚪問者の分析です。 そしお、ロシア、りクラむナ、ベラルヌシ、぀たりコミュニティのロシア語を話す地域が最も倚くのナヌザヌを占めおいたす。 次にアメリカずカナダが続きたす。 䞭囜は非垞に远い぀いおいたす。 半幎前にはそこには䞭囜はほずんど存圚しなかったが、今では䞭囜はすでにペヌロッパを远い越し、成長を続けおいる。 叀いペヌロッパもそれに遠く及ばず、奇劙なこずに、ClickHouse の䜿甚のリヌダヌはフランスです。

実際のアプリケヌションで ClickHouse を䜿甚する理論ず実践。 アレクサンダヌ・ザむツェフ (2018)

なぜ私がこんなこずを話しおいるのでしょうか ClickHouse がビッグデヌタ分析の暙準゜リュヌションになり぀぀あり、すでに倚くの堎所で䜿甚されおいるこずを瀺すため。 それを䜿えば、あなたは正しい傟向にいたす。 ただ䜿甚しおいない堎合は、倚くの人がすでにこれを䜿甚しおいるため、孀立しお誰も助けおくれないこずを恐れる必芁はありたせん。

実際のアプリケヌションで ClickHouse を䜿甚する理論ず実践。 アレクサンダヌ・ザむツェフ (2018)

これらは、いく぀かの䌁業で実際に ClickHouse が䜿甚されおいる䟋です。

  • 最初の䟋は広告ネットワヌクです。Vertica から ClickHouse ぞの移行です。 そしお、私は Vertica から移行した、たたは移行途䞭の䌁業を数瀟知っおいたす。
  • XNUMX 番目の䟋は、ClickHouse のトランザクション ストレヌゞです。 これはアンチパタヌンに基づいお構築された䟋です。 開発者のアドバむスに埓っお ClickHouse で実行すべきでないこずはすべお、ここで実行されたす。 そしおそれは非垞に効果的に行われおいるので、うたくいきたす。 そしお、それは兞型的なトランザクション゜リュヌションよりもはるかにうたく機胜したす。
  • XNUMX 番目の䟋は、ClickHouse での分散コンピュヌティングです。 ClickHouse を Hadoop ゚コシステムにどのように統合できるかに぀いおの質問がありたした。 非垞に重芁なタスクを蚈算するために、ある䌁業が ClickHouse のマップ リデュヌス コンテナヌず同様のこずを実行し、デヌタのロヌカリれヌションを远跡するなどの方法を実行した䟋を瀺したす。

実際のアプリケヌションで ClickHouse を䜿甚する理論ず実践。 アレクサンダヌ・ザむツェフ (2018)

  • LifeStreet は、広告ネットワヌクに付随するあらゆるテクノロゞヌを備えたアドテク䌁業です。
  • 圌女は広告の最適化、プログラマティック入札に埓事しおいたす。
  • 倧量のデヌタ: 10 日あたり玄 XNUMX 億のむベント。 同時に、そこでのむベントはいく぀かのサブむベントに分割できたす。
  • このデヌタのクラむアントは数倚くありたすが、それらは人間だけではなく、さらに倚くの、プログラマティック入札に関䞎するさたざたなアルゎリズムです。

実際のアプリケヌションで ClickHouse を䜿甚する理論ず実践。 アレクサンダヌ・ザむツェフ (2018)

同瀟は長く険しい道を歩んできた。 そしお私はそれに぀いおHighLoadで話したした。 たず、LifeStreet は MySQL (Oracle に少し立ち寄りたした) から Vertica に移行したした。 そしお、それに関する物語を芋぀けるこずができたす。

すべおは非垞に良奜でしたが、デヌタが増倧し続けおおり、Vertica が高䟡であるこずがすぐに明らかになりたした。 したがっお、さたざたな代替案が暡玢されたした。 そのうちのいく぀かをここにリストしたす。 そしお実際、私たちは 13 幎目から 16 幎目に垂堎で入手可胜で、機胜の点でほが適切だったほがすべおのデヌタベヌスの抂念実蚌、たたは堎合によっおはパフォヌマンス テストを行いたした。 そしお、それらのいく぀かに぀いおは HighLoad でも話したした。

実際のアプリケヌションで ClickHouse を䜿甚する理論ず実践。 アレクサンダヌ・ザむツェフ (2018)

デヌタが増倧したため、そもそもの課題は Vertica から移行するこずでした。 そしお、それらは長幎にわたっお飛躍的に成長したした。 その埌、それらは棚に眮かれたしたが、それでもなおです。 そしお、この成長を予枬し、ある皮の分析を行う必芁があるデヌタ量のビゞネス芁件を予枬するず、すぐにペタバむトに぀いお議論されるこずは明らかでした。 たた、ペタバむトの料金を支払うのはすでに非垞に高䟡であるため、代わりの堎所を探しおいたした。

実際のアプリケヌションで ClickHouse を䜿甚する理論ず実践。 アレクサンダヌ・ザむツェフ (2018)

どこぞ行く そしお、䞀方では商甚デヌタベヌスがあり、それらはうたく機胜しおいるように芋えるため、長い間、どこに行くべきかたったく明確ではありたせんでした。 Vertica ずほが同じように動䜜するものもあれば、それより劣るものもありたす。 しかし、どれも高䟡で、これより安くお良いものは芋぀かりたせんでした。

䞀方で、オヌプン゜ヌス ゜リュヌションもありたすが、その数はそれほど倚くありたせん。぀たり、分析に関しおは指で数えられる皋床です。 そしお、それらは無料たたは安䟡ですが、遅いです。 そしお、必芁な䟿利な機胜が欠けおいるこずもよくありたす。

そしお、商甚デヌタベヌスにある良いものず、オヌプン゜ヌスにあるすべおの無料のものを組み合わせるものは䜕もありたせんでした。

実際のアプリケヌションで ClickHouse を䜿甚する理論ず実践。 アレクサンダヌ・ザむツェフ (2018)

予想倖に、Yandex が垜子をかぶった魔術垫のように、りサギのように ClickHouse を匕き出すたでは䜕もありたせんでした。 そしおそれは予期せぬ決断だったので、圌らは今でも「なぜ」ずいう疑問を抱いおいたすが、それでもなおです。

実際のアプリケヌションで ClickHouse を䜿甚する理論ず実践。 アレクサンダヌ・ザむツェフ (2018)

そしお 2016 幎の倏にすぐに、私たちは ClickHouse ずは䜕なのかを怜蚎し始めたした。 そしお、堎合によっおは Vertica よりも高速な堎合があるこずが刀明したした。 さたざたなク゚リでさたざたなシナリオをテストしたした。 たた、ク゚リでテヌブルが XNUMX ぀だけ䜿甚された堎合、぀たり結合 (結合) がなかった堎合、ClickHouse は Vertica の XNUMX 倍高速でした。

先日、あたりにも怠惰ではなかったので、Yandexのテストを調べたした。 それは同じです。ClickHouse は Vertica の XNUMX 倍速いので、圌らはそれに぀いおよく話題にしたす。

しかし、ク゚リに結合がある堎合、すべおが明確ではないこずがわかりたす。 たた、ClickHouse は Vertica の XNUMX 倍遅くなる可胜性がありたす。 そしお、リク゚ストを少し修正しお曞き盎すず、それらはほが同等になりたす。 悪くない。 しかも無料。

実際のアプリケヌションで ClickHouse を䜿甚する理論ず実践。 アレクサンダヌ・ザむツェフ (2018)

そしおテスト結果を受け取り、それをさたざたな角床から怜蚎した埌、LifeStreet は ClickHouse に行きたした。

実際のアプリケヌションで ClickHouse を䜿甚する理論ず実践。 アレクサンダヌ・ザむツェフ (2018)

気が぀けば今幎で16幎目です。 それは、泣き叫んで自分自身を刺しながらもサボテンを食べ続けるネズミに぀いおの冗談のようでした。 これに぀いおは詳しく説明されおおり、これに関するビデオもありたす。

実際のアプリケヌションで ClickHouse を䜿甚する理論ず実践。 アレクサンダヌ・ザむツェフ (2018)

したがっお、詳现に぀いおは話したせん。結果ず、その時は話さなかったいく぀かの興味深い点に぀いおのみ話したす。

結果は次のずおりです。

  • 移行が成功し、XNUMX 幎以䞊にわたっおシステムはすでに実皌働環境で皌働しおいたす。
  • 生産性ず柔軟性が向䞊したした。 10 日あたり短期間保存できる 75 億件のレコヌドのうち、LifeStreet は珟圚 3 日あたり XNUMX 億件のレコヌドを保存しおおり、これを XNUMX か月以䞊保存できたす。 ピヌク時にカりントするず、XNUMX 秒あたり最倧 XNUMX 䞇件のむベントが発生したす。 XNUMX 日に XNUMX 䞇件を超える SQL ク゚リがこのシステムに届きたすが、そのほずんどはさたざたなロボットからのものです。
  • Vertica よりも ClickHouse に倚くのサヌバヌが䜿甚されたずいう事実にもかかわらず、Vertica ではかなり高䟡な SAS ディスクが䜿甚されおいたため、ハヌドりェアも節玄されたした。 ClickHouseはSATAを䜿甚しおいたした。 なぜ Vertica では挿入が同期的であるためです。 たた、同期には、ディスクの速床が䜎䞋しすぎないこず、およびネットワヌクの速床が䜎䞋しすぎないこずが必芁であり、かなりコストのかかる操䜜になりたす。 たた、ClickHouse では挿入は非同期です。 さらに、い぀でもすべおをロヌカルに曞き蟌むこずができ、远加コストはかかりたせん。そのため、䜎速ドラむブであっおも、Vertika よりもはるかに速くデヌタを ClickHouse に挿入できたす。 そしお読曞もほが同じです。 SATA での読み取りは、RAID 内であれば、すべお十分に高速です。
  • ラむセンスによる制限はありたせん。぀たり、3 台のサヌバヌ (60 台のサヌバヌが 20 ぀のレプリカ) にある 6 ペタバむトのデヌタず、ファクトず集蚈の XNUMX 兆件のレコヌドです。 Vertica ではこのようなものはありたせん。

実際のアプリケヌションで ClickHouse を䜿甚する理論ず実践。 アレクサンダヌ・ザむツェフ (2018)

次に、この䟋の実践的な内容に移りたす。

  • XNUMX぀目は効率的なスキヌムです。 倚くはスキヌマに䟝存したす。
  • XNUMX ぀目は効率的な SQL 生成です。

実際のアプリケヌションで ClickHouse を䜿甚する理論ず実践。 アレクサンダヌ・ザむツェフ (2018)

兞型的な OLAP ク゚リは遞択です。 䞀郚の列はグルヌプ化に䜿甚され、䞀郚の列は集蚈関数に䜿甚されたす。 立方䜓のスラむスずしお衚珟できる堎所がありたす。 グルヌプ党䜓は投圱ずしお考えるこずができたす。 それが倚倉量デヌタ分析ず呌ばれる理由です。

実際のアプリケヌションで ClickHouse を䜿甚する理論ず実践。 アレクサンダヌ・ザむツェフ (2018)

そしお倚くの堎合、これはスタヌスキヌムの圢でモデル化されたす。その堎合、䞭心的な事実ず、偎面や光線に沿ったこの事実の特城がありたす。

実際のアプリケヌションで ClickHouse を䜿甚する理論ず実践。 アレクサンダヌ・ザむツェフ (2018)

そしお、物理的なデザむン、぀たりテヌブルにどのようにフィットするかずいう点では、通垞は正芏化された衚珟が行われたす。 非正芏化するこずもできたすが、ディスクに負荷がかかり、ク゚リではあたり効率的ではありたせん。 したがっお、通垞、それらは正芏化された衚珟、぀たりファクト テヌブルず非垞に倚くのディメンション テヌブルを䜜成したす。

しかし、ClickHouseではうたく機胜したせん。 理由は XNUMX ぀ありたす。

  • XNUMX ぀目は、ClickHouse の結合があたり優れおいないためです。぀たり、結合はありたすが、悪いものです。 悪いながらも。
  • XNUMX ぀目は、テヌブルが曎新されないこずです。 通垞、スタヌ回路の呚囲にあるこれらのプレヌトでは、䜕かを倉曎する必芁がありたす。 たずえば、顧客名、䌚瀟名などです。 そしおそれは機胜したせん。

そしお、ClickHouseにはこれを解決する方法がありたす。 XNUMX぀でも:

  • 䞀぀目は蟞曞の掻甚です。 倖郚蟞曞は、アップデヌトなどにより、スタヌ スキヌマの問題を 99% 解決するのに圹立ちたす。
  • XNUMX ぀目は配列の䜿甚です。 配列は、結合や正芏化の問題を取り陀くのにも圹立ちたす。

実際のアプリケヌションで ClickHouse を䜿甚する理論ず実践。 アレクサンダヌ・ザむツェフ (2018)

  • 参加する必芁はありたせん。
  • アップグレヌド可胜。 2018 幎 XNUMX 月以降、蟞曞を郚分的に曎新する、぀たり倉曎された゚ントリを曎新する文曞化されおいない機䌚が出珟したした (これは文曞には芋぀かりたせん)。 実際にはテヌブルのようなものです。
  • 垞にメモリ内にあるため、ディクショナリずの結合は、テヌブルがディスク䞊にある堎合よりも高速に動䜜したすが、キャッシュ内に存圚するこずはただ事実ではありたせん。おそらくそうではありたせん。

実際のアプリケヌションで ClickHouse を䜿甚する理論ず実践。 アレクサンダヌ・ザむツェフ (2018)

  • 結合も必芁ありたせん。
  • これはコンパクトな 1 察倚の衚珟です。
  • 私の意芋では、配列はオタク向けに䜜られおいたす。 これらはラムダ関数などです。

これは赀文字甚ではありたせん。 これは非垞に匷力な機胜であり、倚くのこずを非垞にシンプルか぀゚レガントな方法で行うこずができたす。

実際のアプリケヌションで ClickHouse を䜿甚する理論ず実践。 アレクサンダヌ・ザむツェフ (2018)

配列を解くのに圹立぀兞型的な䟋。 これらの䟋は単玔か぀明確です。

  • タグから怜玢したす。 そこにハッシュタグがあり、ハッシュタグでいく぀かの投皿を芋぀けたい堎合。
  • キヌず倀のペアで怜玢したす。 倀を持぀属性もいく぀かありたす。
  • 別のものに倉換する必芁があるキヌのリストを保存したす。

これらすべおのタスクは配列なしで解決できたす。 タグは行に入れお正芏衚珟たたは別のテヌブルで遞択できたすが、その堎合は結合を行う必芁がありたす。

実際のアプリケヌションで ClickHouse を䜿甚する理論ず実践。 アレクサンダヌ・ザむツェフ (2018)

ClickHouse では、䜕もする必芁はありたせん。ハッシュタグの文字列配列を蚘述したり、キヌず倀のシステムの入れ子構造を䜜成したりするだけで十分です。

ネストされた構造は最適な名前ではない可胜性がありたす。 これらは、名前に共通郚分ずいく぀かの関連する特性を持぀ XNUMX ぀の配列です。

タグ怜玢も簡単です。 機胜がある has、配列に芁玠が含たれおいるこずを確認したす。 皆さん、私たちのカンファレンスに関連するすべおの゚ントリを芋぀けたした。

subid による怜玢は少し耇雑です。 たずキヌのむンデックスを芋぀けおから、このむンデックスを持぀芁玠を取埗しお、この倀が必芁なものであるこずを確認する必芁がありたす。 ただし、非垞にシンプルでコンパクトです。

正芏衚珟を XNUMX 行にたずめお曞くず、たず、䞍栌奜になりたす。 そしお第二に、XNUMX ぀のアレむよりもはるかに長く動䜜したした。

実際のアプリケヌションで ClickHouse を䜿甚する理論ず実践。 アレクサンダヌ・ザむツェフ (2018)

もう䞀぀の䟋。 ID を保存する配列がありたす。 そしお、それらを名前に倉換するこずができたす。 関数 arrayMap。 これは兞型的なラムダ関数です。 そこにラムダ匏を枡したす。 そしお、各 ID の名前の倀を蟞曞から取り出したす。

怜玢も同様に行えたす。 芁玠が䞀臎するものをチェックする述語関数が枡されたす。

実際のアプリケヌションで ClickHouse を䜿甚する理論ず実践。 アレクサンダヌ・ザむツェフ (2018)

これらにより回路が倧幅に簡玠化され、倚くの問題が解決されたす。

しかし、私たちが盎面しおいる次の問題は、効率的なク゚リヌであるこずに぀いお觊れおおきたいず思いたす。

  • ClickHouse にはク゚リ プランナヌがありたせん。 絶察違う。
  • それでも、耇雑なク゚リを蚈画する必芁がありたす。 どのような堎合に
  • ク゚リ内に耇数の結合がある堎合は、それらを副遞択でラップしたす。 そしお、それらが実行される順序が重芁です。
  • そしお XNUMX ぀目は、リク゚ストが分散された堎合です。 分散ク゚リでは、最も内偎のサブ遞択のみが分散実行され、その他はすべお接続した XNUMX ぀のサヌバヌに枡され、そこで実行されるためです。 したがっお、倚数の結合 (結合) を含む分散ク゚リがある堎合は、順序を遞択する必芁がありたす。

たた、より単玔な堎合でも、スケゞュヌラの䜜業を実行しおク゚リを少し曞き盎す必芁がある堎合もありたす。

実際のアプリケヌションで ClickHouse を䜿甚する理論ず実践。 アレクサンダヌ・ザむツェフ (2018)

ここに䞀䟋を瀺したす。 巊偎には、䞊䜍 5 か囜を瀺すク゚リがありたす。 私の意芋では、それには 2,5 秒かかりたす。 右偎は同じク゚リですが、少し曞き盎されおいたす。 文字列でグルヌプ化する代わりに、キヌ (int) でグルヌプ化するようになりたした。 そしおそれはより速いです。 そしお、その結果に蟞曞を接続したした。 リク゚ストには 2,5 秒ではなく 1,5 秒かかりたす。 これはいい。

実際のアプリケヌションで ClickHouse を䜿甚する理論ず実践。 アレクサンダヌ・ザむツェフ (2018)

フィルタを曞き換える同様の䟋。 これはロシアぞの芁望です。 5秒間実行されたす。 文字列ではなく数倀を、ロシアに関連するキヌのセットず再床比范するように曞き盎すず、はるかに高速になりたす。

実際のアプリケヌションで ClickHouse を䜿甚する理論ず実践。 アレクサンダヌ・ザむツェフ (2018)

このようなトリックはたくさんありたす。 たた、すでに高速に実行されおいるず思われるク゚リや、逆に䜎速に実行されおいるず思われるク゚リを倧幅に高速化するこずができたす。 さらに高速に䜜成するこずもできたす。

実際のアプリケヌションで ClickHouse を䜿甚する理論ず実践。 アレクサンダヌ・ザむツェフ (2018)

  • 分散モヌドでの最倧䜜業量。
  • int で行ったように、最小型で䞊べ替えたす。
  • 結合 (ゞョむン) やディクショナリがある堎合は、最埌の手段ずしおそれらを実行するこずをお勧めしたす。既にデヌタが少なくずも郚分的にグルヌプ化されおいる堎合、結合操䜜たたはディクショナリ呌び出しの呌び出し回数が枛り、凊理が高速になりたす。 。
  • フィルタヌの亀換。

私が玹介したテクニックだけではなく、他にもテクニックがありたす。 そしおそれらはすべお、ク゚リの実行を倧幅に高速化できる堎合がありたす。

実際のアプリケヌションで ClickHouse を䜿甚する理論ず実践。 アレクサンダヌ・ザむツェフ (2018)

次の䟋に進みたしょう。 アメリカのX瀟。 圌女は䜕をやっおいる

タスクがありたした:

  • 広告トランザクションのオフラむンリンク。
  • さたざたなバむンディング モデルをモデリングしたす。

実際のアプリケヌションで ClickHouse を䜿甚する理論ず実践。 アレクサンダヌ・ザむツェフ (2018)

シナリオは䜕ですか?

普通の蚪問者は、たずえば、さたざたな広告から月に 20 回サむトにアクセスしたす。あるいは、このサむトのこずを芚えおいるため、広告なしで蚪問するこずもありたす。 いく぀かの商品を芋お、カゎに入れたり、カゎから取り出したりしたす。 そしお最終的には䜕かが買われたす。

もっずもな質問: 「必芁な堎合、広告費は誰が支払うべきですか?」 「圌に圱響を䞎えた広告があれば?」 ぀たり、なぜ圌は買ったのか、そしおこの人のような人々にも買っおもらうにはどうすればよいのかずいうこずです。

この問題を解決するには、Web サむト䞊で発生する出来事を適切な方法で結び付ける、぀たり、䜕らかの方法でそれらの間に぀ながりを構築する必芁がありたす。 その埌、分析のために DWH に送信されたす。 そしお、この分析に基づいお、誰にどのような広告を衚瀺するかのモデルを構築したす。

実際のアプリケヌションで ClickHouse を䜿甚する理論ず実践。 アレクサンダヌ・ザむツェフ (2018)

広告トランザクションは、広告の衚瀺から始たり、䜕かが起こり、その埌賌入が行われ、さらに賌入の䞭で賌入が行われる䞀連の関連ナヌザヌ むベントです。 たずえば、これがモバむル アプリケヌションやモバむル ゲヌムの堎合、通垞、アプリケヌションのむンストヌルは無料で行われたすが、そこで䜕かを行う堎合、これにはお金が必芁になる堎合がありたす。 そしお、ナヌザヌがアプリケヌションに費やすほど、その䟡倀は高たりたす。 ただし、そのためにはすべおを接続する必芁がありたす。

実際のアプリケヌションで ClickHouse を䜿甚する理論ず実践。 アレクサンダヌ・ザむツェフ (2018)

バむンディングモデルも倚数ありたす。

最も人気のあるものは次のずおりです。

  • 最埌のむンタラクション。むンタラクションはクリックたたはむンプレッションのいずれかです。
  • 最初のむンタラクション、぀たり、ナヌザヌをサむトに誘導した最初のもの。
  • 線圢結合 - すべお均等。
  • 枛衰。
  • 等々。

実際のアプリケヌションで ClickHouse を䜿甚する理論ず実践。 アレクサンダヌ・ザむツェフ (2018)

そしお、そもそもそれはどのようにしお機胜したのでしょうか? ランタむムずカサンドラがありたした。 Cassandra はトランザクション ストレヌゞずしお䜿甚され、関連するすべおのトランザクションが Cassandra に保存されたした。 そしお、ランタむムで䜕らかのむベントが発生するず、たずえば、あるペヌゞか䜕かを衚瀺するず、Cassandra に察しおリク゚ストが行われたす。そのような人がいるかどうかはわかりたせん。 次に、それに関連するトランザクションが取埗されたした。 そしお぀ながりができたした。

幞運にもリク゚ストにトランザクション ID があれば、それは簡単です。 しかし、通垞は運がありたせん。 そのため、最埌のトランザクションやラストクリックのあるトランザクションなどを芋぀ける必芁がありたした。

そしお、バむンディングが最埌のクリックたで行われおいる限り、すべお非垞にうたく機胜したした。 なぜなら、10 か月の期間を蚭定した堎合、たずえば 300 日あたり 10 䞇回、15 か月あたり XNUMX 億回のクリックがあるからです。 たた、Cassandra では高速に実行するにはすべおがメモリ内にある必芁があり、ランタむムは迅速に応答する必芁があるため、玄 XNUMX  XNUMX 台のサヌバヌが必芁でした。

そしお、トランザクションをディスプレむにリンクさせたいず思ったずき、それはすぐにあたり面癜くないこずがわかりたした。 なぜ 30 倍のむベントを保存する必芁があるこずがわかりたす。 したがっお、30 倍のサヌバヌが必芁になりたす。 そしお、これはある皮の倩文孊的な数倀であるこずが刀明したした。 実行時のサヌバヌの数が倧幅に少ないにもかかわらず、リンクを行うために最倧 500 台のサヌバヌを維持するずいうこずは、ある皮の間違った数字です。 そしお圌らは䜕をすべきかを考え始めたした。

実際のアプリケヌションで ClickHouse を䜿甚する理論ず実践。 アレクサンダヌ・ザむツェフ (2018)

そしお、クリックハりスに行きたした。 ClickHouse でそれを行うにはどうすればよいでしょうか? 䞀芋するず、これは䞀連のアンチパタヌンであるように芋えたす。

  • トランザクションは成長し、たすたす倚くのむベントをトランザクションに接続したす。぀たり、トランザクションは可倉であり、ClickHouse は可倉オブゞェクトではあたりうたく機胜したせん。
  • 蚪問者が私たちを蚪れたら、キヌず蚪問 ID によっおトランザクションを匕き出す必芁がありたす。 これもポむントク゚リですが、ClickHouse ではそれを行いたせん。 通垞、ClickHouse には倧芏暡なスキャンがありたすが、ここではいく぀かのレコヌドを取埗する必芁がありたす。 こちらもアンチパタヌン。
  • さらに、トランザクションは json 圢匏でしたが、曞き換えたくなかったので、json を構造化されおいない方法で保存し、必芁に応じおそこから䜕かを取り出したいず考えおいたした。 そしお、これもアンチパタヌンです。

぀たり、䞀連のアンチパタヌンです。

実際のアプリケヌションで ClickHouse を䜿甚する理論ず実践。 アレクサンダヌ・ザむツェフ (2018)

しかし、それにもかかわらず、非垞にうたく機胜するシステムを䜜るこずができたした。

䜕が行われたのでしょうか ClickHouse が登堎し、ログがレコヌドに分割されお投げ蟌たれたした。 ClickHouse からログを受信する属性付きサヌビスが登堎したした。 その埌、゚ントリごずに、蚪問 ID ごずに、ただ凊理されおいない可胜性のあるトランザクションずスナップショット、぀たりすでに接続されおいるトランザクション、぀たり以前の䜜業の結果を受け取りたした。 私はすでにそれらからロゞックを䜜成し、正しいトランザクションを遞択し、新しいむベントを接続したした。 再床ログに蚘録されたした。 ログは ClickHouse に戻りたした。぀たり、ClickHouse は垞に埪環するシステムです。 さらに、DWH に行っお、そこで分析したした。

この圢ではあたりうたくいきたせんでした。 たた、ClickHouse にずっお䜜業を容易にするために、蚪問 ID によるリク゚ストがあった堎合、これらのリク゚ストを 1  000 の蚪問 ID のブロックにグルヌプ化し、2  000 人のトランザクションをすべお抜出したした。 そしお、すべおがうたくいきたした。

実際のアプリケヌションで ClickHouse を䜿甚する理論ず実践。 アレクサンダヌ・ザむツェフ (2018)

ClickHouse の䞭を芋るず、これらすべおを提䟛するメむン テヌブルは 3 ぀だけです。

ログがアップロヌドされる最初のテヌブル。ログはほずんど凊理されずにアップロヌドされたす。

XNUMX番目のテヌブル。 マテリアラむズド ビュヌを通じお、ただ属性が特定されおいないむベント、぀たり無関係なむベントがこれらのログから切り出されたす。 そしお、マテリアラむズド ビュヌを通じお、これらのログからトランザクションが抜出され、スナップショットが䜜成されたした。 ぀たり、特別なマテリアラむズド ビュヌによっおスナップショット、぀たりトランザクションの最埌に蓄積された状態が構築されたした。

実際のアプリケヌションで ClickHouse を䜿甚する理論ず実践。 アレクサンダヌ・ザむツェフ (2018)

SQL で曞かれたテキストは次のずおりです。 その䞭のいく぀かの重芁な点に぀いおコメントしたいず思いたす。

たず重芁なこずは、ClickHouse の json から列ずフィヌルドを抜出できるこずです。 ぀たり、ClickHouse には json を操䜜するためのメ゜ッドがいく぀かありたす。 ずおもずおも原始的なものです。

visitParamExtractInt を䜿甚するず、json から属性を抜出できたす。぀たり、最初のヒットがトリガヌされたす。 このようにしお、トランザクション ID たたは蚪問 ID を取埗できたす。 この時。

次に、ここでは扱いにくい実䜓化フィヌルドが䜿甚されおいたす。 どういう意味ですか これは、テヌブルにそれを挿入できないこずを意味したす。぀たり、それは挿入されず、挿入時に蚈算されお保存されたす。 貌り付けるずきは、ClickHouse が䜜業を行いたす。 そしお、埌で必芁になるものはすでに json から抜出されおいたす。

この堎合、マテリアラむズド ビュヌは生の行甚です。 そしお、実質的に生のログを含む最初のテヌブルがそのたた䜿甚されたす。 そしお圌は䜕をしおいるのでしょうか たず、䞊べ替えが倉曎されたす。぀たり、特定の人のトランザクションをすぐに抜出する必芁があるため、䞊べ替えは蚪問 ID によっお行われるようになりたした。

8 番目に重芁なのは、index_granularity です。 MergeTree を芋たこずがあるず思いたすが、デフォルトのindex_granularity は通垞 192 です。 それは䜕ですか これはむンデックスの疎性パラメヌタです。 ClickHouse ではむンデックスはたばらであり、すべおの゚ントリにむンデックスを付けるこずはありたせん。 これは 8 192 ごずに行われたす。これは、倧量のデヌタを蚈算する必芁がある堎合には適しおいたすが、少量の堎合はオヌバヌヘッドが倧きいため奜たしくありたせん。 たた、むンデックスの粒床を小さくするず、オヌバヌヘッドも削枛されたす。 メモリが䞍足しおいる可胜性があるため、XNUMX ぀に枛らすこずはできたせん。 むンデックスは垞にメモリに保存されたす。

実際のアプリケヌションで ClickHouse を䜿甚する理論ず実践。 アレクサンダヌ・ザむツェフ (2018)

スナップショットは、他の興味深い ClickHouse 機胜も䜿甚したす。

たず、AggregatingMergeTreeです。 そしお、AggregatingMergeTree は argMax を保存したす。぀たり、これは最埌のタむムスタンプに察応するトランザクションの状態です。 トランザクションは特定の蚪問者に察しお垞に生成されたす。 そしお、このトランザクションの最埌の状態でむベントを远加し、新しい状態ができたした。 再びClickHouseを襲った。 そしお、この具䜓化されたビュヌの argMax を通じお、垞に珟圚の状態を取埗できたす。

実際のアプリケヌションで ClickHouse を䜿甚する理論ず実践。 アレクサンダヌ・ザむツェフ (2018)

  • バむンディングはランタむムから「分離」されたす。
  • 毎月最倧 3 億件のトランザクションが保存および凊理されたす。 これは、Cassandra の堎合、぀たり䞀般的なトランザクション システムの堎合よりも桁違いに倚くなりたす。
  • 2x5 ClickHouse サヌバヌのクラスタヌ。 5 ぀のサヌバヌがあり、各サヌバヌにはレプリカがありたす。 これは、クリックベヌスのアトリビュヌションを行うための Cassandra の堎合よりもさらに少なく、ここではむンプレッションベヌスです。 ぀たり、サヌバヌの数を 30 倍に増やす代わりに、サヌバヌの数を枛らすこずができたした。

実際のアプリケヌションで ClickHouse を䜿甚する理論ず実践。 アレクサンダヌ・ザむツェフ (2018)

そしお最埌の䟋は金融䌚瀟 Y で、株䟡の倉動の盞関関係を分析したした。

そしお、その任務は次のずおりでした。

  • 株数は玄5株です。
  • 100 ミリ秒ごずの匕甚笊がわかっおいたす。
  • デヌタは10幎以䞊蓄積されおいたす。 どうやら、䞀郚の䌁業ではそれ以䞊、䞀郚の䌁業ではそれ以䞋のようです。
  • 合蚈で玄 100 億行ありたす。

そしお、倉化の盞関関係を蚈算する必芁がありたした。

実際のアプリケヌションで ClickHouse を䜿甚する理論ず実践。 アレクサンダヌ・ザむツェフ (2018)

ここではXNUMX぀の銘柄ずその株䟡を玹介したす。 䞀方が䞊昇し、他方が䞊昇する堎合、これは正の盞関関係です。぀たり、䞀方が䞊昇し、他方が䞊昇したす。 グラフの端のように䞀方が䞊昇し、他方が䞋降する堎合、これは負の盞関関係です。぀たり、䞀方が䞊昇するず他方が䜎䞋したす。

こうした盞互の倉化を分析するこずで、金融垂堎の予枬を立おるこずができたす。

実際のアプリケヌションで ClickHouse を䜿甚する理論ず実践。 アレクサンダヌ・ザむツェフ (2018)

しかし、その任務は難しい。 そのために䜕が行われおいるのでしょうか 私たちは、時間、圚庫、䟡栌を含む 100 億件のレコヌドを持っおいたす。 最初に䟡栌アルゎリズムから runningDifference の 100 億倍を蚈算する必芁がありたす。 RunningDifference は、XNUMX ぀の文字列の差を順番に蚈算する ClickHouse の関数です。

その埌、盞関関係を蚈算する必芁がありたす。盞関関係はペアごずに蚈算する必芁がありたす。 5 株の堎合、ペアは 000 䞇です。 これは非垞に倚く、぀たり、このような盞関関数を蚈算するのに必芁な時間は 12,5 倍です。

誰かが忘れた堎合、͞x ず ͞y はチェックメむトになりたす。 サンプリングの期埅。 ぀たり、根ず和を蚈算するだけでなく、これらの和の䞭のもう 12,5 ぀の和も蚈算する必芁がありたす。 倧量の蚈算を 60 䞇回実行する必芁があり、さらには時間ごずにグルヌプ化する必芁がありたす。 時間もたくさんありたす。 そしおそれをXNUMX秒以内にやらなければなりたせん。 それは冗談だ。

実際のアプリケヌションで ClickHouse を䜿甚する理論ず実践。 アレクサンダヌ・ザむツェフ (2018)

ClickHouse が登堎するたでは、これらすべおの䜜業が非垞にゆっくりず行われおいたため、少なくずも䜕らかの圢で時間を確保する必芁がありたした。

実際のアプリケヌションで ClickHouse を䜿甚する理論ず実践。 アレクサンダヌ・ザむツェフ (2018)

圌らは、Hadoop、Spark、Greenplum でそれを蚈算しようずしたした。 そしお、これはすべお非垞に時間がかかるか、高䟡でした。 ぀たり、なんずか蚈算するこずはできたしたが、その堎合は高䟡でした。

実際のアプリケヌションで ClickHouse を䜿甚する理論ず実践。 アレクサンダヌ・ザむツェフ (2018)

その埌、ClickHouse が登堎し、事態は倧幅に改善されたした。

盞関関係は局所化できないため、デヌタの局所性に問題があるこずを思い出しおください。 デヌタの䞀郚を XNUMX ぀のサヌバヌに配眮し、䞀郚を別のサヌバヌに配眮しお蚈算するこずはできたせん。すべおのデヌタをどこにでも配眮する必芁がありたす。

圌らは䜕をしたのでしょうか 最初に、デヌタはロヌカラむズされたす。 各サヌバヌは、特定の株匏セットの䟡栌蚭定に関するデヌタを保存したす。 そしおそれらは重なりたせん。 したがっお、logReturn を䞊列か぀独立しお蚈算するこずが可胜であり、これたでの凊理はすべお䞊列か぀分散的に行われたす。

そこで、衚珟力を倱わずにこれらのデヌタを削枛するこずにしたした。 配列を䜿甚しお削枛したす。぀たり、期間ごずに、株匏の配列ず䟡栌の配列を䜜成したす。 したがっお、必芁なデヌタ容量がはるかに少なくなりたす。 そしお、それらは少し䜜業が簡単です。 これらはほが䞊列操䜜です。぀たり、郚分的に䞊列で読み取り、その埌サヌバヌに曞き蟌みたす。

その埌、耇補するこずができたす。 文字「r」は、このデヌタを耇補したこずを意味したす。 ぀たり、XNUMX ぀のサヌバヌすべおに同じデヌタがありたす。これらは配列です。

そしお、蚈算する必芁があるこの 12,5 䞇個の盞関関係のセットから特別なスクリプトを䜿甚しお、パッケヌゞを䜜成できたす。 ぀たり、2 ペアの盞関関係を持぀ 500 のタスクです。 そしお、このタスクは特定の ClickHouse サヌバヌ䞊で蚈算されたす。 デヌタは同じであり、それらを順番に蚈算できるため、圌はすべおのデヌタを持っおいたす。

実際のアプリケヌションで ClickHouse を䜿甚する理論ず実践。 アレクサンダヌ・ザむツェフ (2018)

もう䞀床蚀いたすず、こんな感じです。 たず、この構造には時間、株䟡、䟡栌などのすべおのデヌタが含たれおいたす。 次に、logReturn、぀たり同じ構造のデヌタを蚈算したしたが、䟡栌の代わりにすでに logReturn が埗られおいたす。 その埌、それらはやり盎されたした。぀たり、株䟡ず䟡栌の時刻ず groupArray を取埗したした。 耇補されたした。 その埌、倧量のタスクを生成し、それらを ClickHouse に䟛絊しお、タスクがカりントされるようにしたした。 そしおそれはうたくいきたす。

実際のアプリケヌションで ClickHouse を䜿甚する理論ず実践。 アレクサンダヌ・ザむツェフ (2018)

抂念実蚌では、タスクはサブタスクでした。぀たり、取埗されるデヌタが少なくなりたした。 しかもサヌバヌはたったのXNUMX台。

最初の XNUMX ぀の段階、぀たり Log_return の蚈算ず配列ぞのラップには玄 XNUMX 時間かかりたした。

そしお盞関関係の蚈算には玄50時間かかりたす。 しかし、以前は䜕週間も働いおいたため、50 時間では十分ではありたせん。 倧成功でした。 そしお、数えおみるず、このクラスタヌでは 70 秒あたり XNUMX 回、すべおがカりントされたこずになりたす。

しかし、最も重芁なこずは、このシステムには実質的にボトルネックがないこず、぀たり、ほが盎線的に拡匵できるこずです。 そしお圌らはそれを調べたした。 スケヌルアップに成功したした。

実際のアプリケヌションで ClickHouse を䜿甚する理論ず実践。 アレクサンダヌ・ザむツェフ (2018)

  • 適切な蚈画は成功の半分です。 そしお、適切なスキヌムは、必芁なすべおの ClickHouse テクノロゞヌを䜿甚するこずです。
  • Summing/AggregatingMergeTrees は、状態スナップショットを特別なケヌスずしお集玄したり考慮したりできるテクノロゞヌです。 そしお、倚くのこずが倧幅に簡玠化されたす。
  • マテリアラむズド ビュヌを䜿甚するず、XNUMX ぀のむンデックス制限を回避できたす。 あたりはっきりずは蚀えなかったかもしれたせんが、ログをロヌドしたずき、生のログは XNUMX ぀のむンデックスを持぀テヌブル内にあり、属性ログはテヌブル内にありたした。぀たり、同じデヌタはフィルタリングされただけで、むンデックスは完党に削陀されおいたした。その他。 同じデヌタですが、䞊べ替えが異なるように芋えたす。 そしお、マテリアラむズド ビュヌを䜿甚するず、必芁に応じお、このような ClickHouse の制限を回避できたす。
  • ポむント ク゚リのむンデックスの粒床を枛らしたす。
  • デヌタを賢く分散し、可胜な限りサヌバヌ内でデヌタをロヌカラむズするようにしおください。 そしお、可胜な限りリク゚ストでもロヌカリれヌションを䜿甚するようにしおください。

実際のアプリケヌションで ClickHouse を䜿甚する理論ず実践。 アレクサンダヌ・ザむツェフ (2018)

この短いスピヌチを芁玄するず、ClickHouse は珟圚、商甚デヌタベヌスずオヌプン゜ヌス デヌタベヌスの䞡方、぀たり特に分析分野の領域をしっかりず占領しおいるず蚀えたす。 圌はこの颚景に完璧に溶け蟌んでいたす。 さらに、ClickHouse があれば InfiniDB は必芁ないため、埐々に他のものを排陀し始めたす。 通垞の SQL サポヌトを䜜成すれば、Vertika はすぐに必芁なくなる可胜性がありたす。 楜しみ

実際のアプリケヌションで ClickHouse を䜿甚する理論ず実践。 アレクサンダヌ・ザむツェフ (2018)

- ご報告ありがずうございたす ずおも興味深い Apache Phoenix ずの比范はありたしたか?

いいえ、誰かが比范しおいるのを聞いたこずがありたせん。 私たちず Yandex は、さたざたなデヌタベヌスずのすべおの ClickHouse 比范を远跡しようずしおいたす。 なぜなら、突然䜕かがClickHouseよりも速いこずが刀明した堎合、Lesha Milovidovは倜眠るこずができず、すぐに速床を䞊げ始めるからです。 そんな比范は聞いたこずがありたせん。

  • (Aleksey Milovidov) Apache Phoenix は、Hbase を利甚した SQL ゚ンゞンです。 Hbase は䞻にキヌず倀の䜜業シナリオ甚です。 各行には、任意の名前を持぀任意の数の列が存圚できたす。 これは、Hbase、Cassandra などのシステムに぀いおも蚀えたす。 そしお、それはたさに重い分析ク゚リであり、通垞は機胜したせん。 あるいは、ClickHouse の䜿甚経隓がなければ、問題なく動䜜するず考えるかもしれたせん。

  • 感謝

    • こんにちは私は分析サブシステムを持っおいるので、このトピックにはすでに非垞に興味がありたす。 しかし、ClickHouse を芋るず、ClickHouse はむベント分析に非垞に適しおおり、可倉であるず感じたす。 そしお、倚数の倧きなテヌブルを䜿甚しお倧量のビゞネス デヌタを分析する必芁がある堎合、私の理解する限り、ClickHouse は私にはあたり適しおいたせんか? 特に圌らが倉わる堎合は。 これは正しいですか、それずもこれに反論できる䟋はありたすか?

    • これは正しいです。 これは、ほずんどの特殊な分析デヌタベヌスに圓おはたりたす。 これらは、倉曎可胜な XNUMX ぀以䞊の倧きなテヌブルず、ゆっくりず倉化する倚くの小さなテヌブルがあるずいう事実に合わせお調敎されおいたす。 ぀たり、ClickHouse は、すべおを配眮しお非垞に耇雑なク゚リを構築できる Oracle ずは異なりたす。 ClickHouse を効果的に䜿甚するには、ClickHouse で適切に機胜する方法でスキヌムを構築する必芁がありたす。 ぀たり、過剰な正芏化を避け、蟞曞を䜿甚し、長いリンクを少なくするように努めたす。 この方法でスキヌマを構築するず、同様のビゞネス タスクを埓来のリレヌショナル デヌタベヌスよりも ClickHouse ではるかに効率的に解決できたす。

ご報告ありがずうございたす 最近の金融事件に぀いお質問がありたす。 圌らは分析機胜を持っおいたした。 䞊り䞋りの様子を比范する必芁がありたした。 この分析のために特別にシステムを構築されたず聞きたしたが? たずえば、明日、このデヌタに関する別のレポヌトが必芁な堎合、スキヌマを再構築しおデヌタをアップロヌドする必芁がありたすか? ぀たり、リク゚ストを取埗するために䜕らかの前凊理を行う必芁がありたすか?

もちろん、これは非垞に特殊なタスクのための ClickHouse の䜿甚です。 これは、より䌝統的に Hadoop 内で解決できる可胜性がありたす。 Hadoop にずっお、これは理想的なタスクです。 しかし、Hadoop では非垞に遅いです。 そしお私の目暙は、通垞はたったく異なる手段で解決されるタスクを ClickHouse が解決できるず同時に、はるかに効率的に実行できるこずを実蚌するこずです。 特定のタスクに合わせお調敎されおいたす。 同様の問題が発生した堎合、同様の方法で解決できるこずは明らかです。

それは明らかだ。 50時間凊理したずおっしゃいたした。 デヌタをロヌドしたり、結果を取埗したりしたのは最初からですか?

はい、はい。

はい、ありがずうございたす。

これは 3 サヌバヌ クラスタヌ䞊にありたす。

こんにちは ご報告ありがずうございたす どれもずおも興味深いですね。 機胜に぀いおは少し質問したせんが、安定性の芳点からの ClickHouse の䜿甚に぀いお質問したす。 ぀たり、䜕かありたしたか、埩元する必芁がありたしたか? この堎合、ClickHouse はどのように動䜜したすか? それで、たたたたレプリカも持っおいたんですか たずえば、ClickHouse が䟝然ずしお制限を超えお萜䞋するずいう問題が発生したした。

もちろん、理想的なシステムなどありたせん。 そしお、ClickHouse にも独自の問題がありたす。 しかし、Yandex.Metrica が長い間機胜しおいないずいう話を聞いたこずがありたすか? おそらくそうではありたせん。 ClickHouse では 2012 幎から 2013 幎たで安定しお動䜜しおいたす。 私の経隓に぀いおも同じこずが蚀えたす。 私たちは完党な倱敗を経隓したこずがありたせん。 郚分的な問題が発生する可胜性はありたすが、ビゞネスに深刻な圱響を䞎えるほど重倧なものではありたせんでした。 そんなこずは決しお起こらなかった。 ClickHouse は非垞に信頌性が高く、ランダムにクラッシュするこずはありたせん。 心配する必芁はありたせん。 それは生々しいものではありたせん。 これは倚くの䌁業によっお蚌明されおいたす。

こんにちは デヌタ スキヌマをすぐに怜蚎する必芁があるずおっしゃいたした。 それが起こったらどうなるでしょうか 私のデヌタはどんどん流れ蟌んでいたす。 半幎が経ち、このたたでは無理だずわかり、デヌタを再アップロヌドしお䜕かをする必芁がありたす。

もちろん、これはシステムによっお異なりたす。 実質的に停止せずにこれを行う方法はいく぀かありたす。 たずえば、䞀意にマッピングできる堎合は、異なるデヌタ構造を䜜成するマテリアラむズド ビュヌを䜜成できたす。 ぀たり、ClickHouse を䜿甚したマッピングが蚱可されおいる堎合、぀たり、いく぀かのものを抜出し、䞻キヌを倉曎し、パヌティションを倉曎するず、マテリアラむズド ビュヌを䜜成できたす。 そこに叀いデヌタを䞊曞きするず、新しいデヌタが自動的に曞き蟌たれたす。 次に、マテリアラむズド ビュヌの䜿甚に切り替えお、レコヌドを切り替えお叀いテヌブルを匷制終了したす。 これは通垞、ノンストップの方法です。

ありがずう。

出所 habr.com

コメントを远加したす