максимальный размер объекта в Google App Engine - PullRequest
2 голосов
/ 22 апреля 2011

Я работаю над приложением для голосования в GAE, и я хотел бы иметь возможность поддержать очень большое количество избирателей (скажем, 100 000). Я обеспокоен тем, что могу сделать это, не ограничивая размер сущности или другие ограничения. Вот соответствующие части моих отношений сущности:

class Election(db.Model):
    tmp_voters = db.StringListProperty(default = "")

class Voter(db.Model):
    election = db.ReferenceProperty(Election, collection_name = "voters")

Пока пользователь редактирует выборы, я помещаю список адресов электронной почты избирателей в StringListProperty с именем tmp_voters. Непосредственно перед началом выборов я создаю сущность Избиратель для каждого избирателя, и каждая сущность Избирателя имеет ссылку на сущность Выбор.

Похоже, что для большого числа избирателей tmp_voters приведет к превышению предельного значения объекта Election. Это правильно? Как мне это исправить? Будет ли хорошо использовать BLOB-объект?

Будет ли когда-либо наличие большого количества объектов Избирателя, каждый из которых ссылается на объект Выборы, когда-нибудь слишком большим? Т.е. увеличивает ли добавление ссылки на объект Election размер объекта Election?

Какие-нибудь другие ограничения, о которых я должен беспокоиться, очень большое количество избирателей? (кроме квот)

Ответы [ 2 ]

4 голосов
/ 22 апреля 2011

Добавление ссылки на сущность в другой сущности никак не влияет на указанную сущность, за исключением того, что автоматически сгенерированный запрос обратной ссылки вернет еще один результат.

Мне неясно, для чего предназначен tmp_voters, но да, если этот ListProperty становится слишком большим, у вас будут проблемы, хотя, вероятно, не с размером объекта; ListProperty может содержать только около 5000 записей, и вы не собираетесь использовать 1 МБ свободного места для хранения адресов электронной почты 5K.

0 голосов
/ 25 октября 2017

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

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

...