1

AppEngineデータストアに使用されるシリアル化のロジックを手動で定義することは可能ですか?

私はGoogleが一般的な方法でこれを行うためにリフレクションを使用していると仮定しています。これは機能しますが、かなり遅いことがわかります。データストアオブジェクトのシリアル化/逆シリアル化を高速化するために、かなりの数のコードを記述(および維持)したいと思います(大きなオブジェクトがあり、これはかなりの割合の時間を消費します)。

4

1 に答える 1

1

データストアは内部でProtocol-Buffersを使用しますが、アプリケーションがデータストアと通信できる唯一の方法であるため、回避する方法はありません。(実装はSDK / google / appengine / datastore / entity_pb.pyにあります)あなたの場合、(逆)シリアル化が遅すぎると思うなら、おそらく2つの選択肢があります

  • 下位のDBAPIに移動します。google.appengine.datastoreの2つの十分に文書化されたext.dbおよびext.ndbAPIの隣に別のAPIがあります。これはすべての凝ったモデルのものではなく、単純な(そしてうまくいけば高速な)辞書のようなAPIを提供します。これにより、データストアレイアウトと他の2つのDBAPIとの互換性が維持されます。
  • オブジェクトを自分でシリアル化し、テキストフィールドだけで構成されるダミーエントリに格納します。ただし、自己シリアル化されたテキスト内のデータでフィルタリング/並べ替えることはできないため、おそらくベースエントリにデータを複製する必要があります。
于 2013-03-01T10:25:28.860 に答える