Существует ли эффективный метод иерархии для хранения большого дерева в таблице SQL? - PullRequest
1 голос
/ 02 марта 2011

У меня есть таблица с более чем 5 миллионами строк, которая содержит иерархические данные (~ 20 уровней).Таблица растет экспоненциально с каждым годом, а рекурсивный метод для операций CRUD из таблицы становится медленным.Таблица получает большой объем обновлений, считывает и удаляет.Кто-нибудь знает о каких-либо моделях данных, которые подойдут для замены текущей Модели Списка Смежности, или какие шаги, если таковые имеются, чтобы ускорить работу таблицы?

Ответы [ 3 ]

3 голосов
/ 02 марта 2011

Рассматривали ли вы тип данных HierachyID, который доступен в SQL Server 2008 и далее. http://technet.microsoft.com/en-us/library/bb677290.aspx

В этой бесплатной электронной книге MS Press

есть хороший раздел, посвященный его использованию.

http://blogs.msdn.com/b/microsoft_press/archive/2009/11/16/free-e-book-introducing-microsoft-sql-server-2008.aspx

2 голосов
/ 07 марта 2011
  1. Пять миллионов строк - ничто.

  2. Существует разница между хорошо разработанной моделью списка смежности и плохо разработанной.Если вы публикуете свой DDL, возможно, мы могли бы улучшить его, а не выкидывать всю концепцию, потому что реализация плохая.

  3. В любом случае, я бы не стал реализовывать древовидную структуру илииерархия в реляционной базе данных с использованием такой модели.Я использовал следующее (игнорируем историю) сотни раз, и это очень быстро.Если вы предоставите DDL для таблицы и всех индексов, я могу предоставить модель специально для нее.

Модель данных

▶ Структура дереваМодель данных

Читатели, не знакомые со стандартом реляционного моделирования, могут найти ▶ IDEF1X нотации полезными.

1 голос
/ 02 марта 2011

Возможно, иерархическая или графическая база данных будет лучшим выбором.SQL не всегда является ответом - поэтому NoSQL - это жизнеспособная ниша.

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