5

https://developers.google.com/datastore/docs/overview

GAE のデータストアのように見えますが、ORM (オブジェクト関係モデル) はありません。GAE for Cloud Datastore のデータストアと同じ ORM モデルを使用できますか? または Cloud Datastore の ORM サポートはありますか?

4

6 に答える 6

4

App Engine Datastore の高レベル API は、ファースト パーティ (db、ndb) とサード パーティ (objectify、slim3) の両方で、低レベル API の上に構築されています。

これらのインターフェイス/クラスの App Engine 固有のバージョンをGoogle Cloud Datastore API の上で動作するように置き換えると、これらの高レベル API を App Engine の外部で使用できるようになります。

高レベルの API コード自体は (あまり) 変更する必要はありません。

于 2013-05-21T13:47:49.040 に答える
3

Google Cloud Datastoreは、データストア RPC を送信するための低レベル API ( protoおよびjson ) のみを提供します。

NDBおよび同様の高レベル ライブラリは、代わりにgoogledatastore (参照) のような低レベル ラッパーを使用するように適合させることができます。google.appengine.datastore.datastore_rpc

于 2013-05-20T20:25:21.310 に答える
1

これは正確な答えではありません。Google がNDB Libraryに取り組んでいることはすでにわかっています。待ちきれませんでした。

私が試したのはdatastore_v1_pb2.py、 など、 に記載されていない NDB プロパティを記述することGeoPtです。

class GCDFoo(ndb.Model):
    latlng = ndb.GeoPtProperty()

この場合、エンティティを GCD 低レベル API で読み取ると、次のように返されます。

name: "latlng"
value {
  entity_value {
    property {
      name: "x"
      value {
        double_value: 10.0
        indexed: false
      }
    }
    property {
      name: "y"
      value {
        double_value: 10.0
        indexed: false
      }
    }
  }
  meaning: 9
}

うーん、「意味」が何を意味するのかよくわかりませんが、GeoPt を説明することは重要でした。これで、GeoPt プロパティを次のように記述できます。

def make_geopt_value(lat,lng):
  entity = datastore.Entity()
  prop = entity.property.add()
  datastore.helper.set_property(prop,'x',lng,indexed=False)
  prop = entity.property.add()
  datastore.helper.set_property(prop,'y',lat,indexed=False)
  value = datastore.Value()
  datastore.helper.set_value(value,entity)
  value.meaning = 9
  return value

それは私にとってはうまくいきましたが、それが正しいアプローチであるかどうかはまだわかりません。とにかく、私の答えが NDB ライブラリを待てない人に役立つことを願っています。

于 2013-10-16T10:47:19.193 に答える
0

はい。同じ ORM モデルを使用できるだけでなく、Google Cloud Datastore を使用すると、現在の App Engine アプリ ストレージから読み書きできます。

https://developers.google.com/datastore/docs/activate?hl=en#google_cloud_datastore_for_an_existing_app_engine_application

于 2013-05-20T05:32:45.140 に答える