|
今日、データ分析はもはや社内開発者だけのものではありません。ビジネス向けのデータ分析システムを構築する際には、どのデータベースバックエンドが最も適しているかを判断する必要があります。 プログラマーの直感としては、「使い慣れたデータベース(PostgreSQLやMySQLなど)を選ぶ」ということになるかもしれません。データウェアハウスは、コアBIダッシュボードやレポート以外にも機能を拡張できますが、ビジネス関係者向けのデータ分析をサポートすることは依然として重要な機能です。そのため、この機能のパフォーマンスを確保するには、適切なツールを選択することが不可欠です。 重要な問題はユーザーエクスペリエンスにあります。以下は、データ分析作業をサポートするための重要な技術的論点です(Apache Druidを例に挙げています)。 低遅延特性クエリをキューで待つのは非常にストレスフルなことです。レイテンシに関連する要因には、データ量、データベースの処理能力、ユーザー数とAPI呼び出し数、そしてクエリを実行するアプリケーションをサポートするデータベースの能力などがあります。 大規模なデータセットを扱う場合、オンライン分析処理(OLAP)データベースをベースにインタラクティブなデータエクスペリエンスを構築する方法はいくつかありますが、常にいくつかの犠牲を伴います。事前計算クエリはパフォーマンスを著しく低下させ、アーキテクチャを硬直化させる可能性があります。事前集計はデータの粒度を高める可能性があります。また、最近のデータを処理すると、データの整合性が損なわれる可能性があります。 「妥協のない」ソリューションとは、大規模なインタラクション向けに最適化されたアーキテクチャとデータ形式を選択することであり、Apache Druid は最新の分析プログラムをサポートするように設計されたそのようなリアルタイム データベースです。
高可用性開発チームが社内レポート用のバックエンドを構築している場合、数分、あるいはそれ以上のダウンタイムが本当に深刻なのでしょうか?実はそうではありません。したがって、一般的なOLAPデータベースやデータウェアハウスでは、計画外のダウンタイムやメンテナンスは許容されます。 しかし、顧客向けに外部分析アプリケーションを構築している場合、データ障害は顧客満足度、収益、そしてもちろん週末の休息時間にも深刻な影響を与える可能性があります。そのため、外部分析アプリケーションのデータベースでは、レジリエンス(高可用性とデータの永続性)を最優先事項とする必要があります。 レジリエンス(回復力)を考慮するには、設計基準を考慮する必要があります。ノードまたはクラスター全体の障害を完全に回避できるでしょうか?データ損失の影響はどの程度深刻でしょうか?アプリケーションとデータのセキュリティを確保するためにどのような作業が必要でしょうか? サーバー障害に関しては、従来はマルチノードサービスとバックアップメカニズムによる耐障害性確保が一般的でした。しかし、顧客向けのアプリケーションを構築する場合、データ損失に対する脆弱性ははるかに高くなります。定期的なバックアップでは、この問題を完全に解決することはできません。 Apache Druid のコア アーキテクチャには、この問題に対するソリューションが組み込まれています。これは本質的に、予期しないイベント (発生したばかりのものも含む) が発生してもデータが失われないように設計された、強力でありながらシンプルな復元力のあるアプローチです。 Druidは、オブジェクトストレージ内の共有データの自動マルチレベルレプリケーションにより、高可用性(HA)と耐久性を実現します。ユーザーが期待するHA機能に加え、継続的なバックアップメカニズムも備えており、クラスタ全体に問題が発生した場合でも、データベースを自動的に保護し、最新の状態に復元します。 マルチユーザー優れたアプリケーションは、大規模なユーザーベースに対応しながら魅力的なエクスペリエンスを提供する必要があるため、高い同時実行性を実現するバックエンドの構築が不可欠です。アプリケーションがクラッシュして顧客に不満を抱かせたくはありません。同時ユーザー数ははるかに少なく、制限も厳しいため、内部レポートアーキテクチャではこの点を考慮する必要はありません。そのため、内部レポートに使用されるデータベースは、高同時実行性アプリケーションには適さない可能性があるのが現実です。 高い同時実行性を実現するデータベースを構築するには、CPU使用率、スケーラビリティ、そしてコストのバランスを取ることが不可欠です。同時実行性の問題を解決する一般的なアプローチは、ハードウェアへの投資を増やすことです。論理的には、CPUの数を増やせば同時クエリの数が増えるはずです。確かにその通りですが、コストの増加は甚大です。 より良いアプローチは、Apache Druidのようなデータベースを使用することです。Apache Druidは、CPU使用率を削減する最適化されたストレージとクエリエンジンを備えています。ここでのキーワードは「最適化」です。データベースは不要なデータを読み取るべきではありません。Apache Druidを使用すると、インフラストラクチャはより多くのクエリ操作を同時に処理できます。 開発者がApache Druidを使用して外部分析アプリケーションを構築する主な理由の一つは、コスト削減です。Apache Druidは、高度に最適化されたデータ形式と、検索エンジン業界から取り入れたマルチレベルインデックスおよびデータ削減アルゴリズムを組み合わせることで、必要な処理量を最小限に抑えます。 Apache Druid は、他のデータベースとは比べものにならないほどの処理効率を実現しています。1秒あたり数十テラバイトから数千テラバイト、さらにはペタバイト規模のクエリをサポートできます。 現在に焦点を当て、未来を思い描く分析アプリケーションはユーザーにとって非常に重要なので、適切なデータ アーキテクチャを構築することが不可欠です。 最初から間違ったデータベースを選んでしまい、後々スケールアップで頭を悩ませるのは避けたいものです。Apache Druidは小規模な環境から始め、簡単に拡張してあらゆるアプリケーションに対応できます。Apache Druidには優れた公式ドキュメントが用意されており、もちろんオープンソースなので、ぜひ試してみて、すぐに使い始めてみませんか? |