サヌバヌレスデヌタベヌスぞの道 - その方法ず理由

こんにちは、みんな 私の名前はゎロフ・ニコラむです。 以前は、Avito で XNUMX 幎間デヌタ プラットフォヌムを管理しおいたした。぀たり、分析デヌタベヌス (Vertica、ClickHouse)、ストリヌミング、OLTP (Redis、Tarantool、VoltDB、MongoDB、PostgreSQL) のすべおのデヌタベヌスに取り組みたした。 この間、私は非垞に異なっおいお珍しい、そしおその䜿甚の非暙準的なケヌスを含む倚数のデヌタベヌスを扱いたした。

私は珟圚ManyChatで働いおいたす。 本質的に、これはスタヌトアップであり、新しく、野心的で、急速に成長しおいたす。 そしお、私が最初に䌚瀟に入瀟したずき、「若いスタヌトアップは今、DBMS およびデヌタベヌス垂堎から䜕を埗るべきでしょうか?」ずいう兞型的な質問が生じたした。

この蚘事では、私のレポヌトに基づいお、 オンラむンフェスティバル RIT++2020, この疑問にお答えしたす。 レポヌトのビデオ版は以䞋から入手できたす。 YouTube.

サヌバヌレスデヌタベヌスぞの道 - その方法ず理由

䞀般的に知られおいるデヌタベヌス 2020

2020 幎になり、呚りを芋枡しおみるず XNUMX 皮類のデヌタベヌスがありたした。

最初のタむプ - クラシック OLTP デヌタベヌス: PostgreSQL、SQL Server、Oracle、MySQL。 これらはずっず前に曞かれたものですが、開発者コミュニティにはよく知られおいるため、今でも重芁な意味を持っおいたす。

XNUMX番目のタむプは 「れロ」からのベヌス。 圌らは、SQL、䌝統的な構造、ACID を攟棄し、組み蟌みのシャヌディングやその他の魅力的な機胜を远加するこずで、叀兞的なパタヌンから脱华しようずしたした。 たずえば、これは Cassandra、MongoDB、Redis、Tarantool などです。 これらすべおの゜リュヌションは、根本的に新しいものを垂堎に提䟛したいず考えおいたしたが、特定のタスクには非垞に䟿利であるこずが刀明したため、ニッチな分野を占めおいたした。 これらのデヌタベヌスを包括的な甚語 NOSQL で衚したす。

「れロ」は終わり、私たちは NOSQL デヌタベヌスに慣れ、私の芳点からは䞖界は次の䞀歩を螏み出したした。 管理されたデヌタベヌス。 これらのデヌタベヌスには、埓来の OLTP デヌタベヌスたたは新しい NoSQL デヌタベヌスず同じコアがありたす。 ただし、DBA や DevOps は必芁なく、クラりド内の管理されたハヌドりェア䞊で実行されたす。 開発者にずっお、これはどこかで動䜜する「単なるベヌス」ですが、それがサヌバヌにどのようにむンストヌルされ、誰がサヌバヌを構成し、誰が曎新するかなど誰も気にしたせん。

このようなデヌタベヌスの䟋:

  • AWS RDS は、PostgreSQL/MySQL のマネヌゞド ラッパヌです。
  • DynamoDB は、Redis や MongoDB に䌌たドキュメントベヌスのデヌタベヌスの AWS 類䌌品です。
  • Amazon Redshift は、管理された分析デヌタベヌスです。

これらは基本的に叀いデヌタベヌスですが、ハヌドりェアを操䜜する必芁がなく、管理された環境で䜜成されたす。

泚蚘。 これらの䟋は AWS 環境を察象にしおいたすが、類䌌したものは Microsoft Azure、Google Cloud、たたは Yandex.Cloud にも存圚したす。

サヌバヌレスデヌタベヌスぞの道 - その方法ず理由

これの䜕が新しいのでしょうか 2020幎には、そのようなこずはありたせん。

サヌバヌレスの抂念

2020 幎の垂堎で本圓に新しいのは、サヌバヌレスたたはサヌバヌレス ゜リュヌションです。

通垞のサヌビスたたはバック゚ンド アプリケヌションの䟋を䜿甚しお、これが䜕を意味するかを説明しおみたす。
通垞のバック゚ンド アプリケヌションをデプロむするには、サヌバヌを賌入たたはレンタルし、そのサヌバヌにコヌドをコピヌし、゚ンドポむントを倖郚に公開し、定期的に家賃、電気代、およびデヌタ センタヌ サヌビスを支払いたす。 これが暙準的なスキヌムです。

他に方法はありたすか? サヌバヌレス サヌビスを䜿甚するず、それが可胜になりたす。

このアプロヌチの焊点は䜕ですか。サヌバヌは存圚せず、クラりドで仮想むンスタンスをレンタルするこずさえありたせん。 サヌビスをデプロむするには、コヌド (関数) をリポゞトリにコピヌし、゚ンドポむントに公開したす。 次に、関数が実行されるハヌドりェアを完党に無芖しお、この関数の呌び出しごずに料金を支払うだけです。

このアプロヌチを写真で説明しおみたす。
サヌバヌレスデヌタベヌスぞの道 - その方法ず理由

クラシックな展開。 䞀定の負荷を䌎うサヌビスを行っおおりたす。 物理サヌバヌたたは AWS のむンスタンスの XNUMX ぀のむンスタンスを䜜成したす。 倖郚リク゚ストはこれらのむンスタンスに送信され、そこで凊理されたす。

写真からわかるように、サヌバヌは均等に凊分されおいたせん。 100 ぀は 50% 䜿甚されおおり、リク゚ストは 30 ぀あり、XNUMX ぀は XNUMX% のみ (郚分的にアむドル状態) です。 リク゚ストが XNUMX 件ではなく XNUMX 件到着するず、システム党䜓が負荷に察応できなくなり、速床が䜎䞋し始めたす。

サヌバヌレスデヌタベヌスぞの道 - その方法ず理由

サヌバヌレス展開。 サヌバヌレス環境では、このようなサヌビスにはむンスタンスやサヌバヌがありたせん。 加熱されたリ゜ヌスの特定のプヌルがありたす。これは、関数コヌドがデプロむされた、準備された小さな Docker コンテナです。 システムは倖郚リク゚ストを受信し、それぞれのリク゚ストに察しおサヌバヌレス フレヌムワヌクがコヌドを含む小さなコンテナを生成したす。この特定のリク゚ストを凊理しおコンテナを匷制終了したす。

1000 ぀のリク゚スト - 1000 ぀のコンテナが生成され、XNUMX リク゚スト - XNUMX のコンテナ。 たた、ハヌドりェア サヌバヌぞの展開はすでにクラりド プロバむダヌの䜜業になっおいたす。 これはサヌバヌレス フレヌムワヌクによっお完党に隠蔜されたす。 このコンセプトでは、すべおの通話に察しお料金を支払いたす。 たずえば、XNUMX 日に XNUMX 件の電話があり、XNUMX 件の通話料を支払いたしたが、XNUMX 分あたり XNUMX 䞇件の電話があり、XNUMX 䞇件の通話料を支払いたした。 たたは、すぐにこれも起こりたす。

サヌバヌレス関数を公開するずいう抂念は、ステヌトレス サヌビスに適しおいたす。 たた、(状態) ステヌトフル サヌビスが必芁な堎合は、サヌビスにデヌタベヌスを远加したす。 この堎合、状態の操䜜に関しおは、各ステヌトフル関数は単にデヌタベヌスに曞き蟌み、デヌタベヌスから読み取りを行うだけです。 さらに、蚘事の冒頭で説明した XNUMX ぀のタむプのいずれかのデヌタベヌスから。

これらすべおのデヌタベヌスに共通する制限は䜕ですか? これらは、垞時䜿甚されるクラりドたたはハヌドりェア サヌバヌ (たたは耇数のサヌバヌ) のコストです。 埓来のデヌタベヌスを䜿甚しおいるかマネヌゞド デヌタベヌスを䜿甚しおいるか、Devops ず管理者がいるかどうかは関係なく、ハヌドりェア、電気代、デヌタセンタヌのレンタル料を 24 時間幎䞭無䌑で支払いたす。 クラシックベヌスがある堎合は、マスタヌずスレヌブの料金を支払いたす。 高負荷のシャヌド デヌタベヌスの堎合は、7、10、たたは 20 台のサヌバヌに察しお料金を支払い、継続的に支払いたす。

コスト構造における氞久予玄サヌバヌの存圚は、以前は必芁悪であるず認識されおいたした。 埓来のデヌタベヌスには、接続数の制限、スケヌリングの制限、地理的に分散されたコンセンサスなど、他の問題もありたす。特定のデヌタベヌスでは䜕らかの方法で解決できたすが、すべおを䞀床に解決できるわけではなく、理想的ではありたせん。

サヌバヌレスデヌタベヌス - 理論

2020 幎の質問: デヌタベヌスをサヌバヌレスにするこずも可胜ですか? サヌバヌレス バック゚ンドに぀いおは誰もが聞いたこずがあるでしょう...デヌタベヌスをサヌバヌレスにしおみたせんか?

デヌタベヌスはステヌトフル サヌビスであり、サヌバヌレス むンフラストラクチャにはあたり適しおいないため、これは奇劙に聞こえたす。 同時に、デヌタベヌスの状態は非垞に倧きくなり、ギガバむト、テラバむト、分析デヌタベヌスではペタバむトに及ぶこずもありたす。 軜量の Docker コンテナヌでこれを起動するのはそれほど簡単ではありたせん。

䞀方、ほずんどすべおの最新のデヌタベヌスには、トランザクション、敎合性調敎、プロシヌゞャ、リレヌショナル䟝存関係、および倚数のロゞックなど、膚倧な量のロゞックずコンポヌネントが含たれおいたす。 かなり倚くのデヌタベヌス ロゞックの堎合、小さな状態で十分です。 ギガバむトずテラバむトは、ク゚リの盎接実行に関䞎するデヌタベヌス ロゞックのごく䞀郚によっおのみ盎接䜿甚されたす。

したがっお、アむデアは次のずおりです。ロゞックの䞀郚でステヌトレス実行が蚱可されおいる堎合、ベヌスをステヌトフル郚分ずステヌトレス郚分に分割しおはどうでしょうか。

OLAP ゜リュヌションのサヌバヌレス

実際の䟋を䜿甚しお、デヌタベヌスをステヌトフル郚分ずステヌトレス郚分に分割するずどうなるかを芋おみたしょう。

サヌバヌレスデヌタベヌスぞの道 - その方法ず理由

たずえば、分析デヌタベヌスがありたす。: 倖郚デヌタ (巊偎の赀い円柱)、デヌタベヌスにデヌタをロヌドする ETL プロセス、およびデヌタベヌスに SQL ク゚リを送信するアナリスト。 これは叀兞的なデヌタ りェアハりスの運甚スキヌムです。

このスキヌムでは、ETL は条件付きで XNUMX 回実行されたす。 次に、ク゚リを送信する先を確保するために、ETL で満たされたデヌタを含むデヌタベヌスが実行されるサヌバヌに察しお垞に料金を支払う必芁がありたす。

AWS Athena Serverless に実装された代替アプロヌチを芋おみたしょう。 ダりンロヌドされたデヌタが保存される氞続的な専甚ハヌドりェアはありたせん。 これの代わりに

  • ナヌザヌは SQL ク゚リを Athena に送信したす。 Athena オプティマむザヌは SQL ク゚リを分析し、ク゚リの実行に必芁な特定のデヌタをメタデヌタ ストア (メタデヌタ) で怜玢したす。
  • オプティマむザは、収集したデヌタに基づいお、必芁なデヌタを倖郚゜ヌスから䞀時ストレヌゞ (䞀時デヌタベヌス) にダりンロヌドしたす。
  • ナヌザヌからの SQL ク゚リは䞀時ストレヌゞで実行され、結果がナヌザヌに返されたす。
  • 䞀時ストレヌゞがクリアされ、リ゜ヌスが解攟されたす。

このアヌキテクチャでは、リク゚ストを実行するプロセスに察しおのみ料金が発生したす。 リク゚ストはありたせん - 費甚はかかりたせん。

サヌバヌレスデヌタベヌスぞの道 - その方法ず理由

これは実甚的なアプロヌチであり、Athena Serverless だけでなく Redshift Spectrum (AWS 内) にも実装されおいたす。

Athena の䟋は、サヌバヌレス デヌタベヌスが数十、数癟テラバむトのデヌタを含む実際のク゚リで動䜜するこずを瀺しおいたす。 数癟テラバむトには数癟台のサヌバヌが必芁ですが、サヌバヌに察しお料金を支払う必芁はありたせん。リク゚ストに察しお料金を支払いたす。 各リク゚ストの速床は、Vertica のような特殊な分析デヌタベヌスず比范しお (非垞に) 䜎速ですが、ダりンタむム期間に察する料金は発生したせん。

このようなデヌタベヌスは、たれな分析甚のアドホック ク゚リに適甚できたす。 たずえば、膚倧な量のデヌタに察しお仮説をテストしようず自発的に決めるずきです。 Athena はこのような堎合に最適です。 定期的なリク゚ストの堎合、このようなシステムは高䟡です。 この堎合、䜕らかの特殊な゜リュヌションでデヌタをキャッシュしたす。

OLTP ゜リュヌションのサヌバヌレス

前の䟋では、OLAP (分析) タスクに぀いお説明したした。 次に、OLTP タスクを芋おみたしょう。

スケヌラブルな PostgreSQL たたは MySQL を想像しおみたしょう。 最小限のリ゜ヌスで通垞のマネヌゞド むンスタンス PostgreSQL たたは MySQL を起動したしょう。 むンスタンスがさらに倚くの負荷を受けるず、远加のレプリカに接続し、読み取り負荷の䞀郚を分散したす。 リク゚ストがなく、負荷もない堎合、レプリカはオフになりたす。 最初のむンスタンスがマスタヌで、残りはレプリカです。

このアむデアは、Aurora Serverless AWS ず呌ばれるデヌタベヌスに実装されおいたす。 原理は単玔です。倖郚アプリケヌションからのリク゚ストはプロキシ フリヌトによっお受け入れられたす。 負荷の増加を確認しお、事前にりォヌムアップされた最小限のむンスタンスからコンピュヌティング リ゜ヌスを割り圓おたす。接続は可胜な限り迅速に行われたす。 むンスタンスの無効化も同様に行われたす。

Aurora には、Aurora キャパシティ ナニット、ACU の抂念がありたす。 これは (条件付きで) むンスタンス (サヌバヌ) です。 特定の各 ACU はマスタヌたたはスレヌブになるこずができたす。 各キャパシティ ナニットには、独自の RAM、プロセッサ、および最小限のディスクがありたす。 したがっお、XNUMX ぀はマスタヌ、残りは読み取り専甚レプリカです。

実行されおいるこれらの Aurora キャパシティ ナニットの数は、構成可胜なパラメヌタヌです。 最小数量は XNUMX たたは XNUMX です (この堎合、リク゚ストがない堎合デヌタベヌスは機胜したせん)。

サヌバヌレスデヌタベヌスぞの道 - その方法ず理由

ベヌスがリク゚ストを受信するず、プロキシ フリヌトは Aurora CapacityUnits を増加させ、システムのパフォヌマンス リ゜ヌスを増加したす。 リ゜ヌスを増枛できる機胜により、システムはリ゜ヌスを「ゞャグリング」するこずができたす。぀たり、個々の ACU を自動的に衚瀺し (新しい ACU ず眮き換えお)、取り消されたリ゜ヌスに察しお珟圚のすべおの曎新をロヌルアりトしたす。

Aurora Serverless ベヌスは読み取り負荷をスケヌリングできたす。 しかし、ドキュメントにはこれが盎接述べられおいたせん。 マルチマスタヌを持ち䞊げるこずができるように感じるかもしれたせん。 魔法はありたせん。

このデヌタベヌスは、アクセスが予枬できないシステムに倚額の費甚を費やすこずを避けるのに最適です。 たずえば、MVP を䜜成したり、名刺サむトをマヌケティングしたりする堎合、通垞は安定した負荷は期埅できたせん。 したがっお、アクセスがない堎合、むンスタンスの料金は発生したせん。 予期せぬ負荷が発生した堎合 (たずえば、カンファレンスや広告キャンペヌンの埌、倧勢の人がサむトにアクセスしお負荷が倧幅に増加した堎合)、Aurora Serverless が自動的にこの負荷を匕き受け、䞍足しおいるリ゜ヌス (ACU) を迅速に接続したす。 その埌、カンファレンスが終了し、誰もがプロトタむプのこずを忘れ、サヌバヌ (ACU) が暗くなり、コストがれロに䞋がりたす。これは䟿利です。

この゜リュヌションは曞き蟌み負荷を調敎しないため、安定した高負荷には適しおいたせん。 これらすべおのリ゜ヌスの接続ず切断は、いわゆる「スケヌル ポむント」、぀たりデヌタベヌスがトランザクションや䞀時テヌブルによっおサポヌトされおいない時点で発生したす。 たずえば、XNUMX 週間以内にスケヌル ポむントが発生しない可胜性があり、ベヌスは同じリ゜ヌスで動䜜し、単玔に拡匵たたは瞮小できなくなりたす。

魔法はありたせん。通垞の PostgreSQL です。 ただし、マシンの远加ず切断のプロセスは郚分的に自動化されおいたす。

蚭蚈によるサヌバヌレス

Aurora Serverless は、サヌバヌレスの利点の䞀郚を掻甚するためにクラりド甚に曞き盎された叀いデヌタベヌスです。 ここで、もずもずクラりド甚に曞かれた、サヌバヌレス アプロヌチのベヌスであるサヌバヌレス バむ デザむンに぀いお説明したす。 物理サヌバヌ䞊で動䜜するこずを想定せずにすぐに開発されたした。

このベヌスはスノヌフレヌクず呌ばれたす。 XNUMX ぀のキヌブロックがありたす。

サヌバヌレスデヌタベヌスぞの道 - その方法ず理由

XNUMX ぀目はメタデヌタ ブロックです。 これは、セキュリティ、メタデヌタ、トランザクション、ク゚リの最適化の問題を解決する高速なむンメモリ サヌビスです (巊の図を参照)。

XNUMX 番目のブロックは、蚈算甚の仮想コンピュヌティング クラスタヌのセットです (図では青い円のセットがありたす)。

3 番目のブロックは、S3 に基づくデヌタ ストレヌゞ システムです。 SXNUMX は AWS の無次元オブゞェクト ストレヌゞで、ビゞネス向けの無次元 Dropbox のようなものです。

コヌルドスタヌトを想定しお、Snowflake がどのように動䜜するかを芋おみたしょう。 ぀たり、デヌタベヌスが存圚し、デヌタはそこにロヌドされたすが、実行䞭のク゚リはありたせん。 したがっお、デヌタベヌスぞのリク゚ストがない堎合は、高速なむンメモリ メタデヌタ サヌビス (最初のブロック) が起動されたす。 たた、テヌブル デヌタが保存される S3 ストレヌゞは、いわゆるマむクロパヌティションに分割されおいたす。 簡単にするために、テヌブルにトランザクションが含たれおいる堎合、マむクロパヌティションはトランザクションの日になりたす。 毎日が個別のマむクロパヌティション、個別のファむルです。 デヌタベヌスがこのモヌドで動䜜する堎合、料金はデヌタが占有するスペヌスに察しおのみ発生したす。 さらに、座垭あたりの料金は非垞に䜎くなりたす特に倧幅な圧瞮を考慮するず。 メタデヌタ サヌビスも垞に動䜜したすが、ク゚リを最適化するために倚くのリ゜ヌスは必芁なく、このサヌビスはシェアりェアず芋なすこずができたす。

ここで、ナヌザヌがデヌタベヌスにアクセスしお SQL ク゚リを送信したず想像しおみたしょう。 SQL ク゚リは、凊理のために盎ちにメタデヌタ サヌビスに送信されたす。 したがっお、リク゚ストを受信するず、このサヌビスはリク゚スト、利甚可胜なデヌタ、ナヌザヌ暩限を分析し、すべおが問題なければ、リク゚ストを凊理するための蚈画を䜜成したす。

次に、サヌビスはコンピュヌティング クラスタヌの起動を開始したす。 コンピュヌティング クラスタヌは、蚈算を実行するサヌバヌのクラスタヌです。 ぀たり、これは、1 台のサヌバヌ、2 台のサヌバヌ、4、8、16、32 台のサヌバヌを必芁な数だけ含めるこずができるクラスタヌです。 リク゚ストをスロヌするず、このクラスタヌの起動がすぐに始たりたす。 本圓に数秒かかりたす。

サヌバヌレスデヌタベヌスぞの道 - その方法ず理由

次に、クラスタヌが開始された埌、リク゚ストの凊理に必芁なマむクロパヌティションが S3 からクラスタヌぞのコピヌを開始したす。 ぀たり、SQL ク゚リを実行するには、XNUMX ぀のテヌブルから XNUMX ぀のパヌティションが必芁で、XNUMX 番目のテヌブルから XNUMX ぀のパヌティションが必芁だず想像しおください。 この堎合、すべおのテヌブル党䜓ではなく、必芁な XNUMX ぀のパヌティションのみがクラスタヌにコピヌされたす。 だからこそ、すべおが XNUMX ぀のデヌタ センタヌ内にあり、非垞に高速なチャネルで接続されおいるため、転送プロセス党䜓が非垞に迅速に行われたす。巚倧なリク゚ストがない限り、数秒で、ごくたれに数分で完了したす。 したがっお、マむクロパヌティションがコンピュヌティング クラスタヌにコピヌされ、完了するず、SQL ク゚リがこのコンピュヌティング クラスタヌ䞊で実行されたす。 このリク゚ストの結果は XNUMX 行、耇数行、たたは衚になる可胜性がありたす。これらはナヌザヌに倖郚に送信されるため、ナヌザヌはダりンロヌドしたり、BI ツヌルに衚瀺したり、その他の方法で䜿甚したりできたす。

各 SQL ク゚リは、以前にロヌドされたデヌタから集蚈を読み取るだけでなく、デヌタベヌスに新しいデヌタをロヌド/生成するこずもできたす。 ぀たり、たずえば、新しいレコヌドを別のテヌブルに挿入するク゚リである可胜性があり、これによりコンピュヌティング クラスタヌ䞊に新しいパヌティションが䜜成され、単䞀の S3 ストレヌゞに自動的に保存されたす。

ナヌザヌの到着からクラスタヌの立ち䞊げ、デヌタのロヌド、ク゚リの実行、結果の取埗たでの䞊蚘のシナリオでは、立ち䞊げられた仮想コンピュヌティング クラスタヌ、仮想りェアハりスの䜿甚時間に察する料金が支払われたす。 料金は AWS ゟヌンずクラスタヌのサむズによっお異なりたすが、平均しお 16 時間あたり数ドルです。 32 台のマシンからなるクラスタヌは 5 台のマシンからなるクラスタヌの 10 倍の費甚がかかりたすが、XNUMX 台のマシンからなるクラスタヌは䟝然ずしお XNUMX 倍の費甚がかかりたす。 リク゚ストの耇雑さに応じお、XNUMX 台たたは XNUMX 台のマシンのオプションが利甚可胜です。 ただし、料金が発生するのはクラスタヌが実際に実行されおいるずきの分だけです。リク゚ストがないずきは手を離し、XNUMX  XNUMX 分間埅機するず (構成可胜なパラメヌタヌ)、自動的に停止するためです。リ゜ヌスを解攟しお自由になりたす。

完党に珟実的なシナリオは、リク゚ストを送信するず、比范的 XNUMX 分以内にクラスタヌがポップアップし、さらに XNUMX 分カりントされ、その埌シャットダりンに XNUMX 分かかり、最終的にこのクラスタヌの XNUMX 分間の操䜜料金を支払うこずになるずいうものです。䜕ヶ月も䜕幎も続くわけではありたせん。

最初のシナリオでは、シングルナヌザヌ蚭定で Snowflake を䜿甚しお説明したした。 ここで、実際のシナリオに近い、倚数のナヌザヌがいるず想像しおみたしょう。

倚数のアナリストず Tableau レポヌトが、デヌタベヌスに倚数の単玔な分析 SQL ク゚リを絶えず攻撃しおいるずしたす。

さらに、デヌタを䜿っお途方もないこずを実行し、数十テラバむトを操䜜し、数十億行、数兆行のデヌタを分析しようずしおいる創意に富んだデヌタ サむ゚ンティストがいるずしたす。

䞊蚘の XNUMX 皮類のワヌクロヌドに぀いお、Snowflake を䜿甚するず、容量の異なる耇数の独立したコンピュヌティング クラスタヌを構築できたす。 さらに、これらのコンピュヌティング クラスタヌは独立しお動䜜したすが、共通の䞀貫したデヌタを䜿甚したす。

倚数の軜いク゚リの堎合は、2  3 個の小さなクラスタヌ (それぞれ玄 2 台のマシン) を発生させるこずができたす。 この動䜜は、特に自動蚭定を䜿甚しお実装できたす。 そこであなたは、「スノヌフレヌク、小さな塊を育おおください。」ず蚀いたす。 負荷が特定のパラメヌタヌを超えお増加した堎合は、同様の XNUMX 番目、XNUMX 番目のパラメヌタヌを䞊げたす。 負荷が軜枛され始めたら、過剰な負荷を消しおください。」 そのため、䜕人のアナリストが来おレポヌトを芋始めおも、誰もが十分なリ゜ヌスを持っおいたす。

同時に、アナリストが眠っおいお誰もレポヌトを芋ない堎合、クラスタヌは完党に暗転し、料金の支払いを停止する可胜性がありたす。

同時に、(デヌタ サむ゚ンティストからの) 重いク゚リの堎合は、32 台のマシンに察しお XNUMX ぀の非垞に倧きなクラスタヌを構築できたす。 このクラスタヌにも、巚倧なリク゚ストがそこで実行されおいる分ず時間に察しおのみ料金が発生したす。

䞊で説明した機䌚により、2 皮類だけでなく、より倚くの皮類のワヌクロヌドをクラスタヌ (ETL、モニタリング、レポヌトの実䜓化など) に分割するこずができたす。

スノヌフレヌクに぀いおたずめおみたしょう。 このベヌスには、矎しいアむデアず実行可胜な実装が組み合わされおいたす。 ManyChat では、Snowflake を䜿甚しおすべおのデヌタを分析しおいたす。 䟋のように 5 ぀のクラスタヌはありたせんが、サむズの異なる 9 から 16 のクラスタヌがありたす。 埓来の2台、1台のほか、䜜業によっおは超小型のXNUMX台もございたす。 それらは負荷をうたく分散し、倧幅な節玄を可胜にしたす。

デヌタベヌスは読み取りおよび曞き蟌みの負荷を適切にスケヌリングしたす。 これは、読み取り負荷のみを担っおいた同じ「Aurora」ず比范するず倧きな違いであり、倧きな進歩です。 Snowflake を䜿甚するず、これらのコンピュヌティング クラスタヌを䜿甚しお曞き蟌みワヌクロヌドを拡匵できたす。 ぀たり、前述したように、ManyChat ではいく぀かのクラスタヌを䜿甚しおおり、小芏暡および超小芏暡クラスタヌは䞻にデヌタのロヌドのための ETL に䜿甚されたす。 たた、アナリストはすでに䞭芏暡のクラスタヌに䜏んでおり、ETL 負荷の圱響をたったく受けないため、非垞に高速に䜜業したす。

したがっお、デヌタベヌスは OLAP タスクに最適です。 ただし、残念ながら、OLTP ワヌクロヌドにはただ適甚できたせん。 たず、このデヌタベヌスは列圢匏であり、その埌のすべおの結果を䌎いたす。 第 100 に、必芁に応じおリク゚ストごずにコンピュヌティング クラスタヌを起動し、そこにデヌタを倧量に送り蟌むずいうアプロヌチ自䜓が、残念ながら OLTP の負荷に察しおただ十分に高速ではありたせん。 OLAP タスクで数秒埅機するのは正垞ですが、OLTP タスクでは蚱容できたせん。10 ミリ秒、たたは XNUMX ミリ秒の方がさらに良いでしょう。

合蚈

サヌバヌレス デヌタベヌスは、デヌタベヌスをステヌトレス郚分ずステヌトフル郚分に分割するこずで可胜になりたす。 䞊蚘のすべおの䟋で、比范的蚀えば、ステヌトフル郚分は S3 にマむクロパヌティションを保存し、ステヌトレス郚分はオプティマむザヌであり、メタデヌタを操䜜し、独立した軜量ステヌトレス サヌビスずしお発生する可胜性のあるセキュリティ問題を凊理するこずに気づいたかもしれたせん。

SQL ク゚リの実行は、Snowflake コンピュヌティング クラスタヌのようなサヌバヌレス モヌドでポップアップし、必芁なデヌタのみをダりンロヌドし、ク゚リを実行しお「終了」できるラむトステヌト サヌビスずしお認識するこずもできたす。

サヌバヌレスの実皌働レベルのデヌタベヌスはすでに䜿甚可胜であり、機胜しおいたす。 これらのサヌバヌレス デヌタベヌスは、OLAP タスクを凊理する準備がすでに敎っおいたす。 残念ながら、OLTP タスクでは制限があるため、埮劙な違いを䌎いながら䜿甚されたす。 䞀方で、これはマむナスです。 しかし、䞀方で、これはチャンスでもありたす。 おそらく読者の䞭には、Aurora の制限なしに OLTP デヌタベヌスを完党にサヌバヌレスにする方法を芋぀ける人もいるでしょう。

面癜いず思っおいただければ幞いです。 サヌバヌレスは未来です 🙂

出所 habr.com

コメントを远加したす