Эффективный способ сохранить кортежи в хранилище данных

Если у меня есть пара плаваний, больше это эффективный (в вычислительном отношении или мудрый устройством хранения данных) для хранения их как a GeoPtProperty чем он был бы рассол кортеж и сохранил бы его как a BlobProperty?

Если GeoPt делает что-то более умное для хранения нескольких значений в единственном свойстве, оно может быть усилено для произвольных данных? Я могу сохранить кортеж ("Johnny", 5) в единственном свойстве объекта столь же эффективным способом?

5
задан David Underhill 21 July 2010 в 21:17
поделиться

2 ответа

Вот некоторые эмпирические ответы:

GeoPtProperty использует 31B дискового пространства.

Использование BlobProperty зависит от того, что именно вы храните:

  • struct.pack('>2f', lat, lon) => 21B.
  • Использование pickle (v2) для упаковки 2-кортежа, содержащего floats => 37B.
  • Использование pickle (v0) для упаковки 2 кортежа, содержащего floats => около 30B-32B (v0 использует кодировку переменной длины ascii для floats).

Короче говоря, не похоже, что GeoPt делает что-то особенно умное. Если вы собираетесь хранить много таких данных, то для упаковки поплавков можно использовать struct. Упаковка и распаковка их с помощью struct, вероятно, будет незаметно отличаться от затрат процессора, связанных с сериализацией/десериализацией GeoPt.

Если вы планируете хранить много плавающих чисел на сущность и пространство действительно важно, то вы можете рассмотреть возможность использования CompressedBlobProperty в aetycoon.

Disclaimer: Это минимально необходимое пространство. Фактическое пространство будет немного больше для каждого объекта недвижимости в зависимости от длины названия объекта. Сама модель также добавляет накладные расходы (для ее имени и ключа).

3
ответ дан 15 December 2019 в 06:16
поделиться

Сам GeoPt ограничен (-90 - 90, -180 - 180); его нельзя использовать для хранения данных, которые не подходят для этой модели.

Однако пользовательское свойство кортежа не должно быть слишком сложным для создания самостоятельно; Посмотрите, как SetProperty и ArrayProperty разработаны в aetycoon.

0
ответ дан 15 December 2019 в 06:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: