y-kawazの日記 このページをアンテナに追加 RSSフィード Twitter

Google

2010-04-16

GAE/J使いの為のインデックス削除ツール

pythonで開発している場合は appcfg.py vacuum_indexes があるからデータストア上のインデックスの削除が行えるんですが、Java版のSDKにはまだその手のツールが無いので困ります。

そこで普段はJavaしか使わない人でも、ツールだけはPython版を使ってEclipseから簡単にインデックス削除を行えるようにしてみました。*1

  1. まずGoogle App Engine SDK for Pythonを入れて置く必要があります。もちろんPythonも。
  2. Eclipseのプロジェクト内に以下のようなダミーのアプリケーションディレクトリを作成しapp.yamlとvacuum_indexes.batを作成します。
  3. 消したいインデックスが出来てしまったら vacuum_indexes.bat を実行すれば不要なインデックスの削除が出来ます。

ファイルセット

  • ダミーのアプリケーションディレクトリ

f:id:y-kawaz:20100416154640p:image

  • app.yaml
    • applicationには自分のアプリケーションIDを書いておきます。
    • versionは何でも良いのですが、万が一にも空のアプリをデプロイしてしまうという事故の防止の為、本番と被らないバージョンにしておきます。
    • 今回の場合handlersは要らないんですが必須項目なので形だけのダミー設定設定を書いておきます。ダミー設定なのでdummyというファイルは不要です。
application: example
version: 9999
runtime: python
api_version: 1

handlers:
- url: /
  script: dummy
  • vacuum_indexes.bat
    • eclipse上からバッチファイルを実行するとカレントディレクトリが eclipse ディレクトリになってしまう為、怪しい記述でバッチファイルのあるディレクトリに移動しています。
@echo off
cd /D %~dp0
appcfg.py vacuum_indexes .
pause

実行例

上記のファイルセットが出来たら後はEclipseからvacuum_indexes.batをダブルクリック(DefaultEditorで開いてやる)だけでいつでもインデックスの削除が出来ます。

バッチファイルを実行するといきなりインデックスを削除するのではなく、サーバとの差分のインデックスが順番に列挙されるのでそれぞれに (N/y/a) を答えて削除するという形になります。今回 index.yaml は作っていないのでサーバ上の全てのインデックスが列挙された状態になっています。間違って必要なインデックスを削除しないように注意しましょう。

f:id:y-kawaz:20100416160840p:image

*1:開発環境がLinuxやMacだとコターミナルを自然に使うので不要かもしれないけど、Windowsだとはっぱダブルクリックで解決したくなるよね?

urekaturekat 2010/04/16 17:16 サーバにあるインデックスのindex.yamlとdatastore-indexes.xmlがダウンロードできたら便利ですよね

surume000surume000 2010/05/16 12:42 使わせていただきました。ありがとうございます。

jundattajundatta 2011/11/09 16:51 ありがとうございます。助かりました。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

リンク元