Выбор правильной стратегии хранения облачных данных Google для изображений
Я пишу свой первый облачный бэкэнд Google для мобильного приложения для обмена изображениями, и мне трудно понять, какой вариант хранения данных выбрать. Клиентами будут мобильные приложения и, возможно, веб-интерфейс. Из того, что я прочитал до сих пор, AppEngine кажется хорошей инфраструктурой для этого.
Мне нужно справиться с:
- пользователей
- Группы пользователей
- Коллекции изображений (созданные в группе пользователей, многие из которых передаются всем пользователям)
- Фактические файлы изображений
- Начните с малого, но с архитектуры, способной поддерживать масштабное масштабирование (с точки зрения пользователей и изображений)
Имеет ли смысл хранить реальные изображения в облачном хранилище и метаданные о пользователях, группах пользователей и коллекциях изображений в хранилище данных или MySql? В частности, у меня возникают проблемы при выборе между Datastore и MySql.
Любой совет будет принята с благодарностью, у меня очень мало опыта работы с базами данных:)
Ура!
1 ответ
Изображения (или другие большие "непрозрачные" наборы данных, такие как видео) в облачном хранилище и метаданные о них в более структурированном хранилище - это классический образец архитектуры для всех подобных случаев использования.
Если вам нужны некоторые функции реляционных баз данных, такие как JOIN
s, в ваших метаданных, тогда Cloud SQL может быть тем, что вам нужно для "более структурированного хранилища"; однако, поскольку вы проектируете с нуля, обычно вполне возможно использовать хранилище NoSQL, такое как хранилище данных App Engine, с масштабируемостью и другими преимуществами, имеющими к нему отношение (и вы упомянете о "масштабном апскейлинге" в будущем, так что это может быть весьма актуально для вы!-).
Одним из преимуществ этой классической архитектуры является то, что хранилища объектов, такие как облачное хранилище, могут предоставлять вам "обслуживающие URL-адреса" для определенных объектов (изображений), которые вы можете передавать клиентам, чтобы обслуживание таких массивных данных осуществлялось собственными серверами облачного хранилища. без нагрузки на серверы вашего приложения. Более того, как говорит https://cloud.google.com/storage/docs/website-configuration,
Облачное хранилище Google ведет себя по сути как сеть доставки контента (CDN), и с вашей стороны это не работает, поскольку общедоступные объекты по умолчанию кэшируются в сети облачного хранилища Google.
поэтому, по крайней мере, для изображений, которые "доступны для всех" (и, таким образом, вы можете пометить их как общедоступные), вы получите преимущества CDN с низкой задержкой "без работы с вашей стороны".