https://developers.google.com/datastore/docs/overview
GAE のデータストアのように見えますが、ORM (オブジェクト関係モデル) はありません。GAE for Cloud Datastore のデータストアと同じ ORM モデルを使用できますか? または Cloud Datastore の ORM サポートはありますか?
https://developers.google.com/datastore/docs/overview
GAE のデータストアのように見えますが、ORM (オブジェクト関係モデル) はありません。GAE for Cloud Datastore のデータストアと同じ ORM モデルを使用できますか? または Cloud Datastore の ORM サポートはありますか?
App Engine Datastore の高レベル API は、ファースト パーティ (db、ndb) とサード パーティ (objectify、slim3) の両方で、低レベル API の上に構築されています。
これらのインターフェイス/クラスの App Engine 固有のバージョンをGoogle Cloud Datastore API の上で動作するように置き換えると、これらの高レベル API を App Engine の外部で使用できるようになります。
高レベルの API コード自体は (あまり) 変更する必要はありません。
Google Cloud Datastoreは、データストア RPC を送信するための低レベル API ( protoおよびjson ) のみを提供します。
NDBおよび同様の高レベル ライブラリは、代わりにgoogledatastore (参照) のような低レベル ラッパーを使用するように適合させることができます。google.appengine.datastore.datastore_rpc
これは正確な答えではありません。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 ライブラリを待てない人に役立つことを願っています。
はい。同じ ORM モデルを使用できるだけでなく、Google Cloud Datastore を使用すると、現在の App Engine アプリ ストレージから読み書きできます。