AIはデータベースとストリーミング・システムの最適化分野でどのようにゲームを変えることができるか

<font color="Grey">*[How AI can change the game in the database and streaming system optimization field](https://aiven.io/blog/ai-in-database-and-streaming-system-optimization)の翻訳です。*</font>

2024年1月10日

# AIはデータベースとストリーミングシステムの最適化分野でどのようにゲームを変えることができるか

AIを活用した最適化プロセスの正味の結果は、データ体験の向上だけでなく、開発者の生産性の向上でもある。チームが自動化できることを認識すれば、改善によってスピードアップが図れるだけでなく、コストも削減できる。

データベースの最適化は、DBAがメインフレームで作業していた初期の時代から、分散システムへの移行を経て、今日に至るまで、常に苦闘し続けている。今日のエンジニアは、多種多様なデータ・システムとデータ・アーキテクチャを管理している。クラウドプラットフォームが導入されると、データストリーミングテクノロジーの多用に伴い、多様性は爆発的に増加した。この多様性を管理するという課題は、一人の人間や専門家のチームでさえ管理できる範囲をすぐに超えてしまい、克服できないものとなった。


## 最適化の現状


今日、改善や最適化を提案するツールは限られている。その選択肢は、いくつかの商用製品、やや停滞気味のオープンソースツール、そして多様な最適化機能を提供する一般的なデータベースプラットフォームのいくつかの拡張機能です。最適化に関しては、自動化と非自動化という2つの方法を採用することができます。


自動化されていない側では、ほとんどのデータベースが、プログラマーがパフォーマンスを可視化し、最適化を自動化するための基本的なツールを提供しています。これらの基本的なツールは、商用製品に含まれているか、オープンソースのデータテクノロジーのコミュニティの一部となっている。このようなツールは、プロファイリング、モニタリング、バキューム、ランタイム自体のコンフィギュレーションの微調整を可能にする。また、最も革新的なテクノロジーは、クエリを最適化する方法や、インデックスを追加するタイミングを指示してくれる。これらは主にリレーショナル・データベースを中心としたもので、データベース内部を理解する必要がある。


自動化された側面では、パフォーマンスを最適化するためにインデックスを自律的に構築するオープンソースの拡張機能やツールがあり、自動化を推進しテストするためのメトリクスを取得している。商用ソフトウェアを利用しない限り、自動化されたものはあまりない。[EverSQL by Aiven](<https://eversql.com/>)の技術を含め、インデックスの選定を自動化してくれる会社がこの分野にはあります。もう一つの側面は、与えられたシステムの設定です。これらのツールは特定のデータベースの設定を調べますが、データベースのワークロードの運用性については調べない傾向があります。構成のチューニングはパフォーマンスに大きな影響を与える可能性があります。これらのテクニックはすべて、今日の分散リレーショナル・データベースにのみ焦点を当てていることに留意してください。


## ストリーミングシステムに新しいテクニックを適用して解決する


将来的には、リレーショナル・データベースと同じ問題を解決するために、AIを幅広く応用することになるだろう。しかし、今日の大規模なデータセットは、人気の高いApache Kafkaソリューションのようなストリーミング・システムを経由して流れており、チューニングや最適化には複雑なニーズがある。Kafkaのチューニングの例としては、Kafkaサーバーのクラスタ間でデータを自動分割してワークロードのバランスを確保する、Kafkaトピックにコンフィギュレーション設定を適用して適切なリテンションをサイズ設定する、階層型ストレージの使用を自動化する、などがある。さらに低いレベルでは、トピックのセグメント・サイズと圧縮を変更して、所定のサイズのKafkaクラスターからのパフォーマンス向上をさらに追求することができます。


Kafka以外でも、非リレーショナル・データベースには膨大なデータセットが存在する。コミュニティで見られる例の1つに、OpenSearchのパフォーマンスを向上させる機会がある。現在のところ、OpenSearchの最適化を目的とした製品は不足しているが、商用ソフトウェアでは、マッピングやテンプレートの使い方を最適化することで、パフォーマンスを向上させているものもある。特定のインデックスに対して、最適なリフレッシュ間隔、シャード数、レプリカ数を設定することができます。Aivenを使用している場合、最適化はさらに進めることができる。OpenSearchクラスタにおけるライトバック圧力の解決策として、Kafkaをバッファとして使用する方法があります。Kafkaは受信データをキューに入れ、OpenSearchの負荷を軽減することができる。こうすることで、より大きなOpenSearchクラスタへの支払いを回避し、コストを削減することができる。


インフラを最適化する作業が終わったら、データストアに影響を与えているクエリのチューニングに集中することができる。リレーショナル・データベースの分野での教訓から、OpenSearchのような他の分野での最適化を学ぶことができる。キャッシングパラメータを調整したり、フィルタリングの提案をユーザーに提供したりすることで、クエリのパフォーマンスをさらに向上させることができます。さらに、作業負荷の仕様に基づいて、ヒープ・サイズのようなOpenSearch JVMの低レベルの設定をチューニングし始めることができます。最後に、ディスク上のデータ構造に基づいてクエリ・パフォーマンスを向上させることができる、doc 値と \_sourceid 設定を含むインデックスにベスト・プラクティスを適用することができます。


## AIはデータインフラの最適化にどのように役立つか


これまでのところ、市場に出回っているソリューションのほとんどは、データ専門家がクラスタ・ワークロードの健全性を監視し、その観察に基づいてノブをチューニングするという、人力ベースのものだ。しかし、このアプローチは拡張性に欠ける。監視するクラスタの数が増え、データ・プロジェクトに関わるテクノロジーの種類が増える中、監視、異常の把握、手動での対処を人間に頼ることは、将来性がなく、価格的にも無理がある。専門家が病欠しただけで、遅延やダウンタイムが発生し、関連する経済的な影響が生じる可能性がある。


そこでAIが役立つ。データ・インフラストラクチャーのクラスターを自動的に監視し、異常を特定し、実施すべきベスト・プラクティスに関する提案を提供することで、人間の負担を減らし、生産性を最適化し、データ・インフラストラクチャー全体のパフォーマンスとコストを向上させることができます。さらに、パフォーマンス最適化の提案を開発者やデータ専門家にプッシュすることで、従業員全体のデータ・リテラシーと教育を強化することができます。


## 最適化の結果


AIによる最適化プロセスの正味の結果は、データ体験の向上だけでなく、開発者の生産性と教育の向上でもある。チームが何が可能で何が自動化できるかを認識すれば、改善によってスピードが向上するだけでなく、無駄なインフラを削除したり再利用したりできるため、コストを削減することができます。Aivenの目標は、お客様のプランのライトサイジングを支援し、コストに直接影響を与え、収益を改善することです。私たちは、AIを活用した最適化技術を、主要なオープンソースデータベースやデータストリーミング技術の製品ポートフォリオに組み込むことができる未来を楽しみにしています。