Каковы преимущества и недостатки Anchor Modeling?
В настоящее время я пытаюсь создать базу данных, где очень большой процент данных является временным. После прочтения многих методов для этого (большинство из которых связано с нормализацией 6nf) я столкнулся с Anchor Modeling.
Схема, с которой я развивалась, сильно напоминала модель моделирования привязки, тем более, что прецедент (временные данные + известные неизвестные) настолько схож, что у меня возникает соблазн полностью охватить его.
Две самые большие проблемы, с которыми я сталкиваюсь, это то, что я не могу найти ничего подробного о негативах этого подхода, и я не могу найти ссылок на организации, которые использовали его в производстве для военных историй и ошибок, которые мне нужно знать.
Мне интересно, если кто-то здесь достаточно знаком, чтобы кратко изложить некоторые из негативов (поскольку положительные результаты очень хорошо рекламируются в научных статьях и их сайте), и любой опыт использования его в производственной среде.
Ответы
Ответ 1
Относительно anchormodeling.com
Вот несколько моментов, о которых я знаю
-
Количество DB-объектов просто слишком велико, чтобы поддерживать их вручную, поэтому убедитесь, что вы все время используете конструктор для разработки схемы.
-
В настоящее время разработчик полностью поддерживает MS SQL Server, поэтому, если вам нужно все время переносить код, вы можете подождать, пока ваша целевая БД полностью не будет поддерживаться. Я знаю, что в раскрывающемся списке Oracle есть, но...
-
Не ожидайте (и не требуйте) ваших разработчиков понять это, им нужно получить доступ к модели через 5NF-представления - это хорошо. Дело в том, что таблицы загружаются с помощью (вместо) триггеров в представлениях, что может (или не обязательно) быть проблемой производительности.
-
Ожидайте, что вам может потребоваться написать несколько дополнительных процедур обслуживания (для каждого временного атрибута), которые не автогенерируются (пока). Например, мне часто нужна процедура обрезки для временных атрибутов - для удаления одинаковых значений для одного и того же идентификатора в течение двух последовательных событий времени.
-
Сгенерированные представления и запросы-просмотры прекрасно решаются, и, вероятно, все, что вы напишете в будущем. Тем не менее, "другие люди" будут писать запросы на представлениях-over-views-over-views, что не всегда хорошо получается. Поэтому ожидайте, что вам могут потребоваться полицейские запросы больше, чем обычно.
Услышав все это, я недавно использовал подход для рефакторинга раздела моего склада, и он работал как шарм. По общему признанию, на складе нет большинства проблем, описанных здесь.
Я бы предположил, что необходимо создать демо-систему и протестировать, протестировать, проверить..., особенно пункт № 3 - загрузить через триггеры.
Ответ 2
В отношении точки 4 выше. Контроль перерасчета почти завершен, так что вы сможете предотвратить два последовательных идентичных значения с течением времени.
И общий комментарий, объединения не обязательно являются плохими. Читайте: Почему присоединение - это хорошая вещь.
Одним из больших преимуществ 6NF в Anchor Modeling является эволюция неразрушающей схемы. Другими словами, каждая предыдущая версия модели базы данных доступна как подмножество в текущей модели. Кроме того, поскольку изменения представлены расширениями в схеме (новые таблицы), обновление базы данных почти мгновенно и может безопасно выполняться в режиме онлайн (даже в производственной среде). Это преимущество будет потеряно в 5NF.
Ответ 3
Я не читал никаких статей об этом, но поскольку он основан на 6NF, я ожидаю, что он будет страдать от любых проблем, следующих за 6NF.
6NF требует, чтобы каждая таблица состояла из ключа-кандидата и не более одного столбца без ключа. Итак, в худшем случае вам понадобится девять объединений для создания набора результатов из 10 столбцов. Но вы также можете создать базу данных, которая использует, скажем, 200 таблиц, которые находятся в 5NF, 30, которые находятся в BCNF, и только 5, которые находятся в 6NF. (Я думаю, что это уже не будет Anchor Modeling как таковое, которое, кажется, помещает все таблицы в 6NF, но я мог ошибаться в этом.)
Мифический Человек-Месяц все еще имеет значение.
Таким образом, управленческий вопрос заключается не в том, строить ли пилотную систему и выбросить ее. Вы это сделаете. Единственный вопрос заключается в том, планировать ли заранее, чтобы построить отход, или обещать доставить заказным клиентам.
Фред Брукс-младший в "Мифическом человеке-месяц", стр. 116.
Как дешево вы можете построить прототип для проверки ожидаемого худшего случая?