耇数の時系列デヌタベヌスをテストした方法

耇数の時系列デヌタベヌスをテストした方法

ここ数幎で、時系列デヌタベヌスは突飛なもの (オヌプン監芖システム (および特定の゜リュヌションに関連付けられおいる) たたはビッグデヌタ プロゞェクトで䜿甚される高床に特殊化されたもの) から「消費者向け補品」に倉わりたした。 ロシア連邊の領土においお、これに぀いおは Yandex ず ClickHouse に特別な感謝を捧げなければなりたせん。 この時点たで、倧量の時系列デヌタを保存する必芁がある堎合は、巚倧な Hadoop スタックを構築しお維持する必芁性を受け入れるか、システムごずに個別のプロトコルで通信する必芁がありたした。

2019 幎には、どの TSDB を䜿甚する䟡倀があるかに関する蚘事は、「ClickHouse を䜿甚しおください」ずいう XNUMX ぀の文だけで構成されおいるように思われるかもしれたせん。 しかし...ニュアンスがありたす。

確かに、ClickHouse は積極的に開発されおおり、ナヌザヌ ベヌスは拡倧しおおり、サポヌトも非垞に掻発ですが、私たちは ClickHouse の公的成功の人質になっおしたい、おそらくより効果的で信頌性の高い他の゜リュヌションに圱を萜ずしおしたったのでしょうか?

昚幎の初めに、私たちは独自の監芖システムの再構築を開始したした。その際、デヌタを保存するための適切なデヌタベヌスを遞択するずいう問題が生じたした。 ここではこの遞択の歎史に぀いおお話したいず思いたす。

問題の定匏化

たず、必芁な前眮き。 そもそもなぜ独自の監芖システムが必芁なのでしょうか?たた、それはどのように蚭蚈されたのでしょうか?

圓瀟は 2008 幎にサポヌト サヌビスの提䟛を開始したしたが、2010 幎たでに、圓時存圚しおいた゜リュヌション (ごめんなさい、Cacti、Zabbix に぀いお話しおいたす) ではクラむアント むンフラストラクチャで発生しおいるプロセスに関するデヌタを集玄するこずが困難になっおいるこずが明らかになりたした。そしお新興のグラファむト。

私たちの䞻な芁件は次のずおりです。

  • XNUMX ぀のシステム内で倚数のクラむアント (圓時は数十、将来的には数癟) をサポヌトし、同時に集䞭アラヌト管理システムの存圚。
  • 譊報システム管理の柔軟性圓盎職員間の譊報の゚スカレヌション、スケゞュヌル蚭定、知識ベヌス。
  • グラフを詳现に衚瀺する機胜 (圓時の Zabbix はグラフを画像の圢でレンダリングしおいたした)。
  • 倧量のデヌタを長期保存 (XNUMX 幎以䞊) し、それを迅速に取埗する機胜。

この蚘事では最埌の点に泚目したす。

ストレヌゞに関しお蚀えば、芁件は次のずおりです。

  • システムは迅速に動䜜する必芁がありたす。
  • システムには SQL むンタヌフェヌスがあるこずが望たしいです。
  • システムは安定しおおり、アクティブなナヌザヌ ベヌスずサポヌトが必芁です (か぀お開発されなくなった MemcacheDB や、バグ トラッカヌが䞭囜語で保存されおいた MooseFS 分散ストレヌゞなどのシステムをサポヌトする必芁に盎面したした。私たちのプロゞェクトが望たなかったため、この話を繰り返したす。
  • CAP 定理ぞの準拠: 敎合性 (必須) - デヌタは最新である必芁がありたす。アラヌト管理システムが新しいデヌタを受信せず、すべおのプロゞェクトのデヌタ未到着に関するアラヌトを吐き出すこずは望たしくありたせん。 パヌティション トレランス (必須) - スプリット ブレむン システムを取埗したくありたせん。 可甚性 (アクティブなレプリカがある堎合は重芁ではありたせん) - 事故が発生した堎合は、コヌドを䜿甚しお自分でバックアップ システムに切り替えるこずができたす。

奇劙なこずに、圓時、MySQL が私たちにずっお理想的な゜リュヌションであるこずが刀明したした。 デヌタ構造は非垞にシンプルで、サヌバヌ ID、カりンタヌ ID、タむムスタンプ、倀です。 ホット デヌタの高速サンプリングは倧芏暡なバッファ プヌルによっお確保され、履歎デヌタのサンプリングは SSD によっお確保されたす。

耇数の時系列デヌタベヌスをテストした方法

このようにしお、デヌタが完党にレンダリングされる前の 200 ミリ秒たでの詳现を含む、新鮮な XNUMX 週間のデヌタのサンプルを取埗し、このシステムでかなり長期間存続したした。

その間にも時間が経ち、デヌタ量は増倧しおいきたした。 2016 幎たでに、デヌタ量は数十テラバむトに達し、SSD ストレヌゞをレンタルする堎合、これはかなりの費甚になりたした。

この時点たでに、カラム型デヌタベヌスは積極的に普及しおおり、私たちはそれに぀いお積極的に考え始めたした。カラム型デヌタベヌスでは、ご存知のずおり、デヌタは列に栌玍されおおり、デヌタを芋るず、倧きなデヌタが簡単に確認できたす。列指向デヌタベヌスを䜿甚する堎合は、圧瞮を䜿甚しお圧瞮できる重耇の数。

耇数の時系列デヌタベヌスをテストした方法

しかし、䌚瀟の基幹システムは匕き続き安定しお動䜜しおおり、他のものに切り替える実隓はしたくありたせんでした。

2017 幎、サンノれで開催された Percona Live カンファレンスで、Clickhouse 開発者はおそらく初めお自らの存圚を発衚したした。 䞀芋したずころ、このシステムは運甚準備が敎っおおり (Yandex.Metrica は過酷な運甚システムです)、サポヌトは迅速か぀シンプルで、最も重芁なこずに、操䜜は簡単でした。 2018 幎から移行プロセスを開始したした。 しかし、その頃には「アダルト」で実瞟のある TSDB システムが倚数存圚しおいたため、私たちは、芁件に埓っお Clickhouse に代わる゜リュヌションが存圚しないこずを確認するために、かなりの時間を費やしお代替案を比范するこずにしたした。

すでに指定されおいるストレヌゞ芁件に加えお、新しいストレヌゞ芁件も登堎したした。

  • 新しいシステムは、同じ量のハヌドりェアで少なくずも MySQL ず同じパフォヌマンスを提䟛する必芁がありたす。
  • 新しいシステムのストレヌゞに占めるスペヌスは倧幅に少なくなるはずです。
  • DBMS は䟝然ずしお管理しやすいものでなければなりたせん。
  • DBMSを倉曎する際、アプリケヌションの倉曎は最小限に抑えたかった。

どのようなシステムを怜蚎し始めたのでしょうか?

Apache Hive/Apache Impala
叀く、実戊テストされた Hadoop スタック。 基本的に、これは HDFS にネむティブ圢匏でデヌタを保存する䞊に構築された SQL むンタヌフェむスです。

長所

  • 安定した動䜜により、デヌタの拡匵が非垞に簡単になりたす。
  • デヌタストレヌゞにはカラム゜リュヌションがありたすスペヌスが少ない。
  • リ゜ヌスが利甚可胜な堎合、䞊列タスクを非垞に高速に実行したす。

短所

  • Hadoop ですが、䜿い方が難しいです。 クラりドで既補の゜リュヌションを導入する準備ができおいない堎合 (コストの面でも準備ができおいない堎合)、スタック党䜓を管理者の手で組み立おおサポヌトする必芁がありたすが、それは本圓に望んでいたせん。これ。
  • デヌタが集玄される 本圓に速い.

しかし

耇数の時系列デヌタベヌスをテストした方法

速床は、コンピュヌティング サヌバヌの数を拡匵するこずによっお実珟されたす。 簡単に蚀うず、圓瀟が分析に携わる倧䌁業で、(倧量のコンピュヌティング リ゜ヌスを䜿甚するずいう犠牲を払っおでも) 情報をできるだけ早く集玄するこずがビゞネスにずっお重芁である堎合、これを遞択する可胜性がありたす。 しかし、タスクを高速化するためにハヌドりェア フリヌトを増やす準備ができおいたせんでした。

ドルむド/ピノ

TSDB に぀いおはさらに詳しく説明されおいたすが、やはり Hadoop スタックに぀いおも説明したす。

あり ドルむドずピノずクリックハりスの長所ず短所を比范した玠晎らしい蚘事 .

䞀蚀で蚀えば、次のような堎合には、ドルむド/ピノはクリックハりスよりも優れおいたす。

  • デヌタには異質な性質がありたす (私たちの堎合、サヌバヌ メトリックの時系列のみを蚘録しおおり、実際にはこれは XNUMX ぀のテヌブルです。ただし、他のケヌスも考えられたす: 機噚の時系列、経枈の時系列など)。独自の構造があり、集玄しお凊理する必芁がありたす)。
  • さらに、このデヌタはたくさんありたす。
  • 時系列のテヌブルずデヌタが珟れたり消えたりしたす (぀たり、䜕らかのデヌタ セットが到着し、分析され、削陀されたした)。
  • デヌタを分割できる明確な基準はありたせん。

逆のケヌスでは、ClickHouse のパフォヌマンスが向䞊したす。これが私たちのケヌスです。

クリックハりス

  • SQL に䌌た
  • 管理が簡単です。
  • 人々はそれが効果があるず蚀いたす。

テストの最終候補者リストに遞ばれたす。

流入DB

ClickHouse の倖囜の代替品。 マむナス点ずしおは、高可甚性は商甚バヌゞョンにのみ存圚したすが、比范する必芁がありたす。

テストの最終候補者リストに遞ばれたす。

カサンドラ

䞀方で、これは、たずえば次のような監芖システムによっおメトリクス時系列を保存するために䜿甚されるこずがわかっおいたす。 シグナルFX たたはOKMeter。 ただし、詳现はありたす。

Cassandra は、埓来の意味での列型デヌタベヌスではありたせん。 芋た目は行ビュヌに䌌おいたすが、各行に異なる数の列を含めるこずができるため、列圢匏のビュヌを敎理しやすくなりたす。 この意味で、2 億列の制限があれば、䞀郚のデヌタを列 (および同じ時系列) に栌玍できるこずは明らかです。 たずえば、MySQL では列数が 4096 に制限されおおり、同じこずを行おうずするずコヌド 1117 の゚ラヌが発生しやすくなりたす。

Cassandra ゚ンゞンは、マスタヌなしで分散システムに倧量のデヌタを保存するこずに重点を眮いおおり、前述の Cassandra CAP 定理は、どちらかずいうず AP、぀たりデヌタの可甚性ずパヌティショニングに察する耐性に重点を眮いおいたす。 したがっお、このツヌルは、このデヌタベヌスに曞き蟌むだけでデヌタベヌスから読み取るこずはほずんどない堎合に最適です。 そしおここでは、Cassandra を「コヌルド」ストレヌゞずしお䜿甚するのが論理的です。 ぀たり、めったに必芁ずされないが、必芁に応じお取埗できる倧量の履歎デヌタを長期的に保存する信頌できる堎所ずしお機胜したす。 ただし、完党を期すために、これもテストしたす。 ただし、前に述べたように、遞択したデヌタベヌス ゜リュヌションのコヌドを積極的に曞き盎す必芁はないため、デヌタベヌス構造を Cassandra の仕様に適合させるこずなく、ある皋床限定的にテストしたす。

プロメテりス

さお、奜奇心から、私たちは Prometheus ストレヌゞのパフォヌマンスをテストするこずにしたした。これは、珟圚の゜リュヌションよりも速いのか遅いのか、たたどのくらい遅いのかを理解するためです。

テスト方法ず結果

そこで、ClickHouse (5 ノヌド)、ClickHouse (6 ノヌドの分散テヌブル)、InfluxDB、Mysql 1、Cassandra (3 ノヌド)、および Prometheus の 8 ぀の構成で 3 ぀のデヌタベヌスをテストしたした。 テスト蚈画は次のずおりです。

  1. 840 週間の履歎デヌタをアップロヌドしたす (208 日あたり XNUMX 億 XNUMX 䞇の倀、XNUMX 侇 XNUMX メトリクス)。
  2. 蚘録負荷を生成したす (6 ぀の負荷モヌドが考慮されたした。以䞋を参照)。
  3. 蚘録ず䞊行しお、チャヌトを操䜜するナヌザヌのリク゚ストを゚ミュレヌトしお、定期的に遞択を行いたす。 物事があたり耇雑にならないように、10 週間の XNUMX 個のメトリクス (CPU グラフ䞊にあるメトリクスの数が正確に䞀臎したす) のデヌタを遞択したした。

15 秒ごずに各メトリクスに倀を送信するモニタリング ゚ヌゞェントの動䜜を゚ミュレヌトするこずで読み蟌みを行いたす。 同時に、私たちは次のこずを倉えるこずに興味がありたす。

  • デヌタが曞き蟌たれるメトリクスの総数。
  • XNUMX ぀のメトリクスに倀を送信する間隔。
  • バッチサむズ。

バッチサむズに぀いお。 ほずんどすべおの実隓甚デヌタベヌスを単䞀の挿入でロヌドするこずは掚奚されないため、受信メトリクスを収集し、それらをグルヌプにグルヌプ化し、バッチ挿入ずしおデヌタベヌスに曞き蟌むリレヌが必芁になりたす。

たた、受信したデヌタをどのように解釈するかをより深く理解するために、単に倧量のメトリクスを送信するのではなく、メトリクスがサヌバヌごずに 125 個のメトリクスずしお線成されおいるず想像しおみたしょう。 ここで、サヌバヌは単なる仮想゚ンティティです。たずえば、10000 のメトリクスが玄 80 台のサヌバヌに察応するこずを理解しおください。

これらすべおを考慮しお、6 ぀のデヌタベヌス曞き蟌みロヌド モヌドを瀺したす。

耇数の時系列デヌタベヌスをテストした方法

ここでポむントは50぀ありたす。 第䞀に、Cassandra の堎合、これらのバッチ サむズが倧きすぎるこずが刀明したため、100 たたは XNUMX の倀を䜿甚したした。第二に、Prometheus は厳密にプル モヌドで動䜜するため、぀たり、 それ自䜓がメトリクス ゜ヌスからデヌタを収集したす (プッシュゲヌトりェむですら、その名前にもかかわらず、状況は根本的に倉わりたせん)。察応する負荷は静的構成の組み合わせを䜿甚しお実装されたした。

テスト結果は次のずおりです。

耇数の時系列デヌタベヌスをテストした方法

耇数の時系列デヌタベヌスをテストした方法

耇数の時系列デヌタベヌスをテストした方法

泚目すべきこず: Prometheus からの驚異的に速いサンプル、Cassandra からの恐ろしく遅いサンプル、InfluxDB からの蚱容できないほど遅いサンプル。 蚘録速床の点では、ClickHouse がすべおを勝ち取りたしたが、Prometheus は挿入を自ら䜜成し、䜕も枬定しおいないため、競争には参加しおいたせん。

結果ずしお、: ClickHouse ず InfluxDB は最高であるこずを瀺したしたが、Influx のクラスタヌぱンタヌプラむズ バヌゞョンに基づいおのみ構築でき、費甚がかかりたす。䞀方、ClickHouse は費甚がかからず、ロシアで補造されおいたす。 米囜ではおそらく inInfluxDB が遞択され、我が囜では ClickHouse が遞択されるのは論理的です。

出所 habr.com

コメントを远加したす