Нам нужна какая-то статистика для оценки размеров кругов. В качестве простейшего примера беру свой аккаунт на linkedin.com:
1. 28
2. 800+
3. 140,300+
(кстати, эти плюсы уже подсказывают, что используется тот или иной алгоритм отложенных пакетных вычислений)
Всего пользователей -- 11,000,000.
Пугает то, что в третьем круге мы УЖЕ имеем более 100,000 пользователей.
Известно, что linkedin.com работает.

Следовательно, они используют структуры, радикально отличные от транзитного замыкания.
Вообще, имеет смысл вернуться к началу и подумать, чего мы от этой структуры хотим. Применительно к моему примеру:
1. 28 записей имеет смысл дать для просмотра/листания. Вполне реально найти что-то пролистыванием.
2. 800 записей -- это уже на грани приемлемости для простого просмотра. Причем, я человек асоциальный и весьма вероятно, что активные пользователи будут иметь второй круг в пределе на порядок-полтора крупнее.
3. 140,000 -- за пределами здравого смысла при просмотре.
Соответственно, для второго и третьего круга я вижу одно применение: быть ограничителем при поиске ("искать не далее 3-го круга").
Соответственно, имеет смысл думать над структурой, которая позволяет получить весь список первого круга, а второй и третий использовать для наложения ограничений на поиск без возможности просмотреть весь список.
Мнения?
-~{}~ 16.06.07 23:50:
Автор оригинала: Sky_Flex
харниться в 2-х таблицах:
в первой все вершины, во второй все связи.
Удачи тебе.