Способ хранения базы данных фотографий - PullRequest
0 голосов
/ 17 марта 2011

Ища некоторые мнения по этому поводу и пытаясь начать продвигаться вперед с твердым дизайном к моему следующему проекту. Представьте себе 5 000 000 отдельных изображений с сопровождающими изображениями для предварительного просмотра; Каждый набор картинок принадлежит галерее, которая принадлежит человеку. Есть X количество людей. Так сказать, специализированная версия Flickr.

Они размещены на удаленном хосте с веб-интерфейсом для просмотра этих изображений. Существует также настольное приложение, позволяющее автоматически загружать изображения на этот удаленный хост и вводить данные галереи. Настольное приложение имеет предварительный просмотр изображений и информацию о каждой галерее и человеке. Настольное приложение, которое, так сказать, синхронизируется с Flickr.

Мне нужно определиться с двумя вещами: внутренним хранилищем для удаленного хоста и локальным хранилищем для настольного приложения. Это нацелено на среду Windows, поэтому я подумал, что SQL Server Express подойдет, но этот проект немного вырос, и это может работать только для настольных компьютеров.

Удаленный (веб) сервер может быть Windows или Linux, PHP или .Net - мне все равно, если технология подходит. Вопрос заключается в том, как лучше всего хранить все эти данные на веб-сервере, чтобы их можно было легко проиндексировать, быстро получить к ним доступ и, что самое важное, легко скопировать и восстановить в случае аварии. В настоящее время меня не беспокоит конфигурация сервера или дисковое пространство, если решение для баз данных поддерживает что-то вроде сценария облачных вычислений.

Я думаю, что бэкэнд No-SQL имеет больше смысла, храня фотографии, галереи и пользователей как «статьи», а не как «строки». No-SQL кажется более способным расти с облаком. С другой стороны, Flickr был объявлен как использующий MySQL ...

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

1 Ответ

0 голосов
/ 17 марта 2011

Имея в наличии фото-сайт с более чем 5 миллионами фотографий, я могу сказать, что MySQL, безусловно, является приемлемым вариантом. Резервное копирование легко, если вы используете репликацию. Просто остановите раб, скопируйте его и запустите резервное копирование.

Полнотекстовый поиск MySQL не очень хорош и может быть медленным. Так что вы можете захотеть взглянуть на движок на основе Lucene, такой как Solr. Эластичный поиск также является хорошим вариантом для масштабируемости.

Если вы не уверены в своей структуре данных, то что-то вроде MongoDB может быть хорошим решением. Но у Mongo есть ограничения на агрегацию (~ 10000 записей), так что имейте это в виду. Но это один из самых простых в настройке.

Все что угодно может работать в облаке, поэтому я считаю, что требование является спорным. Вы можете настроить все, что вы хотите на EC2.

...