GAE DataStore vs Google Cloud SQL для систем управления предприятием

Я создаю приложение, которое представляет собой систему управления предприятием с использованием gae. Я создал несколько приложений с использованием gae и хранилища данных, но никогда не должен требовать большого количества пользователей, входящих в транзакции, а также для административной и управленческой отчетности. Мой самый большой страх в том, что, когда мне нужно создать кросс-вкладку и другие подробные отчеты (или отчеты бизнес-аналитики и манипуляции с данными), я столкнусь с горными проблемами с запросами данных gae datastore и ограничениями на передачу данных. Это действительно просто архитектурное предпочтение или здесь есть количественные проблемы?

В прошлом у меня были встроенные системы, использующие С++/С#/Java для Oracle/MySql/MSSql (при использовании кэширующего слоя для дополнительной производительности при сложных или часто доступных результатах db).

Я продолжаю читать, что мы должны отбросить старый менталитет реляционных данных и переместиться в новый мир большого McHashTable в небе... но новый не всегда лучше... Любое понимание или опыт вышеизложенного быть полезным.

Ответы

Ответ 1

Из Часто задаваемые вопросы по облачному SQL:

Должен ли я использовать Google Cloud SQL или хранилище данных App Engine?

Это зависит от требований приложения. Datastore предоставляет NoSQL key-value > хранилище с высокой степенью масштабируемости, но не поддерживает сложные запросы, предлагаемые базой данных SQL. Cloud SQL поддерживает сложные запросы и транзакции ACID, но это означает, что база данных действует как "фиксированный канал", а производительность менее масштабируема. Многие приложения используют оба типа хранилищ.

Если вам требуется много записей (~ XXX per/s) для db-объекта с распределенными ключами, то, где действительно хранится датастар Google App Engine.

Если вам нужна поддержка сложных и случайных пользовательских запросов, то там, где Google Cloud SQL более удобен.

Ответ 2

Что меня больше пугает в хранилище данных GAE, это ограничение номера индекса. Например, если вам нужен поиск по определенному полю или сортировке - вам нужен +1 индекс. Всего вы можете иметь 200 индексов. Если у вас есть объект с 10 полями поиска, и вы можете сортировать по любому полю - будет около 100 комбинаций. Поэтому вам нужно 100 индексов. Я разработал несколько небольших проектов для gae - и это истории успеха. Но когда приходит большой - это не для gae.

О кеше - вы можете сделать это с помощью gae, но они распределяют кеш работает очень медленно. Я предпочитаю создавать отдельный отдельный экземпляр постоянного бэкэнд с RESTfull API, который хранит кешированные значения в памяти. Экземпляры Frontend вызывают этот API для получения/установки значений.

Возможно, возможно построить сложную систему с gae, но это будет набор небольших приложений/сервисов.