Вопрос

Я собираюсь начать проектировать веб -приложение в ближайшее время, и хотя у меня есть большой опыт работы в мире SQL, я понятия не имею, что мне нужно принять во внимание, чтобы сделать это с целью перейти в GAE в самом близовом будущее.

В качестве альтернативы я мог бы с самого начала разработать приложение для GAE, и поэтому в этом случае, какие различия мне нужно принять во внимание? Другими словами, каковы DOS и Donts Writing Your App для GAE, исходящие из прошлых реляционных баз данных.

Это было полезно?

Решение

Просто вне моей головы:

  • Это на самом деле только магазин Value, не одурачите такими вещами, как GQL (Это всего лишь подмножество SQL Select)
  • Нет соединений - часто вы должны денормализовать или забыть
  • Более или менее частые тайм -ауты
  • (Очень) медленный доступ по сравнению с локальной базой SQL.
  • Считайте очень дорого
  • Смещение (в избранном), реализованное на стороне клиента - так что на самом деле вы извлекаете все записи в комплект в комплекте - Как указал Ник Джонсон в одном из комментариев, это не клиентская сторона, поэтому теперь, когда предел 1000 исчез, он похож на базы данных SQL.
  • (Недавно удалено) предел 1000 извлеченных строк
  • Выбор производительности резко уменьшается с увеличением числа возвращенных строк
  • Миграции трудно сделать, потому что вы должны выполнять их, используя обычные HTTP -запросы, и каждый запрос убит через 30 секунд. Вы должны прибегнуть к очередям задач, которые обрабатывают строки в партиях
  • В Pseudo Foreign Keys - называемые RelightProperties в Python API - но они никоим образом не применяются - если кто -то/что -то удаляет целевой объект, то у вас есть то, что известно как висящий указатель в C ++
  • Поля, которые вы используете для запросов, должны быть индексированы, но все же используют ключ (своего рода первичный ключ для каждой строки/экземпляра) заставляет ваши запросы работать быстрее
  • Построение индексов в живом экземпляре может занять много времени (и вы не можете уменьшить его), и без них ваше приложение часто не может работать. Пиво и терпение настоятельно рекомендуется ..
  • Много искусственных ограничений (например, уже снятый максимальный предел 1000). Например, gql 'in' operator-это просто синтаксический сахар для нескольких или S, и используется верхний предел 30 значений.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top