Каковы будут плюсы и минусы иерархических данных по сравнению с соответствующими данными в производительности (и категоризации)? - PullRequest
6 голосов
/ 09 апреля 2009

Это относится к этому вопросу . Это заставило меня подумать, что, например, эта книга . Вместо того, чтобы быть потомком [Agriculture] и [Other], в деревьях [Books > Catalogs > Agriculture] и [Business & Industrial > Agriculture & Forestry > Other], соответственно, он мог бы просто стоять сам по себе, иметь эти уровни в качестве тегов.

На таком веб-сайте, как eBay, затраты на производительность при перечислении всех записей с тегами [Agriculture И Catalog] значительно превысят затраты на перечисление всех записей в категории [Books > Catalogs > Agriculture] , если данные правильно нормализованы?

Я понимаю, что это, вероятно, глупый вопрос (и нет, я не думаю, что я программирую следующий eBay), но я не могу избавиться от этого любопытства и, что еще хуже; искушение ; поэтому я предпочитаю звучать глупо сейчас и лучше понять мои недоразумения, чем делать что-то глупое или бессмысленное позже.

Ответы [ 2 ]

10 голосов
/ 09 апреля 2009

Когда впервые появилась реляционная модель, парадигма доминирующей базы данных была иерархической; и тогда (как это все еще имеет место) иерархическая структура более эффективна, поскольку, по сути, вы можете начать с частично предопределенных запросов.

Но только на основе одной статической иерархической структуры. Большая трудность возникает, когда вы хотите изменить представление данных, поступающих из другого корневого измерения. (Это был спорный вопрос о том, могут ли реляционные базы данных быть достаточно эффективными для практического использования; вскоре они были решены путем усердного применения закона Мура.)

Подумайте о клиентах, у которых есть заказы, которые включают продукты; иерархия. Неизбежно вы захотите также подумать о продуктах, которые можно найти в заказах от клиентов; вся другая иерархия. И продавцы в регионах, которые генерируют заказы от клиентов; или у Клиентов, которые размещают Заказы.

Реляционные базы данных дают вам возможность реконструировать иерархии по желанию с примерно равной эффективностью; преимущество, доступное только в других форматах базы данных, за счет внедрения нескольких ортогональных иерархий; в этом случае стоимость изменения, добавления или удаления данных становится астрономической.

2 голосов
/ 09 апреля 2009

Основная цель реляционной модели - предотвратить дублирование. Иерархические данные, которые проще обрабатывать вручную, страдают от проблем с дублированием.

Используйте модель, которая лучше всего соответствует вашим данным, вместо преждевременной оптимизации.

Я склонен строить иерархические деревья представления из реляционных данных.

...