Большинство действительно крупных веб-сайтов заканчивают тем, что используют какие-то невероятно простые вещи на стороне базы данных. Преимущество в том, что он быстрый и масштабируемый. Недостатком является то, что для всех отношений, которые вы бы обеспечили для базы данных автоматически (через триггеры и т. Д.), Вам нужно , чтобы вместо этого ввести себя в свой клиентский код. Поддержание согласованности - это боль в шее, и почти всегда есть хоть какой-то шанс, что ваши данные будут противоречивыми, по крайней мере, в течение коротких периодов времени.
Для сайта социальной сети это достойный компромисс. Данные, которые в большинстве случаев являются правильными, в большинстве случаев являются адекватными (например, кого действительно волнует, действительно ли количество голосов «за», получаемых вами за элемент, действительно на 20 миллисекунд устарело при его отправке), и поддержание разумных затрат при масштабировании для поддержки миллиарда пользователи очень важны.