むベント凊理を毎秒160䞇に加速

HighLoad ++の参加者がAlexander Krasheninnikovのレポヌトに来たずき、圌らは毎秒1,600,000むベントの凊理に぀いお聞いおみたいず思っおいたした。 期埅は実珟したせんでした...パフォヌマンスの準備䞭に、この数倀は1,800,000にたで䞊昇したため、HighLoad ++では、珟実は期埅を超えおいたす。



3幎前、Alexanderは 、Badooでスケヌラブルなリアルタむムに近いむベント凊理システムをどのように構築したかを語りたした。 それ以来、プロセスが進化し、ボリュヌムが増倧し、スケヌリングずフォヌルトトレランスの問題を解決する必芁があり、ある時点で根本的な察策が必芁になりたした- 技術スタックの倉曎 。







埩号化から、BadooでSpark + HadoopバンドルをClickHouseに眮き換え、 ハヌドりェアを3倍節玄し、負荷を6倍に増やした方法、プロゞェクトの統蚈を収集する理由ず方法、そしおこのデヌタをどう凊理するかを孊習したす。







スピヌカヌに぀いお Alexander Krasheninnikov  alexkrash  -Badooのデヌタ゚ンゞニアリング責任者。 圌は、ワヌクロヌドに合わせおスケヌリングするBIむンフラストラクチャに埓事し、デヌタ凊理むンフラストラクチャを構築するチヌムを管理しおいたす。 圌は、Hadoop、Spark、ClickHouseなど、配垃されるすべおのものが倧奜きです。 OpenSourceからクヌルな分散システムを準備できるず確信しおいたす。



統蚈収集



デヌタがない堎合、私たちは盲目であり、プロゞェクトを管理できたせん。 そのため、プロゞェクトの実行可胜性を監芖するために統蚈が必芁です。 ゚ンゞニアずしお、私たちは補品の改善に努める必芁がありたす。改善したい堎合は枬定しおください。 これが私の仕事のモットヌです。 たず第䞀に、私たちの目暙はビゞネス䞊の利益です。 統蚈は、ビゞネス䞊の質問に察する答えを提䟛したす 。 テクニカルメトリックはテクニカルメトリックですが、ビゞネスは指暙にも関心があり、考慮する必芁がありたす。



統蚈ラむフサむクル



統蚈のラむフサむクルを4぀のポむントで定矩したす。それぞれに぀いお個別に説明したす。







フェヌズの定矩-圢匏化



アプリケヌションでは、いく぀かのメトリックを収集したす。 たず、これらはビゞネス指暙です。 たずえば、写真サヌビスがある堎合、1日に1時間に1秒間に䜕枚の写真がアップロヌドされるのか疑問に思っおいたす。 次のメトリックは「準技術的」です。モバむルアプリケヌションたたはサむトの応答性、API操䜜、ナヌザヌがサむトず察話する速さ、アプリケヌションのむンストヌル、UX。 3番目に重芁な指暙は、 ナヌザヌの行動を远跡するこずです。 これらは、Google AnalyticsやYandex.Metricsなどのシステムです。 独自のクヌルな远跡システムがあり、そこで倚くの投資をしおいたす。



統蚈を扱うプロセスでは、倚くのナヌザヌが関䞎したす-これらは開発者ずビゞネスアナリストです。 党員が同じ蚀語を話すこずが重芁なので、同意する必芁がありたす。



口頭で亀枉するこずは可胜ですが、これが正匏に発生する堎合は、むベントの明確な構造においおはるかに優れおいたす。


開発者がビゞネスむベントの構造を圢匏化するず 、開発者が登録数を蚀うず、アナリストは登録の総数だけでなく、囜、性別、およびその他のパラメヌタヌに関する情報も提䟛されたこずを理解したす。 そしお、この情報はすべお圢匏化され、䌚瀟のすべおのナヌザヌのパブリックドメむンにありたす 。 むベントには、型付き構造ず正匏な説明がありたす。 たずえば、この情報をプロトコルバッファ圢匏で保存したす。



むベント「登録」の説明



enum Gender { FEMALE = 1; MALE = 2; } message Registration { required int32 userid =1; required Gender usergender = 2; required int32 time =3; required int32 countryid =4; }
      
      





登録むベントには、 ナヌザヌ、フィヌルド、むベントの時間 、およびナヌザヌの登録囜に関する情報が含たれおいたす。 この情報はアナリストが利甚でき、将来、䌁業は圓瀟が収集するものを理解したす。



正匏な説明が必芁なのはなぜですか



正匏な説明は、開発者、アナリスト、および補品郚門の統䞀性です。 次に、この情報は、アプリケヌションのビゞネスロゞックの説明を実行したす。 たずえば、ビゞネスプロセスを蚘述する内郚システムがあり、その䞭に新しい機胜がある画面がありたす。







補品芁件ドキュメントには、ナヌザヌがこの方法でアプリケヌションず察話するずきに、たったく同じパラメヌタヌでむベントを送信する必芁があるずいう指瀺を含むセクションがありたす。 その埌、機胜がどのように機胜するか、およびそれらを正しく枬定したこずを怜蚌できたす。 正匏な説明により、このデヌタをデヌタベヌスに保存する方法NoSQL、SQLなどをさらに理解できたす。 デヌタスキヌマがあり 、それは玠晎らしいです。



サヌビスずしお提䟛される䞀郚の分析システムでは、シヌクレットストレヌゞには10〜15個のむベントしかない。 私たちの数は1000を超えお成長し、止たるこずはありたせん。 単䞀のレゞストリなしでは生きるこずは䞍可胜です。



フェヌズ抂芁の定矩



統蚈は重芁であるず刀断し、特定の䞻題分野に぀いお説明したした。これは良いこずです。



収集フェヌズ-デヌタ収集



登録、メッセヌゞの送信などのビゞネスむベントが発生したずきに、この情報を保存するず同時に、統蚈むベントを個別に送信するようにシステムを構築するこずにしたした。



コヌドでは、統蚈はビゞネスむベントず同時に送信されたす。


デヌタフロヌは別の凊理パむプラむンを通過するため、アプリケヌションが実行されるデヌタストアずは完党に独立しお凊理されたす。



EDLによる説明



 enum Gender { FEMALE = 1; MALE = 2; } message Registration { required int32 user_id =1; required Gender user_gender = 2; required int32 time =3; required int32 country_id =4; }
      
      





登録むベントの説明がありたす。 APIは自動的に生成され、開発者はコヌドからアクセスでき、4行で統蚈を送信できたす。



EDLベヌスのAPI



 \EDL\Event\Regist ration::create() ->setUserId(100500) ->setGender(Gender: :MALE) ->setTime(time()) ->send();
      
      





むベント配信



これが倖郚システムです。 これを行うのは、写真デヌタを操䜜するためのAPIを提䟛する玠晎らしいサヌビスがあるためです。 それらはすべお、AerospikeやCockroachDBなどのクヌルな新しいデヌタベヌスにデヌタを保存したす。



ある皮のレポヌトを䜜成する必芁がある堎合は、「みんな、どれだけあるのか、どれだけあるのか」ずいうスクランブルに行く必芁はありたせん。すべおのデヌタは別のフロヌに送信されたす。 凊理コンベア-倖郚システム。 アプリケヌションコンテキストから、ビゞネスロゞックリポゞトリからすべおのデヌタを解き、さらに別のパむプラむンに送信したす。



収集フェヌズでは、アプリケヌションサヌバヌの可甚性を想定しおいたす。 このPHPがありたす。







茞送



これは、アプリケヌションコンテキストから行ったこずを別のパむプラむンに送信できるサブシステムです。 茞送は、プロゞェクトの状況に応じお、芁件からのみ遞択されたす。



茞送には特城があり、最初の保蚌は配達保蚌です。 トランスポヌトの特性少なくずも1回、正確に1回、このデヌタの重芁床に基づいお、タスクの統蚈を遞択したす。 たずえば、課金システムの堎合、統蚈に珟圚よりも倚くのトランザクションが衚瀺されるこずは受け入れられたせん。これは金銭であり、䞍可胜です。



2番目のパラメヌタヌは、プログラミング蚀語のバむンディングです。 どういうわけかトランスポヌトずやり取りする必芁があるため、プロゞェクトが蚘述されおいる蚀語に応じお遞択されたす。



3番目のパラメヌタヌはスケヌラビリティです。 1秒あたり数癟䞇のむベントに぀いお話しおいるので、将来のスケヌラビリティを念頭に眮いおおくずよいでしょう。



倚くのトランスポヌトオプションがありたすRDBMSアプリケヌション、Flume、KafkaたたはLSD。 私たちはLSDを䜿甚したす-これは私たちの特別な方法です。



ラむブストリヌミングデヌモン



LSDは犁止物質ずは関係ありたせん。 これは、 掻発で非垞に高速なストリヌミングデヌモンであり、曞き蟌み甚の゚ヌゞェントを提䟛したせん。 それを調敎するこずができ、他のシステムずの統合がありたす HDFS、Kafka-送信されたデヌタを再配眮できたす。 LSDにはINSERTのネットワヌクコヌルがなく、ネットワヌクトポロゞを制埡できたす。



最も重芁なこずは、これはBadooのオヌプン゜ヌスです -この゜フトりェアを信頌しない理由はありたせん。



それが完璧な悪魔であれば、カフカの代わりにすべおの䌚議でLSDに぀いお議論したすが、すべおのLSDには軟膏のパがありたす。 私たちには私たちに合った独自の制限があり、私たちに合っおいたす LSDでは耇補がサポヌトされおおらず 、少なくずも1回の配信保蚌がありたす。 たた、金銭取匕の堎合、これは最適なトランスポヌトではありたせんが、䞀般にACIDをサポヌトする「酞性」デヌタベヌスを介しおのみお金ず通信する必芁がありたす。



収集フェヌズの芁玄



前のシリヌズの結果に基づいお、デヌタの正匏な説明を受け、開発者がからむベントを送信するのに䟿利な優れたAPIを生成し、このデヌタをアプリケヌションコンテキストから別のパむプラむン に転送する方法を芋぀けたした。 すでに悪くはありたせん。次の段階に近づいおいたす。



フェヌズプロセス-デヌタ凊理



登録、アップロヌドされた写真、投祚からデヌタを収集したした-これらすべおをどうするか このデヌタから、長い履歎ず生デヌタを含む チャヌトを取埗したす 。 チャヌトはすべおを理解したす。䌚瀟の収益が増加しおいるこずを曲線から理解するために開発者である必芁はありたせん。 オンラむンレポヌトずアドホックに生デヌタを䜿甚したす。 より耇雑なケヌスでは、アナリストはこのデヌタに察しお分析ク゚リを実行したいず考えおいたす。 それずその機胜の䞡方が私たちにずっお必芁です。



グラフ



チャヌトには倚くの圢匏がありたす。







たたは、たずえば、10幎間のデヌタを瀺す履歎を持぀グラフ。







チャヌトもそのようなものです。







これはいく぀かのABテストの結果であり、驚くべきこずにニュヌペヌクのクラむスラヌビルに䌌おいたす。



グラフを描画するには、生デヌタのク゚リず時系列の 2぀の方法がありたす 。 どちらのアプロヌチにも欠点ず利点がありたすが、これらに぀いおは詳しく説明したせん。 ハむブリッドアプロヌチを䜿甚したす。運甚レポヌト甚の生デヌタの短い「テヌル」ず、長期保存甚の時系列を保持したす。 2番目は1番目から蚈算されたす。



1秒あたり180䞇のむベントに成長した方法



それは長い話です-1日で数癟䞇のRPSは発生したせん。 Badooは10幎の歎史を持぀䌚瀟であり、デヌタ凊理システムは䌚瀟ずずもに成長したず蚀えたす。







最初は䜕もありたせんでした。 デヌタの収集を開始したした- 毎秒5,000むベントになりたした。 1぀のMySQLホストず他の䜕もない リレヌショナルDBMSはすべおこのタスクに察応し、快適です。トランザクション性がありたす-デヌタを入力し、リク゚ストを受信したす-すべおがうたく動䜜したす。 だから私たちはしばらく䜏んでいた。



機胜的シャヌディングは、ある時点で発生したした。登録デヌタがここに来お、そこに写真がありたす。 したがっお、 1秒間に最倧200,000件のむベントを凊理し、さたざたな組み合わせアプロヌチを䜿甚し始めたした。生デヌタではなく、 集玄されたものですが、これたでのずころリレヌショナルデヌタベヌス内です。 カりンタヌを保存したすが、ほずんどのリレヌショナルデヌタベヌスの本質は、このデヌタに察しおDISTINCTク゚リを実行するこずができないずいうこずです。カりンタヌの代数モデルではDISTINCTを蚈算できたせん。



Badooのモットヌは「止められない力」です。 私たちは止たらず、さらに成長したした。 1秒あたり200,000むベントずいうしきい倀を超えた時点で、䞊で説明した正匏な説明を䜜成するこずにしたした。 それ以前は混乱があり、珟圚、むベントの構造化されたレゞスタがありたす。Hadoopに接続しおシステムのスケヌリングを開始し、すべおのデヌタがHiveテヌブルに入れられたした。



Hadoopは、巚倧な゜フトりェアパッケヌゞであるファむルシステムです。 分散コンピュヌティングの堎合、Hadoop氏は、「ここにデヌタを入れお、分析ク゚リを実行できるようにしたす」ず蚀いたす。 すべおのチャヌトの定期的な蚈算を䜜成したしたが、うたくいきたした。 しかし、チャヌトは迅速に曎新される堎合に䟡倀がありたす。1日1回、チャヌトの曎新を芋るこずはそれほど楜しくありたせん。 本番環境で臎呜的な゚ラヌを匕き起こす䜕かを展開した堎合、チャヌトが1日おきにではなく、すぐにドロップするこずを確認したいず思いたす。 そのため、しばらくするずシステム党䜓が劣化し始めたした。 ただし、この段階で、遞択したテクノロゞヌスタックに固執できるこずに気付きたした。



私たちにずっお、Javaは新しいものであり、私たちはそれを気に入っおおり、異なる方法で䜕ができるかを理解したした。


1秒あたり 40䞇から800,000むベントの段階で、Hadoopを最も玔粋な圢匏で眮き換え、Hiveは分析ク゚リの゚グれキュヌタヌずしおSpark Streamingを䜿甚しお、 䞀般的なマップ/リデュヌスおよびメトリックの増分蚈算を䜜成したした。 3幎前、私はそれをどうやっおやったかを話したした。 それから、Sparkは氞遠に生き続けるように思えたしたが、そうでない堎合は呜が呜じられたした-Hadoopの限界にぶ぀かりたした。 おそらく、他の条件があったずしおも、Hadoopを䜿い続けたす。



もう1぀の問題は、Hadoopでグラフを蚈算するこずに加えお、アナリストによっお駆動される信じられないほどの4階建おのSQLク゚リであり、グラフはすぐには曎新されたせんでした。 実際には、運甚デヌタ凊理にはかなり泚意が必芁な仕事があるため、リアルタむムで高速か぀クヌルです。



Badooには、ペヌロッパず北米の倧西掋の䞡偎にある2぀のデヌタセンタヌが察応しおいたす。 統合レポヌトを䜜成するには、アメリカからペヌロッパにデヌタを送信する必芁がありたす。 より倚くの蚈算胜力があるため、すべおの統蚈統蚈を保持するのはペヌロッパのデヌタセンタヌです。 箄200ミリ秒のデヌタセンタヌ間の埀埩 -ネットワヌクはかなり柔軟です-別のDCに芁求を行うこずは、次のラックに行くこずず同じではありたせん。



むベントず開発者の正匏化を開始し、プロダクトマネヌゞャヌが関䞎したずき、誰もがすべおを気に入っおいたした。 むベントの爆発的な成長がありたした 。 珟時点では、クラスタヌで鉄を賌入する時期でしたが、私たちは本圓にこれをやりたくありたせんでした。



1秒間に800,000むベントのピヌクを過ぎたずきに、YandexがOpenSource ClickHouseにアップロヌドしたものを芋぀けお、詊しおみるこずにしたした。 圌らは䜕かをしようずしおいる最䞭にコヌンの銬車を埋め、その結果、すべおがうたくいったずき、圌らは最初の癟䞇のむベントのために小さなレセプションを行いたした。 おそらく、ClickHouseがレポヌトを終了した可胜性がありたす。



ClickHouseを䜿甚しお、そのたた䜿甚しおください。


しかし、これは面癜くないので、デヌタ凊理に぀いお匕き続き説明したす。



クリックハりス



ClickHouseは過去2幎間の誇倧広告であり、玹介する必芁はありたせん。2018幎のHighLoad ++に぀いおのみ、それに関する5぀のレポヌトず、セミナヌおよび䌚議に぀いお芚えおいたす。



このツヌルは、自分で蚭定したタスクを正確に解決するように蚭蚈されおいたす。 Hadoopから䞀床に受け取ったリアルタむム曎新ずチップがありたす レプリケヌション、シャヌディング。 ClickHouseを詊さない理由はありたせんでした。Hadoopでの実装では、すでに底を突砎しおいたこずを理解しおいたからです。 このツヌルはクヌルで、ドキュメントは䞀般的に火が぀きたす-私は自分でそこに曞いたので、すべおが本圓に奜きで、すべおが玠晎らしいです。 しかし、倚くの問題を解決する必芁がありたした。



ClickHouseでむベントのフロヌ党䜓をシフトする方法は 2぀のデヌタセンタヌからのデヌタを結合する方法は 私たちが管理者のずころに来お、「みんな、ClickHouseをむンストヌルしたしょう」ず蚀ったずいう事実から、圌らはネットワヌクを2倍に厚くせず、遅延は半分になりたす。 いいえ、ネットワヌクはただ最初の絊䞎ず同じくらい薄くお小さいです。



結果を保存する方法は  Hadoopでは、グラフィックスの描画方法を理解したしたが、魔法のClickHouseでどのように描画するのですか 魔法の杖は含たれおいたせん。 時系列ストレヌゞに結果を配信する方法は 



研究所の講垫が蚀ったように、3぀のデヌタスキヌムを怜蚎しおください戊略的、論理的、物理的です。



戊略的ストレヌゞスキヌム



2぀のデヌタセンタヌがありたす。 ClickHouseはDCに぀いお䜕も知らない方法を知っおいるこずを孊び、各DCでクラスタヌをポップしたした。 これで、 デヌタは倧西掋間ケヌブルを移動しなくなりたした。DCで発生したすべおのデヌタは、そのクラスタヌにロヌカルに保存されたす。 たずえば、䞡方のDCにいく぀の登録があるかを調べるために、結合されたデヌタに察しおリク゚ストを行う堎合、ClickHouseはこの機䌚を提䟛したす。 リク゚ストの䜎レむテンシず可甚性-最高傑䜜







物理ストレヌゞスキヌム



繰り返しになりたすが、デヌタはClickHouseリレヌショナルモデルにどのように分類されたすか。レプリケヌションずシャヌディングを倱わないために䜕をすべきでしょうか。 ClickHouseのドキュメントにはすべおが詳しく説明されおいたす。耇数のサヌバヌがある堎合は、この蚘事に出くわしたす。 したがっお、マニュアルの内容、぀たり、レプリケヌション、シャヌディング、シャヌド䞊のすべおのデヌタぞのク゚リに぀いおは詳しく説明したせん。



ストレヌゞロゞック



論理図が最も興味深いです。 1぀のパむプラむンで、異皮むベントを凊理したす。 これは、登録、音声、写真のアップロヌド、技術指暙、ナヌザヌの行動の远跡など、異皮むベントのストリヌムがあるこずを意味したす 。これらのむベントはすべお完党に異なる属性を持っおいたす 。 たずえば、携垯電話で画面を芋たした-画面IDが必芁です、誰かに投祚したした-投祚が賛成か反察かを理解する必芁がありたす。 これらのむベントにはすべお異なる属性があり、異なるグラフが描画されたすが、これらはすべお単䞀のパむプラむンで凊理する必芁がありたす。 ClickHouseモデルに配眮する方法は



アプロヌチNo. 1-むベントテヌブルごず。 この最初のアプロヌチは、MySQLで埗られた経隓から掚定したものです。ClickHouseでむベントごずにタブレットを䜜成したした。 かなり論理的に聞こえたすが、倚くの困難に遭遇したした。



本日のビルドがリリヌスされたずきにむベントの構造が倉曎されるずいう制限はありたせん。 このパッチは、どの開発者でも䜜成できたす。 このスキヌムは、通垞、すべおの方向で倉曎可胜です。 唯䞀の必須フィヌルドは、 タむムスタンプむベントずむベントの内容です。 他のすべおはオンザフラむで倉曎されるため、これらのプレヌトを倉曎する必芁がありたす。 ClickHouseにはクラスタヌでALTERを実行する機胜がありたすが、これは繊现でデリケヌトな手順であり、自動化が困難でスムヌズに機胜したせん。 したがっお、これはマむナスです。



1000を超えるさたざたなむベントがあるため、 マシンごずに高いINSERTレヌトが埗られたす。すべおのデヌタを垞に1000のテヌブルに蚘録したす。 ClickHouseの堎合、これはアンチパタヌンです。 ペプシのスロヌガンがあれば-「Live in big sips」、ClickHouse- 「Live in big batch」 。 これが行われないず、レプリケヌションが停止し、ClickHouseは新しい挿入の受け入れを拒吊したす。これは䞍快なスキヌムです。



アプロヌチ2-広いテヌブル 。 シベリアの男性は、チェヌン゜ヌをレヌルに滑り蟌たせ、別のデヌタモデルを䜿甚しようずしたした。 千列のテヌブルを䜜成したす。各むベントにはデヌタ甚の列が予玄されおいたす。 巚倧なスパヌステヌブルを取埗したす -幞いなこずに、これは開発環境を超えたせんでした。最初の挿入から、スキヌムが絶察に悪いこずが明らかになったためです。



それでも、私はこのようなクヌルな゜フトりェア補品を䜿い、もう少し仕䞊げたいず思っおいたす。それがあなたが必芁ずするものです。



アプロヌチ3-䞀般的な衚。 ClickHouseは非スカラヌデヌタ型をサポヌトしおいるため、配列にデヌタを栌玍する1぀の巚倧なテヌブルがありたす 。 ぀たり、属性の名前が栌玍される列ず、属性の倀が栌玍される配列を持぀別の列を開始したす。







ClickHouseは、ここでそのタスクを非垞にうたく実行したす。 デヌタを挿入するだけであれば、おそらく珟圚のむンストヌルでさらに10回絞り蟌みたす。



ただし、軟膏のパは、 文字列の配列を保存するためのClickHouseのアンチパタヌンでもあるこずです。 行配列はより倚くのディスク容量を占有するため、これは悪いこずです。単玔な列よりも瞮小し、凊理が困難です。 しかし、私たちのタスクに぀いおは、利点を䞊回るため、これに目を向けたす。



そのようなテヌブルからSELECTを䜜成する方法は 私たちのタスクは、性別でグルヌプ化された登録をカりントするこずです。 たず、1぀の配列で性別の列に察応する䜍眮を芋぀け、次にこのむンデックスを䜿甚しお別の列に移動しおデヌタを取埗する必芁がありたす。







このデヌタにグラフを描く方法



すべおのむベントが蚘述されおいるため、それらは厳密な構造を持ち、むベントのタむプごずに4階建おのSQLク゚リを圢成し、実行しお、結果を別のテヌブルに保存したす。



問題は、グラフ䞊に2぀の隣接する点を描くには、テヌブル党䜓をスキャンする必芁があるこずです。 䟋1日あたりの登録を確認したす。 このむベントは、䞀番䞊の行から最埌から2番目の行たでです。 䞀床スキャン-玠晎らしい。 5分埌、グラフ䞊に新しいポむントを描画したす-再び、前のスキャンず亀差するデヌタ範囲をスキャンし、各むベントに぀いお同様に行いたす。 論理的に聞こえたすが、芋栄えはよくありたせん。



さらに、いく぀かの行を取埗する堎合、集蚈の結果も読み取る必芁がありたす 。 たずえば、神のしもべがスカンゞナビアで登録された男性であったずいう事実があり、芁玄統蚈を蚈算する必芁がありたす登録数、男性数、それらの䜕人がノルりェヌ人であるか。 これは、分析デヌタベヌスROLLUP、CUBE 、およびGROUPING SETSの芳点から呌び出されたす-1行を耇数行にしたす。



治療方法



幞いなこずに、ClickHouseには、この問題、぀たり集蚈関数のシリアル化された状態を解決するツヌルがありたす。 これは、デヌタの䞀郚を䞀床スキャンしお、これらの結果を保存できるこずを意味したす。 これはキラヌ機胜です 。 3幎前、SparkずHadoopでこれを正確に行いたしたが、Yandexの最高のマむンドがClickHouseにアナログを実装したのは玠晎らしいこずです。



遅いリク゚スト



今日ず昚日のナニヌクナヌザヌ数をカりントするずいう、ゆっくりずしたリク゚ストがありたす。



 SELECT uniq(user_id) FROM table WHERE dt IN (today(), yesterday())
      
      





物理的には、昚日の状態のSELECTを䜜成し、そのバむナリ衚珟を取埗しお、どこかに保存できたす。



 SELECT uniq(user_id), 'xxx' AS ts, uniqState(user id) AS state FROM table WHERE dt IN (today(), yesterday())
      
      





今日は、今日になるずいう条件を倉曎するだけです 'yyy' AS ts



およびWHERE dt = today()



およびタむムスタンプ“ xxx”および“ yyy”を呌び出したす。 , , 2 .



 SELECT uniqMerge(state) FROM ageagate_table WHERE ts IN ('xxx', 'yyy')
      
      







:





, - . . , , , , ClickHouse, : «, ! , !»





, , . , . . — SQL-, . , , .







, - time series. : , , , time series.



time series : , , timestamp . , , . . , , , — , . , , ClickHouse -, , .



, , ClickHouse:



— « », — .


time series 2 , 20 20-80 . . ClickHouse GraphiteMergeTree , time series, .





8 ClickHouse , 6 - , 2 : 2 — , . 1.8 . , 500 . , 1,8 , 500 ! .



Hadoop



2 . . 3 , CPU — 4 . , .



Process



, , , . , , ClickHouse 3 000 . , , , overkill.



, , . ClickHouse, . , , , . , 8 3–4 . — .



Present —



, ? time series, time series , , , .







Drop Detect — SQL : SQL- , , .







Anomaly Detection — . , , 2% , — 40, , , , .



— , , - , Anomaly Detection.



Anomaly Detection



, time series . : , , . time series . , , . , drop detection — , .



UI.







. - , — . -, .



Present



, , . , : 1000 — alarm, 0 — alarm. .



Anomaly Detection , . Anomaly Detection Exasol , ClickHouse. Anomaly Detection 2 , .





, , 4 .



, , , . , , . , .



HighLoad++ , HighLoad++ - . , , :)



, PHP Russia , , . , , , 1,8 /, , 1 .



All Articles