При сохранении и извлечении объекта хранилища данных, содержащего список кортежей, какой способ хранения этого списка является наиболее эффективным?
Когда я столкнулся с этой проблемой, кортежи могли быть любыми, от пар ключ-значение до даты, времени и результатов выборки, до координат (x, y).
Количество кортежей варьируется от 1 до нескольких сотен.
Сущность, содержащая эти кортежи, требует быстрой / дешевой ссылки, а значения кортежей не нужно индексировать.
У меня была эта проблема несколько раз, и я решил ее разными способами.
Метод 1:
Преобразуйте значения кортежа в строку и объедините их вместе с помощью некоторого разделителя.
def PutEntity(entity, tuples):
entity.tuples = ['_'.join(tuple) for tuple in tuples]
entity.put()
Преимущества: Результаты легко читаются в Datastore Viewer, все извлекается за один прием. Невозможно просмотреть данные в Datastore Viewer.
Метод 4:
Сохраните кортежи в другом объекте и сохраните список ключей.
Преимущества: Более очевидная архитектура. Если сущность является представлением, нам больше не нужно хранить две копии данных кортежа.
Недостатки: Требуются две выборки: одна для списка сущностей и ключей и одна для кортежей.
Мне интересно. Если кто-нибудь знает, какой из них работает лучше всего, и есть ли способ, о котором я не думал?
Спасибо, Jim