Если изначально делать «абы работало», гарантированно потом можно все выбросить и переписывать. Потому я и хочу для начала хоть немного представить себе архитектуру, до того как напишу первые строки кода. Да, несомненно, переделки и доделки будут, вероятно даже изыскания на эту тему сейчас все равно не позволят избежать полной переделки, но чем правильнее выбрать/создать архитектуру сейчас, тем на более поздний период возможно отодвинуть доделки/переделки, а это экономия денег на начальном этапе. Конечно же, я не пытаюсь никого убедить что стоит изначально делать «абы-просто-работало» неправильно, но тем не менее я стараюсь придерживаться такого подхода, который не исключает создания preview или POC решения, для проверки идеи проекта как таковой.
Прошу прощения, не сильно хорошо структурировал вопрос :)
Итак. Задача: спроектировать структуру для высоконагруженного сервиса с элементами социальной сети. То есть, имеем все обычные виды контента: статьи, фото, видео, звук, гео-координаты, комментарии и т.д.
Требования: изначально структура должна быть масштабируемая горизонтально. То есть, в начале нагрузки почти нет (на 1 физическом сервере крутятся все ноды). При возрастании поднимаются новые сервера с нодами. Да, идеальная мечта :)
Я не описываю технологии, я лишь говорю свои предположения, полученные в результате чтения и обдумывания этой информации с хабра и гугла. Хабрасоветы мне нужны чтобы понять, в правильном направлении ли я думаю, не делаю ли каких-то вопиющих архитектурных ошибок, которые вылезут потом.
Забыл сказать — мне кажется что в графе связей должно быть 2 вида связей: parent<->child и owner<->property (в смысле владение). Зачем? К примеру у нас есть комментарий к статье. parent для него — статья. owner — пользователь который этот комент написал.
Я бы нес на диагностику в то место, где данные восстанавливают. Тут можно самостоятельно наделать бед больше чем пользы, имхо. Особенно если там важные данные.
Ну в Линейке от Анрила насколько я знаю, почти все, кроме рендера/строения левелов. Поскольку Анрил не поддерживает такие пространства как там, безшовные.