|
Антипаттерны проектирования РСУБД
|
|||
---|---|---|---|
#18+
Коллеги, здравствуйте. Кто-нибудь может поделиться антипаттернами проектирования БД? В том смысле, что физическая модель БД выглядит достойно, но при администрировании наполняющаяся база, страдает тем фактом, что возникает глюк за глюком и багом погоняет. Затем патч физической модели, тишина, но вновь ситуация повторяется. Рад любому опыту. Есл же при этом есть (поделитесь) книгой/URL/webinar-ом --спасибо вдвойне. С уважением, Игорь. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.06.2018, 07:50 |
|
Антипаттерны проектирования РСУБД
|
|||
---|---|---|---|
#18+
Популярно: 1. Бездумное добавление новых колонок в ключевые таблицы и дальнейшие проблемы с миграцией данных или обменом между аналогичными БД. 2. Неудачный выбор первичного ключа: ключ делают сложносоставным и в итоге копируют его по куче таблиц. 3. Неудачный тип поля, н-р числовой для "Номер Документа" или недостаточной ширины. 4. Попытка использовать естественные ключи (н-р ФИО или логин) 5. Активное использование триггеров. 6. Использование новейших фич СУБД, без которых легко обойтись. И вообще не стоит использовать новейшие версии. У заказчика их может не оказаться. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.06.2018, 11:05 |
|
Антипаттерны проектирования РСУБД
|
|||
---|---|---|---|
#18+
конечно ВасяЕсл же при этом есть (поделитесь) книгой/URL/webinar-ом --спасибо вдвойне. SQL Antipatterns Avoiding the Pitfalls of Database Programming By Bill Karwin ... |
|||
:
Нравится:
Не нравится:
|
|||
23.06.2018, 18:26 |
|
Антипаттерны проектирования РСУБД
|
|||
---|---|---|---|
#18+
Есть такое мнение с которым я согласен: Проектируйте систему исходя из того, как будете выводить инфу в отчеты. Т.к. разного рода отчеты (это не обязательно печатные формы) это конечная ценность любой системы. То, для чего их создают. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.06.2018, 20:51 |
|
Антипаттерны проектирования РСУБД
|
|||
---|---|---|---|
#18+
L_argoЕсть такое мнение с которым я согласен: Проектируйте систему исходя из того, как будете выводить инфу в отчеты. Т.к. разного рода отчеты (это не обязательно печатные формы) это конечная ценность любой системы. То, для чего их создают. :) Не совсем верно. Если ввод данных прогонять через события, или журнал (например, Kafka), то можно делать проекции под любые, самые дебильные отчёты. Да и отчёты в большом их количестве, это область enterprise в основном. Ценность любой системы состоит в экономическом эффекте. Если его нет, или он незначителен, то всеми отчётами можно лишь подтереться. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2018, 00:28 |
|
Антипаттерны проектирования РСУБД
|
|||
---|---|---|---|
#18+
конечно Вася, Основной антипаттерн: увлечение овер-моделированием БД. Страдают в основном немножко упоротые dba, или недоучки, для которых это является самоцелью. «Глюк за глюком и багом погоняет» -- это не скорее не антипаттерн, а банальное отсутствие знаний и опыта, попросту непрофессионализм. Никаким сводом антипаттернов тут не поможешь. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2018, 00:33 |
|
Антипаттерны проектирования РСУБД
|
|||
---|---|---|---|
#18+
- Магические константы в ключах - Магические константы управляющие логикой "к какой таблице джойним вот этот столбец" - Триггеры (за исключением логирования) - Недостаточная/неверная нормализация - Избыточная нормализация - ХМL типы данных вместо нормализации - Неверно сделаное наследование сущностей ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2018, 02:15 |
|
Антипаттерны проектирования РСУБД
|
|||
---|---|---|---|
#18+
Я-бы сказал в основном дублирование данных ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2018, 03:59 |
|
Антипаттерны проектирования РСУБД
|
|||
---|---|---|---|
#18+
Друзья, спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2018, 07:44 |
|
Антипаттерны проектирования РСУБД
|
|||
---|---|---|---|
#18+
SERG1257конечно ВасяЕсл же при этом есть (поделитесь) книгой/URL/webinar-ом --спасибо вдвойне. SQL Antipatterns Avoiding the Pitfalls of Database Programming By Bill Karwin Что O'REILLY жив и живее всех живых (40000 материалов) отдельное спасибо. Жаль, что перестали переводить. С уважением, Игорь Никольский. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2018, 07:49 |
|
Антипаттерны проектирования РСУБД
|
|||
---|---|---|---|
#18+
L_argoЕсть такое мнение с которым я согласен: Проектируйте систему исходя из того, как будете выводить инфу в отчеты. Т.к. разного рода отчеты (это не обязательно печатные формы) это конечная ценность любой системы. То, для чего их создают. :) Отсутствие PRINT даже в супер сложных расчётах на векторном CRAY MVP (мог забыть точное название модели), давало компилятору право мгновенно завершить расчёты. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2018, 07:53 |
|
Антипаттерны проектирования РСУБД
|
|||
---|---|---|---|
#18+
самое неудачное - это когда на реляционную модель пытаются натянуть ООП, графы и др универсальные модели например: в строку засунуть сразу много значений через разделитель и держать в одном поле или вместо полей делать строки а потом транспонировать или (случай из Кайта) жависты решили не париться с таблицами а просто сериализовывали объекты и сохраняли в LOB, ну а пользователи не могли из этого ведра с битами получить отчеты стандартными report designer-ами пример эпик фейла из книги Oracle Insights: Tales of the Oak Table https://www.red-gate.com/simple-talk/opinion/opinion-pieces/bad-carma/ Here are some facts about the Vision system: The data model comprised a single table named DATA. The DATA table had 240+ columns. The primary key column was a numeric named SYSNO. Columns existed for attributes, such as TYPE, SUBTYPE, CATEGORY, SUBCATEGORY, STATUS, SUBSTATUS, GROUP, and OWNER, which were intended to fully describe what type, category, or grouping to which the row belonged. Each of these columns were themselves SYSNOs, joining back to other rows in DATA for more detail. The majority of columns in DATA provided sequencing, descriptive text, names, values, amounts, dates entered and modified, and so on. Some of these columns would be named and data-typed appropriately, while others were “generic spare” columns, several for each datatype. When the Vision system was finally decommissioned, a year after it went into production, the DATA table consumed 50GB of space. 40+ associated indexes consumed another 250GB of space. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2018, 08:04 |
|
Антипаттерны проектирования РСУБД
|
|||
---|---|---|---|
#18+
по сути все анти-паттерны сводятся к непониманию, как работает реляционная БД если оставить совсем клинические случаи, то: в первую очередь надо понять про нормализацию, что связывание таблиц это норма (с), это работает хорошо, реляционная алгебра рулит Что разделение данных по таблицам это ок, для скорости данные должны быть маленькими ИНДЕКСЫ увеличивают размер таблицы и тормозят инзерты (первый же индекс замедляет инзерт ~ в 2 раза) потом транзакции неплохо бы понимать и как БД с ними справляется А потом узнать, что репликация это распределённые транзакции и это ВСЕГДА тяжело для БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2018, 10:29 |
|
Антипаттерны проектирования РСУБД
|
|||
---|---|---|---|
#18+
tip78ИНДЕКСЫ увеличивают размер таблицы Это где так? в оракле индексы - это совсем отдельные от таблиц структуры, насколько помню в мсскл, db2, postgre - также tip78А потом узнать, что репликация это распределённые транзакции и это ВСЕГДА тяжело для БД. между репликацией и распределенными транзакциями (2PC) общего только то, что в этом участвуют несколько баз это разные понятия ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2018, 11:13 |
|
Антипаттерны проектирования РСУБД
|
|||
---|---|---|---|
#18+
конечно ВасяКоллеги, здравствуйте. Кто-нибудь может поделиться антипаттернами проектирования БД? В том смысле, что физическая модель БД выглядит достойно, но при администрировании наполняющаяся база, страдает тем фактом, что возникает глюк за глюком и багом погоняет. Затем патч физической модели, тишина, но вновь ситуация повторяется. Рад любому опыту. Есл же при этом есть (поделитесь) книгой/URL/webinar-ом --спасибо вдвойне. С уважением, Игорь. 1. Что Вы понимаете под физической моделью, которая "выглядит достойно"? 2. По каким формальным критериям она выглядит достойно? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2018, 12:10 |
|
Антипаттерны проектирования РСУБД
|
|||
---|---|---|---|
#18+
L_argoПопулярно: 1. Бездумное добавление новых колонок в ключевые таблицы и дальнейшие проблемы с миграцией данных или обменом между аналогичными БД. 2. Неудачный выбор первичного ключа: ключ делают сложносоставным и в итоге копируют его по куче таблиц. 3. Неудачный тип поля, н-р числовой для "Номер Документа" или недостаточной ширины. 4. Попытка использовать естественные ключи (н-р ФИО или логин) 5. Активное использование триггеров. 6. Использование новейших фич СУБД, без которых легко обойтись. И вообще не стоит использовать новейшие версии. У заказчика их может не оказаться. 1. В СУБД нет никаких проблем, даже, теоретических с добавлением любых свойств любых типов сущностей. Возможно, Ввы пишете о какой-то специфической системе. Но, зачем использовать систему с такими проблемами? 2. В БД, нет никаких ключей в принципе. Опять речь о какой-то специфической системе. 3. Как конкретно это приводит к "глюком за глюком и багом погоняет"? 4. См. п. 2. Вы уверены, что автор темы использует такую странную систему? 5. Проведите, пожалуйста, формальную границу, между пассивным использованием триггеров (когда нет "глюком за глюком и багом погоняет") и активным - когда "глюком за глюком и багом погоняет". 6. Приведите пример старинной фичи СУБД, без которой нельзя обойтись. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2018, 12:18 |
|
Антипаттерны проектирования РСУБД
|
|||
---|---|---|---|
#18+
казинакtip78ИНДЕКСЫ увеличивают размер таблицы Это где так? в оракле индексы - это совсем отдельные от таблиц структуры, насколько помню в мсскл, db2, postgre - также имеется ввиду таблица самих индексов и да, это таблица (в БД всё таблицы), а не "отдельная эфемерная структура" распухшая таблица = худший поиск tip78А потом узнать, что репликация это распределённые транзакции и это ВСЕГДА тяжело для БД. между репликацией и распределенными транзакциями (2PC) общего только то, что в этом участвуют несколько баз это разные понятия ну так вот то что транзакцию надо размазывать на несколько шардов существенно усложняет процесс обработки ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2018, 13:05 |
|
Антипаттерны проектирования РСУБД
|
|||
---|---|---|---|
#18+
tip78казинакпропущено... Это где так? в оракле индексы - это совсем отдельные от таблиц структуры, насколько помню в мсскл, db2, postgre - также имеется ввиду таблица самих индексов и да, это таблица (в БД всё таблицы), а не "отдельная эфемерная структура" распухшая таблица = худший поискА большинство почему-то думают, что структура индексов иерархическая (древовидная): сбалансированное дерево. Это если не брать индексы по XML, columnstore и т.п. tip78пропущено... между репликацией и распределенными транзакциями (2PC) общего только то, что в этом участвуют несколько баз это разные понятия ну так вот то что транзакцию надо размазывать на несколько шардов существенно усложняет процесс обработкиСмешались в кучу фрагментация (шардинг) и репликация. А об чём мысль - мне не понятно. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2018, 13:18 |
|
Антипаттерны проектирования РСУБД
|
|||
---|---|---|---|
#18+
tip78, возможно Вы хотели написать, что в БД всё страницы? Тогда да, индекс - это набор страниц ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2018, 13:24 |
|
Антипаттерны проектирования РСУБД
|
|||
---|---|---|---|
#18+
конечно ВасяSERG1257 SQL Antipatterns Avoiding the Pitfalls of Database Programming By Bill Karwin Что O'REILLY жив и живее всех живых (40000 материалов) отдельное спасибо. Жаль, что перестали переводить. Программирование баз данных SQL. Типичные ошибки и их устранение ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2018, 13:35 |
|
Антипаттерны проектирования РСУБД
|
|||
---|---|---|---|
#18+
Я встречал такое: все справочники засовываются в однут таблицу (география, описания типов продуктовых кодов, сами продуктовые коды и вся остальная мелочевка). А в таблице Code, Code Type, Code description, Code label, locale id. И в одну таблицу намешиваются для всех языков и города, Москва, Moscow, и описания продуктовых классов, и описания кодов. И всё остальное. При этом есть ещё start date и end date. И статусы. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2018, 14:35 |
|
Антипаттерны проектирования РСУБД
|
|||
---|---|---|---|
#18+
Бредятина2. В БД, нет никаких ключей в принципе. Опять речь о какой-то специфической системе. Это в какой реальности? Бредятина3. Как конкретно это приводит к "глюком за глюком и багом погоняет"? Для человека, который имеет хоть малейший опыт работы с БД очевидно, что например выбор текстового поля для хранения числовых значений или даты/времени, может привести к внезапным проблемам. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2018, 17:43 |
|
Антипаттерны проектирования РСУБД
|
|||
---|---|---|---|
#18+
skyANAtip78пропущено... имеется ввиду таблица самих индексов и да, это таблица (в БД всё таблицы), а не "отдельная эфемерная структура" распухшая таблица = худший поискА большинство почему-то думают, что структура индексов иерархическая (древовидная): сбалансированное дерево. а "дерево" это набор узлов, так то а вы ведь никогда не хранили набор узлов в БД, да? и с nosql дела не имели, где нет JOIN-ов и сразу начинаешь понимать, как и что работает у демагогов индексы хранятся в битах. tip78пропущено... ну так вот то что транзакцию надо размазывать на несколько шардов существенно усложняет процесс обработкиСмешались в кучу фрагментация (шардинг) и репликация. А об чём мысль - мне не понятно . Ну так какие ваши годы. зы: шардинг это НЕ фрагментация . авторвозможно Вы хотели написать, что в БД всё страницы? Тогда да, индекс - это набор страниц в БД всё биты (bits), так себе и запишите. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2018, 19:45 |
|
Антипаттерны проектирования РСУБД
|
|||
---|---|---|---|
#18+
tip78зы: шардинг это НЕ фрагментация . Глупая статья - у автора-таки каша в голове. Но да, хотя бы не пишет что репликация обязана "размазывать транзакции на несколько шардов" :) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2018, 20:07 |
|
Антипаттерны проектирования РСУБД
|
|||
---|---|---|---|
#18+
tip78skyANAпропущено... А большинство почему-то думают, что структура индексов иерархическая (древовидная): сбалансированное дерево. а "дерево" это набор узлов, так то а вы ведь никогда не хранили набор узлов в БД, да? и с nosql дела не имели, где нет JOIN-ов и сразу начинаешь понимать, как и что работает у демагогов индексы хранятся в битах. пропущено... Смешались в кучу фрагментация (шардинг) и репликация. А об чём мысль - мне не понятно . Ну так какие ваши годы. зы: шардинг это НЕ фрагментация . авторвозможно Вы хотели написать, что в БД всё страницы? Тогда да, индекс - это набор страниц в БД всё биты (bits), так себе и запишите. Решили ещё и невежеством блеснуть. Я не удивлён Индекс состоит из набора страниц, узлов индекса, которые организованы в виде древовидной структуры - сбалансированного дерева. К чему тут ваше капитанское замечание о том, что "дерево - это набор узлов", мне не совсем понятно. А предположить, что я за 15 лет никогда не хранил древовидную структуру в БД и не использовал NoSQL - просто глупо. Особенно учитывая то, что моё резюме элементарно найти на сайте. Я намекал на то, что шардинг - это не репликация. Шардинг - это распределение, фрагментация. По разному переводят в разных изданиях, но суть одна. В БД есть подсистема хранения, она оперирует страницами. Таблицы - это логический блок. Так себе и запишите: подсистема хранения, - на досуге почитаете ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2018, 20:17 |
|
|
start [/forum/topic.php?fid=32&msg=39664804&tid=1539883]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
54ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
129ms |
get tp. blocked users: |
1ms |
others: | 251ms |
total: | 476ms |
0 / 0 |