Даже если вы едете на абстрактном коне по полю - это все-равно транспортное средство, т.е. надо соблюдать ПДД,Даже если вы храните копию данных 1 в 1 в кеше - это все-равно вторая копия данных, т.е. избыточность. Можно поспорить, конечно, если бы не одно но. Вы вряд ли будете хранить в кеше 1 в 1, скорее всего у вас там будут рассчитанные данные. Ну, т.е., если товары с рейтингом, то в кеше у вас будет не все структура голосов, а исключительно сам рейтинг, заранее посчитанный.
Я понимаю разницу между кешированием и денормализацией, но в контексте этой темы - ее фактически нет. Т.е. если мы утверждаем, что денормализации быть не должно, а вот кеш - можно, то это бред.
Архитектура приложения завязана на структуру базы данных, бизнес-логика завязана на архитектуру приложения.Говнокод не зависит от нормализации/денормализации. Денормализация может быть убрана на уровень DBA.
Архитектура приложения не завязана на структуру базы данных. Равно как бизнес-логика не завязана на архитектуру приложения. У вас, видимо, какое-то свое понимание термина "архитектура приложения", мне неведомое.Архитектура приложения завязана на структуру базы данных, бизнес-логика завязана на архитектуру приложения.
Денормализация не меняет бизнес-логику. При высоком уровне абстракции от базы денормализация делается малым рефакторингом. Сложностей в живой базе добавить материализованную вьюху или просто поле,включить триггеры, а после провести рефакторинг кода - не вижу, может вы поделитесь.Вынести архитектуру базы на уровень DBA и абстрагироваться от нее в приложении так, чтобы менять бизнес логику без переработки структуры базы в общем случае невозможно.
Да как угодно называй. Инвалидация кэша по всем зависимостям не делается просто. Это дополнительная логика в persistence layer, и однажды ее добавив, поддерживать надо везде. И такая поддержка будет несколько дороже стоимости аренды пары серверов.Даже если вы храните копию данных 1 в 1 в кеше - это все-равно вторая копия данных, т.е. избыточность.
Если уж говорить о настоящих хайлоадах - еще как завязана. Точнее, одно следует из другого.Архитектура приложения не завязана на структуру базы данных
Это крайний случай. Даже с денормализацией, хоть она и проще, можно наворотить такого, что потом получить кучу проблем из-за неконсистентности данных. И баги инвалидации там тоже можно огребсти. Ну так это можно любую идею утрировать и испоганить - не повод, что бы отказываться от идеи совсем.Да как угодно называй. Инвалидация кэша по всем зависимостям не делается просто. Это дополнительная логика в persistence layer, и однажды ее добавив, поддерживать надо везде. И такая поддержка будет несколько дороже стоимости аренды пары серверов.
С денормализацией та же история, но она, на самом деле, проще. С денормализацией не надо ловить баги инвалидации сложных зависимостей и мониторить hit-miss графики =)
Вот мне кажется, что база следует из архитектуры, а не архитектура из базы. Причем, даже не схема базы, ибо схема - это уже уровень проработки приложения. Вот принятие решение - из таблиц мы будем все выбирать или только через хранимки - это решение архитектуры. А что именно будем выбирать - это уже следующий шаг.Если уж говорить о настоящих хайлоадах - еще как завязана. Точнее, одно следует из другого.
Поясните свою мысль, пожалуйста.А что именно будем выбирать - это уже следующий шаг.
База следует из архитектуры, а особенности архитектуры следуют из ограничений базы. Все связаномне кажется, что база следует из архитектуры
а это не ко мне вопрос, я такого не говорила по поводу, почему "нормализация никогда нельзя", а "кеширование можно", что можно вынести из речей grigori, я так и не понял
Архитектура ПО - это, скажем так, высокоуровневая абстракция вашего ПО - из каких частей будет состоять ваше приложение, как эти части будут взаимодействовать, где находится, за что ответственны. Она оперирует слоями, протоколами. В случае с базой - мы решаем, будем ли мы ее использовать или нет, и для какой информации.Поясните свою мысль, пожалуйста.
Особенности СУБД, если быть совсем занудным. Это да, соглашусь. Но схемы данных, т.е. именно база данных - не влияет. Она влияет на уже на проработку функционала слоев.База следует из архитектуры, а особенности архитектуры следуют из ограничений базы. Все связано
мне лень составлять все эти запросы
Сейчас мой каталог на join-ах вообще без кешей отдается меньше, чем за 0.1 сек.