2

いくつかの大きなプロパティで圧縮(設定) を有効にすることを検討しています。compressed = TrueLocalStructuredProperty

ただし、これらは頻繁に読み書きされるエンティティであるため、これらのプロパティをエンコード/デコードするために必要な追加の CPU について懸念しています。

ndb のビルトイン キャッシング システムがこれを軽減するかどうか疑問に思っていますか? ndb は、これらのプロパティの圧縮または非圧縮データをキャッシュしますか? 書き込みごとに圧縮が常に行われることは認識していますが、キャッシュされたエンティティを読み取るときに少なくとも解凍をバイパスできれば、おそらくそれだけの価値があります。

4

1 に答える 1

6

NDB は遅延解凍と圧縮を使用します。エンティティがメモリ( Context オブジェクト内) にキャッシュされている場合、プロパティに実際に初めてアクセスしたときにのみ解凍されます。また、圧縮されたプロパティにアクセスせずにエンティティを読み込んで書き戻すと、(キャッシュに関係なく) 解凍も圧縮もまったく行われません。

ただし、値は圧縮された形式で memcache に書き込まれるため、圧縮されたプロパティに実際にアクセスする場合、キャッシュはあまり役に立ちません。

私の推奨事項: データが大きすぎて収まらない場合にのみ圧縮を使用し (制限はエンティティ全体で最大 1MB です)、適切に圧縮できるデータの種類である場合にのみ使用します (例: テキスト、画像などではなく)。これらの形式には既に独自のメディア固有の圧縮があるため)。ログ行は非常によく圧縮されます。英語のテキストやコンピューターのソース コードは、かなり圧縮されます。

于 2012-08-15T20:28:14.243 に答える