Эффективность SQL-графа - PullRequest
1 голос
/ 22 ноября 2010

Предпосылки:

Я использую SQLite3 для представления ориентированного графа.

Сценарий 1 :

У меня есть две таблицы: Node и Association

Таблица Node содержит идентификатор узла и данные, относящиеся к конкретному Node.

Таблица Association содержит поле родительского узла и дочерний элемент.Поле узла (и идентификатор первичного ключа).

Сценарий 2 :

У меня есть одна таблица: Узел

Таблица узлов содержит идентификатор узла, данные соответствующего узла и тонну столбцов ассоциации узлов (около 100) для хранения идентификатора другого узла.

Вопрос:

Что является более эффективным?Есть ли определенный размер графика, который один становится лучше другого?Есть ли у вас опыт масштабирования этих двух вариантов?

Мой самый распространенный запрос будет определять все узлы, к которым подключен один конкретный узел.

1 Ответ

3 голосов
/ 22 ноября 2010

Придерживайтесь сценария 1.

Сценарий 2 нарушает основные правила нормализации, и вы быстро будете биться головой о стену, когда вам нужно будет поддерживать более 100 ассоциаций.Также сложнее сделать правильный SQL для анализа отношений.

Быстро!Сколько узлов имеют 10 и 20 ассоциаций?Этот запрос - кошмар со сценарием 2. Легко со сценарием 1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...