Лучший способ хранить данные нескольких типов

0

Я собираюсь создать базу данных для проекта, над которым я работаю. Мне нужно хранить несколько типов данных, таких как видео, фотографии, текст, аудио. Я должен их хранить, и через php мне приходится часто их запрашивать. Этот проект, над которым я работаю, является социальной сетью, и мне нужно подключать пользователей через уведомления и сообщения. Вот вопрос: полезно ли использовать NoSQL DB для хранения данных и для системы уведомлений (например, MongoDB и Redis), или MySQL может помочь мне и с такими системами? Извините за мой английский, но технические вещи так сложно объяснить для английского начинающего, как я. Спасибо вам, ребята.

Теги:
database
redis

2 ответа

1
Лучший ответ

Проблема с SQL-технологиями, то есть MySQL, заключается в том, что обычно вы должны разместить этот двоичный текст внутри BLOB, после чего вы уже делаете это неправильно.

Другое дело, что доступ к файловой системе всегда будет быстрее, чем доступ к базе данных, будь то MongoDB или SQL, однако хранилище базы данных имеет некоторые преимущества. В конце концов на вашем сайте (если он будет немного популярен) вы обнаружите, что вам нужен CDN. Эти виды распределительных сетей могут быть дорогостоящими, но с чем-то вроде MongoDB вы можете просто развернуть копии данных в других регионах и реплицировать двоичные данные по мере необходимости (возможно, даже TTL'd, как и CDN).

Итак, это одна из областей, которые следует учитывать, что файловая система не в большинстве случаев, правильный ответ для сайта с высокой нагрузкой, например, в социальной сети. Тем не менее, даже сами facebook не защищены от необходимости обслуживать непосредственно из файловой системы, поскольку они заявляют (https://blog.facebook.com/blog.php?post=2406207130, учитывая, что этот пост составляет 5 лет, но я сомневаюсь изменилось на этом фронте):

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

Однако они имеют чрезвычайно большую инфраструктуру, и, скорее всего, вам следует больше подумать о том, используете ли вы хранилище баз данных или CDN.

Я бы лично сказал, что вы, вероятно, должны провести некоторое исследование в сетях распространения контента и как другие сайты обслуживают их изображения. Вы можете найти информацию по всему Google. Вы можете искать специально для Facebook, которые до недавнего времени использовали Akamai для своего CDN.

  • 0
    Большое спасибо за действительно исчерпывающий ответ!
1

Вы можете идти в любом случае. Но хранение двоичных данных в db обычно не является наиболее эффективным путем. Вам лучше сохранить это в файловой системе и поместить пути в БД.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню