Search API詳細解説シリーズ
タイトル | |
Part1 | Search API 概要説明 |
Part2 | Search APIの使い方 登録・削除編 |
Part3 | Search APIの使い方 検索編 |
Part4 | Search API 詳細 検索性能編 |
Part5 | Search API 詳細 反映速度編(このページです) |
Part6 | Search API 詳細 限界値編 |
みなさん、こんにちは。
前回はSearch APIの検索性能を調査し、検索に引っかかる単語、引っかからない単語の規則性が少しは分かったかと思います。
今回はPart5「Search API 詳細 反映速度編」と題しまして、大量のDocumentの登録を実行してから、どれくらいの時間で登録できて、検索に反映されるのかを調べたいと思います。
Search APIのDBはDatastore同様に「Eventual consistency」を使っています。
「Eventual consistency」なので、登録したDocumentは複数のデータセンターで管理されています。
そのため、大量データを登録・削除処理を行った場合は、更新遅延が発生する場合が考えられます。
※参考URL: https://cloud.google.com/appengine/docs/java/search/#Java_Consistency
本記事では、その遅延が一体どれほどのものなのか、200件、500件、1000件のデータの登録を行って調べます。
データの用意と調査方法
登録するDocumentのFieldの値と構成は、Part2の「1.Documentの登録」のサンプルコードの値をそのまま使います。
調査方法は、登録用のプログラムと検索用のプログラムを用意し、JMeter 2.12を使ってそれぞれの処理URLにリクエストを投げます。
?調査結果
登録件数 (件) |
登録 |
検索 | |||
開始時間 | 完了時間 | 処理時間(秒) | 完了時間 |
遅延時間(秒) |
|
200 | 2015-01-20 14:34:41.271 | 2015-01-20 14:34:42.959 | 1.688 | 2015-01-20 14:34:43.303 | 0.344 |
500 | 2015-01-20 ?14:59:27.808 | 2015-01-20 14:59:33.199 | 5.391 | 2015-01-20 14:59:33.633 | 0.434 |
1000 | 2015-01-20 15:22:51.632 | 2015-01-20 15:22:57.640 | 6.008 | 2015-01-20 15:22:58.472 | 0.832 |
※1. 検索完了時間は登録件数と検索結果の件数が一致した時間。
※2. 登録処理時間 = 登録完了時間 – 登録開始時間
※3. 検索遅延時間 = 検索完了時間 – 登録完了時間
※4. 一度の登録処理の件数は200件です。
・200件の場合は1回登録処理を実施
・500件の場合は3回登録処理を実施
・1000件の場合は5回登録処理を実施
全パターンで言えることですが、登録処理時間はDatastoreと比べてもだいぶ遅い印象ですね。
200件と500件の登録処理時間の差は3.703秒と差はありますが、500件と1000件の登録処理時間の差は0.617秒と、処理時間の差に大きな開きがありますね。
検索遅延時間の場合は、200件と500件は時間差は0.9秒ですが、500件と1000件の時間差は0.398秒ですし……。
この差の開きの要因は何でしょうか……?
ともあれ、登録処理時間、検索遅延時間にばらつきがあるとはいえ、登録件数が増えれば、それぞれの処理時間・遅延時間は増えているので今回のこの結果はある程度正しいのではないでしょうか。
登録するDocumentのサイズやField数によっても登録処理時間、検索遅延時間は変わるかと思いますが、今回くらいのデータであれば1000件登録しても1秒以内に検索できるようになるようなので、更新頻度の多いデータの検索にも十分実用に耐えられるように思えます。
Search API詳細解説シリーズ
タイトル | |
Part1 | Search API 概要説明 |
Part2 | Search APIの使い方 登録・削除編 |
Part3 | Search APIの使い方 検索編 |
Part4 | Search API 詳細 検索性能編 |
Part5 | Search API 詳細 反映速度編(このページです) |
Part6 | Search API 詳細 限界値編 |