*

Search API詳細解説 Part5「Search API 詳細 反映速度編」

公開日: : 最終更新日:2015/04/17 投稿者: GAE

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 詳細 限界値編

関連記事

apps-gcp 2017年1-3月人気記事ランキング

今回のapps-gcpは2017年1~3月の人気記事ランキングです。去年までは月毎でのランキ

記事を読む

GAEのスケーリング 前編 <仕組みについて>

今回は、こちらの公式ドキュメントをもとに、GAEのスケーリングの仕組みと最適化のやり方について紹介し

記事を読む

GAリリース記念!!今更だけどGAE Flexible Environmentのチュートリアルを試してみた!

GAE Flexible Environment(以下FE)のGA(General Availa

記事を読む

専用Memcacheは共有Memcacheよりも本当に性能が高いのか検証する Part2

前回のGAEの「専用Memcacheは共有Memcacheよりも本当に性能が高いのか検証する」が投稿

記事を読む

GCEにPuttyから簡単接続する

年末ではありますが、先日ちょっとGCE(Google Compute Engine)を触る機会がまた

記事を読む

Google App Engine Modules in Javaを試す WebToolsPlatform編

みなさんこんにちは。 2013年の7月に、Google App Engine1.8.2がリリー

記事を読む

GAEでよくあるエラーの発生原因と対策1

GAE上で動くWebアプリケーションに特有の例外について、弊社での運用の事例からいくつか特徴的なもの

記事を読む

PageSpeedの動作を検証

皆さん、こんにちは。 突然ですが、皆さんはPageSpeedというサービスをご存知でしょうか?

記事を読む

Search API詳細解説 Part4「Search API 詳細 検索性能編」

Search API詳細解説シリーズ タイトル Part1Search API 概要説明

記事を読む

GAEでWordPressを動かす

これは2014年時点での記事になります。 2015年版の記事がありますのでそちらをご参照下さい。

記事を読む

PAGE TOP ↑