問題タブ [google-cloud-datastore]

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 に答える
1803 参照

google-app-engine - 再起動の間にGoogleAppEngineLauncherのローカルデータストアを永続化するにはどうすればよいですか?

Mac OS XでGoogleAppEngineLauncher(GAEL)を使用しています。アプリケーションのデータストアの状態は、サーバーの再起動からGAELの再起動まで保持されますが、再起動するとデータストアがリセットされます。このリセットを防ぐための設定はありますか、それとも保存できるtmpファイルがどこかにありますか?

0 投票する
3 に答える
2374 参照

google-app-engine - エンティティ サイズを縮小して App Engine のパフォーマンスを向上させる

目的は、非常に頻繁に実行され、毎回数百のキーを db.get() する必要があるコードの CPU コストと応答時間を削減することです。

これでも機能しますか?

エンティティのサイズを縮小すると、数百のキーを持つ db.get() の API 時間がほぼ直線的に短縮されると期待できますか? 現在、エンティティには次のデータが添付されています: 9 つの文字列、9 つのブール値、8 つの整数、1 つの GeoPt、2 つの DateTime、1 つのテキスト (平均サイズ ~100 バイト FWIW)、1 つの参照、1 つの StringList (平均サイズ 500 バイト)。目標は、このデータの大部分を関連するクラスに移動して、メイン モデルのコア フェッチを高速化することです。

機能する場合、どのように実装されていますか?

リファクタリング後も、既存のエンティティをフェッチするのと同じ高コストが発生しますか? ドキュメントには、モデルのすべてのプロパティが同時にフェッチされると記載されています。ユーザーが待機している間に、古い不要なプロパティが引き続き RPC 経由で転送されますか? つまり、エンティティの読み込み時間を短縮したい場合、古いエンティティを新しい定義のエンティティに移行する必要がありますか? もしそうなら、エンティティを re-put() するだけで十分ですか、それともまったく新しいキーで保存する必要がありますか?

検討:

Thing を再定義して合理化し、新しいバージョンをプッシュするとします。

そして、私はそれをもう一度取得します:

このエンティティのフェッチ時間を短縮しましたか?

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

google-app-engine - GAE データストア リスト プロパティのシリアル化

私は Google I/O 2009 の次のビデオを見てきました: http://www.youtube.com/watch?v=AgaL6NGpkB8ブレットがマイクロブログの例を示しています。

彼は2つ のデータストアスキーマについて説明しています 。この例でデータストアの動作が異なる理由がわかりません。どちらの場合も、レシーバーは単なる StringListProperty です。それを説明できますか?
class Message(db.Model):
    sender = db.StringProperty()
    body = db.TextProperty()
    receivers = db.StringListProperty()


class Message(db.Model):
    author = db.StringProperty()
    message = db.TextProperty()

class MessageIndex(db.Model)
    receivers = db.StringListProperty()

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

python - Google App Engine で「で始まる」クエリと「で終わる」クエリを実装する

Python を使用して Datastore モデルに対して開始クエリまたは終了クエリを実装する方法について、誰かがガイダンスを提供できるかどうか疑問に思っていますか?

疑似コードでは、次のように機能します...

プロパティ P が X で始まるすべてのエンティティ A のクエリ

また

プロパティ P が X で終わるすべてのエンティティ B のクエリ

ありがとう、マット

0 投票する
4 に答える
779 参照

python - ユーザーのお気に入りのストーリーを見つけるための優れたデータ モデル

オリジナルデザイン

これが私が最初にModelsセットアップした方法です:

ストーリーを表示するすべてのページで、現在のユーザーの UserData をクエリします。

新しいデザイン

Google I/O 2009 - Scalable, Complex Apps on App Engineの講演を見た後、もっと効率的にセットアップできないかと考えました。

Story Model同じですが、 を削除しましたUserData Model。new の各インスタンスには、親としてインスタンスFavoriteIndex Modelがあります。Storyそして、それぞれがそのプロパティFavoriteIndexにユーザー ID のリストを格納しfavorited_byます。

特定のユーザーがお気に入りにしたすべてのストーリーを検索したい場合:

このアプローチは、ListProperty に関連付けられているシリアル化/逆シリアル化を回避します。

効率とシンプルさ

特にユーザーが 300 のストーリーをお気に入りに登録した後では、新しいデザインがどれほど効率的かはわかりませんが、私が気に入っている理由は次のとおりです。

  1. お気に入りのストーリーは、ユーザーではなくユーザーに関連付けられていますuser data

  2. を表示するページでは、お気に入りに追加されstoryているかどうかを簡単にstory確認できます (ユーザー データで満たされた別のエンティティを呼び出す必要はありません)。

    /li>
  3. ストーリーをお気に入りにしたすべてのユーザーのリストを取得するのも簡単です (#2 の方法を使用)。

もっと簡単な方法はありますか?

助けてください。この種のことは通常どのように行われますか?

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

java - GoogleAppEngineデータストアのマルチフィールドキー

問題は、このオブジェクトが永続化されたときにそれ自体を上書きし続け、次のリビジョンで新しい「レコード」を作成しないことです。従来のRDBMSでは、2列の主キーになります。

Google App Engine Datastoreでこれを実現するにはどうすればよいですか?

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

google-app-engine - ユーザーのuser_id()をデータストアに配置するためにどのプロパティタイプを使用しますか?

これが、user_id()をデータストアに配置する必要がある理由です。

ユーザーが自分の電子メールアドレスを変更しても、データストアのユーザー値は更新されません。これは、将来のリリースで修正される可能性があります。それまでは、ユーザー値のuser_id()をユーザーの安定した一意の識別子として使用できます。

http://code.google.com/appengine/docs/python/datastore/typesandpropertyclasses.html#users_User

データストア内では、値は電子メールアドレスにユーザーの一意のIDを加えたものに等しくなります。ユーザーがメールアドレスを変更した場合、新しいユーザー値は、データストアクエリで、またはアプリで比較したときに、元のユーザー値と等しくなりません。アプリに変更されない安定した識別子が必要な場合は、ユーザー値とは別に一意のIDを保存できます。

http://code.google.com/appengine/docs/python/users/userobjects.html

どうすればいいのですか?

そして、どうやって知ったのですか(またはどこで調べましたか?)

0 投票する
3 に答える
219 参照

python - データストアに存在する一連のキーを特定する最適な方法

事前に計算した同じモデルのすべてのキーが数百あります。

これらのキーには、データストア内の実際のエンティティを参照するものと、参照しないものがあります。エンティティに対応するキーを特定したいと考えています。

エンティティが存在するかどうかだけで、エンティティ内のデータを知る必要はありません。

1 つの解決策は、db.get() を使用することです。

ただし、この手順ではストアからすべてのエンティティ データがフェッチされるため、不要でコストがかかります。

2 番目のアイデアは、疑似フィルターの要件に合わせて 30 個のチャンクで手動でフェッチする、INフィルターを onにしたクエリを使用することです。ただし、キーのみのクエリはフィルターでは許可されていません。key_nameININ

より良い方法はありますか?

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

google-app-engine - Google アプリ エンジンでのクエリの問題

私はSQLに非常に慣れておらず、Googleアプリエンジンで使用されるGQLよりも優れています。データを Google サーバーにプッシュすることはできましたが、データストアにロードしたエンティティからクエリを実行する方法がわかりません。

ここに問題があります。以下に示すような他の列とは別に、ユーザー ID でマークされたユーザーの連絡先の名前と番号のみをクエリしたいのですが、

これは、MyContacts エンティティ定義を含む Models.py ファイルです。

ユーザー ID を UI からの入力として取得していますが、クエリを使用してデータを表示する方法がわかりません。GQLでクエリを作成するのを手伝ってくれる人がいれば、それは私にとって大きな助けになるでしょう。私はあらゆる種類のものを試しましSELECT * FROM MyContacts WHERE __key__ = KEY('user_id',654351)たが、何も得られません。

私を助けてください。

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

java - Google App Engine でのエンティティの一括削除

Java を使用してデータストアから不要なデータを削除しようとしていますが、10 秒でできるだけ多くのエントリを削除するように変更した DatastoreService を使用するコードを見つけました。

これを実行するとうまくいくようです。コンソールのデータ ビューアーを確認すると、削除しようとしている種類 ("PostalCodes") がなくなっていますが、これを行った翌日にはすべてが復元されています。フラッシュまたはコミットなどの呼び出しがありませんか?!?

これを行うより良い方法はありますか?