LoginSignup
1
4

More than 5 years have passed since last update.

datastoreの名前空間を使ってみた

Last updated at Posted at 2017-07-23

背景

同一プロジェクト内のDatastoreでテスト環境・本番環境のデータを分ける必要があった。
その時、名前空間について調査することがあったので、備忘録としてまとめる。

名前空間とは?

1つのアプリケーションを異なるデータセットに対して動作させることを簡単にできるようにする仕組みのこと。
例えば、名前空間Aの場合は名前空間A用のDatastore、名前空間Bの場合は名前空間B用のDatastoreにアクセスできるようになります。

Datastoreの他にも以下も対応しています。

  • Memcache
  • Task Queue
  • Search

参考:https://cloud.google.com/appengine/docs/java/multitenancy/multitenancy

使い方

以下のようにcontext.Contextにnamespaceを設定するだけで使用準備完了です。

example.gp
c := appengine.NewContext(r)
c = appengine.Namespace(c,"your-namaspace-name")

Datastoreへアクセスする時に名前空間対応したcontext.Contextを渡すだけで、データを切り替えることができます。

example.gp
func GetBeaconList(c context.Context) ([]Beacon, error) {
    var tmp []Beacon
    // 名前空間をセットしたcontextを渡すだけ
    _, err := datastore.NewQuery("beacon").GetAll(c, &tmp)
    if err != nil {
        return nil, err
    }
    return tmp, nil
}
1
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
4