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

StackOverflow https://stackoverflow.com/questions/731983

Вопрос

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

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

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

Это было полезно?

Решение

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

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

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

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

Другие советы

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top