Наличие системы базы данных, в которой модель данных адаптирована для структуры данных, которую вы пытаетесь представить, часто выгодно. Социальные сети очень хорошо подходят для баз данных Graph, таких как Allegro Graph , Neo4j и т. Д.
В блоге Neo4j есть хорошая статья о том, как представлять социальные сети в графовой базе данных, с примерами использования Neo4j.
Преимущество графовых баз данных заключается в том, что данные хранятся таким образом, что обход соединений между объектами является очень быстрой операцией, позволяющей быстро обходить сложные сети. Эти операции обычно (в лучшем случае) являются дорогостоящими операциями соединения в текущих реализациях реляционных баз данных. Как и в случае реляционных баз данных, графовые базы данных по-прежнему имеют небольшую проблему с масштабированием на несколько аппаратных узлов. Однако в случае графической базы данных потребность в нескольких аппаратных узлах должна быть намного меньше, чем в реляционной базе данных для данных социальных сетей. Несколько миллиардов узлов на одной машине не представляют проблемы. Масштабирование до нескольких аппаратных узлов - это то место, где хранятся значения ключа, поскольку объекты в хранилище значения ключа полностью изолированы друг от друга. Проблема здесь заключается в том, что в социальной сети ничего не изолировано, а это означает, что для эмуляции соединений требуется несколько запросов к базе данных, по одному для каждой сущности. Это будет медленно, особенно для запросов типа «друг друга», когда вы обнаруживаете только один уровень друзей с каждым запросом.
Отказ от ответственности: я являюсь членом команды Neo4j.