Microsoft Build 2024 では Serverless Computing 領域で注目度の高いアップデートが多かったですが、Cosmos DB も Generative AI に対応したデータストアとして進化を続けています。昨今は Generative AI を意識したアップデートが Azure 全体的に多いのですが、Cosmos DB は堅実的なアップデートも行ってくれるので安心して使い続けられます。
アナウンスのあった機能は以下の Cosmos DB 公式ブログにまとまっています。
しかし個人的に MongoDB vCore には興味が全くないので、NoSQL 領域に特化して気になったアップデートについてまとめることにします。
- Vector Search が Public Preview
- Computed Properties が GA
- Index Advisor が GA
- Serverless から Provisioned Throughput への移行が Public Preview
- Go SDK が Stable Release に移行
例によって特に気になるアップデートについては個別でブログに書く予定です。確実に Vector Search については書くことになるはずです。
Vector Search が Public Preview
これまで Azure で Vector Search を行うためには AI Search / Azure Data Explorer / Cosmos DB for MongoDB vCore といったマネージドサービスか、Qdrant などをコンテナーで動かすといった方法が必要でしたが Cosmos DB for NoSQL が Vector Search に対応したので、簡単にパフォーマンスと信頼性の高い RAG アプリケーションを開発できるようになりました。
Cosmos DB の新機能は発表とほぼ同時に日本語を含むクオリティの高いドキュメントが公開されるので、基本的な概念や使い方はこちらを参照してください。
Vector Search を使うには最初に Features から Vector Search for NoSQL API を有効化する必要がありますが、既存のアカウントでは失敗することが多かったので新規作成するのが安全のようです。
Container についても新規作成時にしか Vector Search に必要な設定が行えないのと、データベース共有スループットには非対応なので注意する必要があります。
ちなみに Cosmos DB for NoSQL の Vector Search 最大の特徴である DiskANN を使ったインデックスは、別途フォームからの申請が必要になります。確実に試しておきたいので、早めに申請しておきましょう。
Computed Properties が GA
去年の Build で Public Preview となった Computed Properties がついに GA しました。既存アイテムの値を利用して新しくプロパティを作る機能で、これまでは Model レベルで行っていたことが Cosmos DB レベルで定義出来るようになっています。
ドキュメントはまだ Preview 扱いになっていますが、間もなく外されるはずなので安心してください。
Computed Properties の最大の特徴はインデックスの対象になる点です。例えば SQL の WHERE 句で大文字に変換してマッチングしていたようなケースでは、Computed Properties を使って大文字に変換したプロパティを用意しておけば、インデックスが効くので効率的です。
Index Advisor が GA
パフォーマンスチューニング向けの機能として、Index Advisor が GA しています。名前の通り実行された SQL でどのインデックスが使われて、どのインデックスが足りていないかを教えてくれる機能です。
Cosmos DB はデフォルトで全てのプロパティに対してインデックスが作成されるので、何もしなくても満足できるパフォーマンスが得られますが、RU の消費という観点では効率的ではないケースもあります。そして複雑なクエリの場合にはインデックスが効かないケースがあります。
そういった場合にクエリ実行時のオプションで PopulateIndexMetrics
を有効化すると、人間が読めるフォーマットでインデックスの推奨事項を教えてくれます。
複合インデックスや範囲インデックスなどは個別に作る必要があるので、そういった場合に Index Advisor は有益な情報源になるはずです。負荷の高い機能なので問題のある SQL を事前に特定しておき、ローカルで実行して確認するといった手順が必要になります。
Serverless から Provisioned Throughput への移行が Public Preview
少し変わり種の機能という感じはしますが、Serverless で作成したアカウントを Provisioned Throughput に移行する機能が Public Preview となっています。
ドキュメントも用意されていますが、ほぼ公式ブログの内容と同じなので読むところはないかも知れません。
Serverless は利用率が低い場合には Provisioned Throughput よりコスト的に有利になりますが、RU の単価が大きく異なるため利用率が高くなると価格が逆転することになります。
そのような場合に今回の機能を使うと、シームレスに Provisioned Throughput へ移行することが出来ます。利用するには Preview 登録が必要になり、有効化されるまで時間がかかるようなので注意です。
移行中は管理操作が出来ないという制限は書かれているので、データへのアクセス自体は行えるのではないかと考えていますが、この辺りは明言されていないので確認した方が良さそうです。
Go SDK が Stable Release に移行
Cosmos DB for NoSQL は多くの言語向けに SDK が用意されていますが、Go SDK は割と新しいため Stable Release まで達していませんでした。最近は Dapr など需要が多いので優先度が上がったのかもしれません。
現時点での最新版は v1.0.1
なっているので、既に Go SDK の Preview 版を利用している場合には確実にアップデートしておきたいですね。
どのあたりの機能まで対応しているのかは把握していませんが、Stable Release になってマルチリージョン周りの機能が追加されているので、副次的に Dapr などでのサポート改善も期待できそうです。