【要約】【DynamoDB × OpenSearch】検索が苦手な DynamoDB に OpenSearch を足してみた [Qiita_Trend] | Summary by TechDistill
> Source: Qiita_Trend
Execute Primary Source
// Problem
在庫管理システムの開発において、DynamoDBの検索機能の限界が課題となった。GSIによる絞り込みは可能だが、以下の制約により柔軟な検索が困難である。
- ・商品名などの部分一致検索ができない。
- ・複数条件の組み合わせが効率的に行えない。
- ・パーティションを跨いだ横断検索が不可能である。
// Approach
検索エンジンとしてOpenSearch Serverlessを採用し、DynamoDBとの併用構成を構築した。データの同期と検索経路の分離により、要件に応じた使い分けを実現している。
- ・DynamoDB StreamsとOSISを用いてデータを同期。
- ・OpenSearch Serverless (NextGen) でコストを抑制。
- ・検索用LambdaをDynamoDB用とOpenSearch用で分離。
// Result
検索要件に応じた最適な使い分けの基準が明確になった。OpenSearchは複雑な検索を高速に処理できる一方、単純な検索ではDynamoDBに劣る。
- ・複合条件検索を45〜60msで実現。
- ・倉庫横断検索も可能にした。
- ・NextGenのコールドスタート(約14秒)を確認。
- ・OSISの最小コスト(約$175/月)を特定。
Senior Engineer Insight
> 検索要件の「振り分け」が鍵となる。全ての検索をOpenSearchに移すのではなく、GSIで済むものはDynamoDBに留めるべきだ。運用面では、OSISの最小課金とDynamoDB Streamsの24時間制限に注意せよ。低頻度な更新なら、OSISではなくLambdaによるCDC構成を検討すべきである。