Без объединений в Google App Engine должны ли ваши данные существовать в одной большой таблице? - PullRequest
12 голосов
/ 01 мая 2009

Поскольку Google App Engine не разрешает присоединения, означает ли это, что мне нужно взять все таблицы в своем веб-приложении и найти способ их объединения в одну огромную таблицу?

Ответы [ 4 ]

9 голосов
/ 01 мая 2009

То, что у вас нет соединений, реализованных СУБД, не означает, что у вас не может быть нескольких таблиц. В App Engine они называются «типами сущностей», и их может быть сколько угодно.

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

5 голосов
/ 01 мая 2009

Объединение его в одну большую таблицу - это всегда вариант, но в большинстве случаев это приводит к излишне большим и избыточным таблицам, что делает ваше приложение медленным и трудным в обслуживании.

Вы также можете эмулировать объединение, просматривая результаты запроса и выполняя второй запрос для каждого результата, найденного для первого запроса. Если у вас есть SQL-запрос

SELECT a.x FROM b INNER JOIN a ON a.y=b.y;

Вы можете подражать этому примерно так:

for b in db.GqlQuery("SELECT * FROM b"):
  for a in db.GqlQuery("SELECT * FROM a WHERE y=:1", b.y):
    print a.x
3 голосов
/ 13 декабря 2013

Если вы ищете способ проектирования данных. Я бы порекомендовал вам сделать небольшое исследование, прежде чем начать работу. Для Google App Engine есть довольно волшебные свойства, такие как:

  • Самослияние
  • Свойство многозначного списка

Это было бы очень полезно в вашем дизайне. Я поделился моим опытом здесь .

Чтобы узнать о масштабируемости, существует эксклюзивный бесплатный курс по Udacity здесь только по этой теме. Этому учил основатель reddit.com, и он четко объясняет все масштабные события, происходящие в reddit, одном из сайтов с наибольшим количеством посетителей. Он показывает полную реализацию демо курса в gae (и это был джекпот для меня!). Они предлагают все видео курса бесплатно для скачивания здесь . Я тяжело трудился с движком приложения, прежде чем получил эти ресурсы. Поэтому я подумала, что поделиться этим может помочь другим, кто ступает ногой в воду.

0 голосов
/ 01 мая 2009

Переключение с реляционной базы данных на хранилище данных App Engine требует изменения парадигмы для разработчиков при моделировании их данных. Взгляните здесь , чтобы получить лучшее представление. Это потребует от вас заранее подумать о том, как вписать вашу проблему в ограничения, накладываемые хранилищем данных, но если вы сможете, то вам гарантировано, что он будет работать быстро и масштабироваться.

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