問題タブ [app-engine-ndb]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1075 参照

python - Appengine NDB で削除されたエンティティへのアクセス

Appengine プロジェクトで NDB を使用しています。いくつかのエンティティが削除された後、いくつかの操作を行うために _post_delete_hook を使用しています。この方法では、私は鍵を持っています。しかし、key.get() を実行すると、エラーが発生します。ここにいくつかのコード例があります。

手助け?

これはフックに関するドキュメントです。 http://code.google.com/appengine/docs/python/ndb/entities.html#hooks

0 投票する
1 に答える
165 参照

python - この再帰をより効率的に記述できますか?

親が子を後援している場合、ノードが子であるツリーである階層組織があります。このコードでツリーをトラバースできるようです

上記を使用して、私はユーザーの組織を取得することができます

downline=user.get_team(user, [])

しかし、1つのリクエストに対してこれを何度も実行する必要があり、その多くの再帰は非効率的である可能性があるため、より効率的な方法はありますか?または、ツリーを正しくトラバースできるため、コードは問題ありませんか?私の最初のバージョンでは、3つの変数を使用しましたが、コードを次の代わりに2つの変数に再配置できることがわかりました。

teamlist変数は実際には必要ないことがわかったので、削除しました。私がそれをした方法は、最初は1つの変数が多すぎたというものでした。

people = user.downline(user, [], [])

0 投票する
1 に答える
543 参照

google-app-engine - db.Model と NDB の間の ManyToMany 参照の作成

質問を変更します。ManyToManyとの関係db.Modelを適用したいNDB。例

NDBモデル

dbモデル

ManyToManyこれらのモデル間に関係を適用できますか?

編集:

これが私のUserモデルです

そして、これが私のTest dbモデルです

今、テストに manyToMany を適用したいと思います。出来ますか?

Django スタイルの多対多

0 投票する
2 に答える
819 参照

google-app-engine - 並列コード実行 python2.7 ndb

私のアプリでは、ハンドラーの1つに対して、一連のエンティティを取得し、それぞれに対して関数を実行する必要があります。

私は必要なすべてのエンティティの鍵を持っています。それらをフェッチした後、それぞれに対して 1 つまたは 2 つのインスタンス メソッドを実行する必要があり、これによりアプリの速度がかなり低下します。100 個のエンティティに対してこれを行うと、約 10 秒かかり、遅くなります。

エンティティを取得し、それらの関数を並行して実行して時間を節約する方法を見つけようとしていますが、どの方法が最適かはわかりません。

私は _post_get_hook を試しましたが、将来のオブジェクトがあり、get_result() を呼び出してフックで関数を実行する必要があります。これは、sdk で正常に動作しますが、多くの「Python objec の呼び出し中に最大再帰深度を超えました」を取得しますが、理由がよくわかりませんし、エラーメッセージも詳しくありません。

Pipeline api または ndb.Tasklets は何を探していますか?

atm 試行錯誤していますが、誰かが私を正しい方向に導くことができれば幸いです。

編集

私のコードはファイルシステムに似たもので、すべてのフォルダーには他のフォルダーとファイルが含まれています。別のエンティティに設定されたコレクションのパスなので、コレクション エンティティをシリアル化するには、参照されるエンティティを取得してパスを取得する必要があります。コレクションでは、serialized_assets() 関数は含まれるエンティティが多いほど遅くなります。含まれている各アセットを並べてシリアル化関数を実行できれば、処理速度が大幅に向上します。

EDIT2:

このタスクレットのコードは大丈夫ですか?

0 投票する
2 に答える
790 参照

google-app-engine - Google App Engine NDB とフィクスチャの使用

Google App Engines New DBでPythonフィクスチャモジュールを使用する方法に関する適切な情報はありますか?

次のようないくつかの問題があるようです。

  1. obj.delete()分解時 (ndbその中obj.key.delete())

  2. ネストされたStructuredProperty要素を設定する方法は直感的ではありません。

ndbフィクスチャ モジュールまたは で動作する代替フィクスチャ システムを許可する回避策はありndbますか?

ありがとうございました。

0 投票する
1 に答える
1203 参照

google-app-engine - modelname_set(後方参照プロパティ)に相当するGoogle App Engine ndb

Google App EngineのNDBmodelname_setに(後方参照プロパティ)に相当するものはありますか?

古いDBでは、モデルエンティティは後方参照プロパティを次のように記述していました。

後方参照プロパティの名前はデフォルトでmodelname_set(モデルクラスの名前は小文字で、末尾に「_set」が追加されています)であり、ReferencePropertyコンストラクターのcollection_name引数を使用して調整できます。

このプロパティはNDBdb.Modelインスタンスには存在しないようです。

NDBにはback-referenceプロパティと同等のものがありますか?

0 投票する
1 に答える
1126 参照

google-app-engine - ndb.get_context().urlfetch をモックする方法は?

私のテストではurlfetch、NDB パッケージによって提供されるモックを作成したいので、テストの実行中に実際の http リクエストは行われません。

urlfetch()を返すFutureので、きちんとモックするにはNDBの内部を知る必要がありそうです...また、何とかモックできると思っていましgoogle.appengine.api.urlfetch.create_rpc()た...しかし、私はこれまで何の進展もありませんでした...

これどうやってするの?

ありがとうございました。

0 投票する
2 に答える
4708 参照

google-app-engine - NDBとDB(高レプリケーションデータストア上)の速度比較はどのようになっていますか?

Python NDBの概要からの抜粋:

アプリケーションがエンティティを読み取ると、そのエンティティは自動的にキャッシュされます。これにより、頻繁に読み取るエンティティの読み取りが高速(かつ安価)になります。

..。

データを書き込むNDB関数(たとえば、put())は、キャッシュの無効化後に戻ります。適用フェーズは非同期で行われます。

Youtubeでの視聴では、Google I / O 2011:More 9s Please:Under the Covers of the High Replication Datastore、at 13:11-ish、平均レイテンシーは次のとおりです。

マスター/スレーブ:

  • 読み取り:15ms
  • 書き込み:20ms

高レプリケーション:

  • 読み取り:15ms
  • 書き込み:45ms

アプリの観点から、NDBはこれらの速度にどの程度影響しますか?

編集:タイミング統計(ミリ秒単位)について特に興味があります。

追加のクレジット:ニック・ジョンソンが、それぞれ約160ミリ秒かかるクエリについて言及していると聞きました(2009年)。NDB[link]はクエリの速度に利点がありますか?

0 投票する
1 に答える
2580 参照

python - Google アプリ エンジン NDB

NDBの最近のリリースで、古いデータストア API を使い続ける理由はありますか?

私は現在、古いデータストア API を使用するアプリケーションに取り組んでおり、オブジェクトを memcache にキャッシュすることにかなりの労力を費やしました。NDB に変更することで、カスタム キャッシュを削除しても現在のパフォーマンスを維持できるという私の理解は正しいですか?

さらに、NDB は何らかの方法でシャーディング カウンターの必要性を変えますか? エンティティ (グループ) への 1 秒あたり 5 回の書き込みの制限は、NDB で何らかの方法で変更されていますか?

編集

私のアプリケーションはまだ開発中であり、簡単に削除できないエンティティがないことを考えると、NDB に変更する前に考慮すべきことはありますか? または、単に変更db.Modelするのと同じくらい簡単ndb.Modelでしょうか?

0 投票する
2 に答える
1283 参照

python - Google-app-engine NDB iter keys_only

頻繁に実行されるクエリがあり、おそらく同じ結果が得られるとします。

以下を使用するのは正しいですか?

以下よりもパフォーマンスが向上します:

最初の例では、クエリはキーのみをロードし、以降の呼び出しkey.get()はNDBのキャッシュメカニズムを利用しますが、例2は常にストアからエンティティをフェッチするためですか?それとも私は何かを誤解しましたか?