モバイルアプリを開発する際、多くの場合においてWebサーバーとのデータ送受信が発生します。完全にオフラインで動作するアプリというのは多くないでしょう。

その際、Webサーバーの内部ではデータベースとデータの授受が行われます。たとえば認証データや商品データなどが該当します。

多くの場合、データベースはWebサービスのパフォーマンスにおいて大きな役割を担います。データベースサーバーのスペックが高かったり、効率的なスキーマになっているかどうか、効率的なクエリーを実行しているかによってパフォーマンスが大きく変わります。

今回の記事ではそうしたデータベースを利用するのにあたって、AIがどう役立てられるかを紹介します。

チューニング

AWSに特化したデータベースチューニングサービスとしてOtterTuneが挙げられます。Amazon RDSやAuroraと接続するだけで自動的にメタデータやクエリー、スキーマ、設定を収集します。それらの収集データに基づいて最適化案を提示してくれます。

どちらかというと、運用時に便利なサービスです。OtterTuneを使うことでデータベースサーバーのパフォーマンスを向上させたり、コスト削減も実現できそうです。

チャットボット

Postgres.aiはPostgreSQL特化型のAIベースの最適化サービスです。データベース移行に伴うテストをCI/CDパイプラインに組み込むことで、データベースに関連したサービスダウンタイムを避けられます。

そして、クエリーの最適化機能としてJoe BotというバーチャルDBAをチャットで提供しています。クエリーを解析して、より良い書き方を提案してくれます。チャット形式というのが面白いです。

SQL ChatもSQLに関するチャットボットです。MySQLなど様々なデータベースに関する質問が行えます。実際のデータベースに接続し、そのスキーマ構造に合わせた回答も得られます。

Vannaはクエリーを表示せず、接続したデータベースと自然言語で対話できるUIを提供しています。まるでデータベースとチャットできる感覚です。結果はテーブルで表示したり、グラフ表示も行えます。

クエリー生成

さらに一歩進めて、自然言語からクエリーを生成してしまうのがAI HelperBotです。現在は日本語は使えないようですが、テキストでどういったデータを取得したいかを提示するだけで最適なクエリーを生成してくれます。

対象となるデータベーススキーマをインポートしたり、実際のデータベースに接続することもできます。そうすることで、実際のスキーマ構造に合わせたクエリー文字列が生成されます。

デスクトップアプリ

ChatGPT 3.5を使ったデータベースクライアントアプリがDB Pilotです。自然言語からクエリーを生成したり、難解なクエリーを説明してもらうこともできます。

さらにクエリーをコードに書き換えたり、逆にコードからクエリーに変換することもできます。クエリーの入力にローカルファイルを指定したり、逆に結果をファイルとして書き込むこともできます。

macOS向けのソフトウェアになります。

AIによるメリット

データベースを利用した開発、運用時においてAIを利用するメリットは幾つか考えられます。

運用コストの低減

これまでクエリーの見直しではなくデータベースサーバーのスペックによってパフォーマンスを上げていた場合、クエリーや設定の見直してデータベースサーバーの運用コストを下げられる可能性があります。

マネージド系はもちろん、BigQueryなどに対しても大きな効果が見込まれるでしょう。

開発効率化

最近ではO/Rマッパーを利用する機会が増えていますが、よりパフォーマンスを求める場合にはクエリーを記述することでしょう。その際、より良いクエリーの提案をしてくれます。

もちろん、生成されるクエリーに関する責任はプログラマーにあります。正しい絞り込み条件になっているか、欲しいカラムが取得できるかなどを確認しなければなりません。

非エンジニア部門の負担減

これまでデータベースからデータを抽出する際にはクエリーを記述する必要がありました。これはエンジニアであれば問題ありませんが、マーケティング部門などエンジニアではない方々も習得する必要があったはずです。

チャットボットやクエリーを生成してくれるサービスを使うことで、クエリーを習得せずにデータベースにアクセスできるようになります。そうすることで運用負荷は大幅に減少できるはずです。

まとめ

データベースはAIを利用することで、その開発体験や運用体験が大きく変わる可能性を秘めていそうです。ぜひ積極的にトライしたい分野です。

データベースのパフォーマンスは利用者の体験にも大きく影響します。よりよく運用できるよう、こうしたツールを使いこなしましょう。