Какой способ хранения списка является наиболее эффективным кортежей в App-Engine?

При сохранении и извлечении объекта хранилища данных, содержащего список кортежей, какой способ хранения этого списка является наиболее эффективным?

Когда я столкнулся с этой проблемой, кортежи могли быть любыми, от пар ключ-значение до даты, времени и результатов выборки, до координат (x, y).
Количество кортежей варьируется от 1 до нескольких сотен.

Сущность, содержащая эти кортежи, требует быстрой / дешевой ссылки, а значения кортежей не нужно индексировать.

У меня была эта проблема несколько раз, и я решил ее разными способами.

Метод 1:

Преобразуйте значения кортежа в строку и объедините их вместе с помощью некоторого разделителя.

def PutEntity(entity, tuples):
  entity.tuples = ['_'.join(tuple) for tuple in tuples]
  entity.put()

Преимущества: Результаты легко читаются в Datastore Viewer, все извлекается за один прием. Невозможно просмотреть данные в Datastore Viewer.

Метод 4:

Сохраните кортежи в другом объекте и сохраните список ключей.

Преимущества: Более очевидная архитектура. Если сущность является представлением, нам больше не нужно хранить две копии данных кортежа.
Недостатки: Требуются две выборки: одна для списка сущностей и ключей и одна для кортежей.

Мне интересно. Если кто-нибудь знает, какой из них работает лучше всего, и есть ли способ, о котором я не думал?

Спасибо, Jim

10
задан Jimr 18 February 2011 в 17:42
поделиться