powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Проектирование БД с созданием кучи таблиц
25 сообщений из 195, страница 3 из 8
Проектирование БД с созданием кучи таблиц
    #38190675
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EAV, не EAV - вам NoSQL нужен

Ага, конечно, в любую дырку -- NoSQL затычку.

А вообще аппроксимируйте все на конечный объем данных - сомневаюсь что при громадных объемах EAV

Где там громадные-то объёмы данных ? Сказали же -- несколько миллионов.
Громадные с миллиардов начинаются.
...
Рейтинг: 0 / 0
Проектирование БД с созданием кучи таблиц
    #38190680
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОзверинЗначенияАтрибутовДомаКодДома КодАтрибута Значение115211212022-1

Значения надо разносить ещё по типам данных, иначе будут нарушения доменной целостности, что очень плохо.
...
Рейтинг: 0 / 0
Проектирование БД с созданием кучи таблиц
    #38190685
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как я уже сказал, это требование

progandтак же пользователь может создавать свои пользовательские типы.

однозначно влечёт за собой выбор EAV в каком-то виде или хотя бы гибридной структуры EAV/реляционка.
Потому что в традиционной рел. модели пользователи не могут создавать новые объекты, добавлять к ним атрибуты.
Традиционная модель требует для этого эксклюзивной блокировки части БД.
...
Рейтинг: 0 / 0
Проектирование БД с созданием кучи таблиц
    #38190686
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovalexeyvgЕсли в запросе пишут attr1 = xxx and attr2 between M and K or attr2 < F То
в EAV это уже будет не очень быстро :-(
Да неужели? С EAV это будет выглядеть примерно так же:
Код: sql
1.
2.
3.
4.
5.
(AttrType='attr1' and AttrValue = xxx) or
(AttrType='attr2' and AttrValue between M and K) or
(AttrType='attr3' and AttrValue < F)
group by id
having count(*) = 3


Индекс по AttrType,AttrValue сильно поможет.


Дмитрий, не так это будет в EAV, в этом -то всё и дело. В смысле -- будет проще и быстрее.
...
Рейтинг: 0 / 0
Проектирование БД с созданием кучи таблиц
    #38190713
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv,

А зачем в каждую дырку совать ЕАВ??
у товарища ТС есть пару лет на создания поддерживающего его фреймворка??

Т.к. типы неизвестны и вообще все типо мусорка - NoSQL самое то! Любой мусор хранит и выбирает (замечу без доп затрат на N-е количество человеко лет создания фреймворков)! :)
...
Рейтинг: 0 / 0
Проектирование БД с созданием кучи таблиц
    #38190842
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv,

Соглашусь с рекомендацией EAV, единственное что замечу, что и "реляционный" подход вполне может оказаться применимым:

там, вроде как есть отсылка к модератору создаваемых данных. Сначала пихаем то что пришло в накопительную таблицу, а уже с правами модератора (или например по факту утверждения модератором, отдельным кроновым процессом с нужными правами) делаем CREATE/ALTER TABLE... непрятность только в том, что пользователь вместо оперативной реакции на добавление должен будет увидеть что-то типа "спасибо, отправлено на модерацию"... а модератор "ок. будет добавлено в 00:00:00 при следующем прогоне."

EAV позволяет сразу показать юзверю результат того, что оно настрогало...

NoSQL - потенциально интересно, практически непонятно
... среды "ключ-значение" и? как выбрать "все типы данных в радиусе ..." разве что хранить ключи в РМД...
, а выбрать "только такие типы в радиусе"? ... хранить в РМД ключи с описаниями... ну и "нафига попу баян"? :)
...
Рейтинг: 0 / 0
Проектирование БД с созданием кучи таблиц
    #38190847
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv,

значительно быстрее, но не совсем "проще"... хотя... писать сложные условия проверок несколько долго, но они по сути однотипны и делаются "генератором" запроса "на раз"... так что, может даже и проще. :)
...
Рейтинг: 0 / 0
Проектирование БД с созданием кучи таблиц
    #38190849
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
progandТак как пользователей может быть много, типов объектов тоже может быть очень много. Будут возможности выбора объектов определенного типа с различными фильтрами,...
И у меня встал вопрос, какая архитектура БД наиболее выгодна?
А если пользователи один по смыслу тип назову по разному? Например, один напишет тип "Игла", другой "Швейная игла", девушка назовет "иголочка", чувачек назовет "иголка блин". В том чиле с ошибкимИ напишут одно и тоже имя Типа? Тогда будут возможности выбора только части подмножеств объектов одного типа? Или на это случай Вы тоже предусмотрите "фтльтр базара".
...
Рейтинг: 0 / 0
Проектирование БД с созданием кучи таблиц
    #38190892
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Без ПОТСОЯННОГО присмотра специального программиста - контролера качества данных - еав ОБЯЗАТЕЛЬНО превратится в помойку, если пользователи действительно будут добавлять новые свойства, объекты и значений.
...
Рейтинг: 0 / 0
Проектирование БД с созданием кучи таблиц
    #38190929
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист-ЛюбительБез ПОТСОЯННОГО присмотра специального программиста - контролера качества данных - еав ОБЯЗАТЕЛЬНО превратится в помойку, если пользователи действительно будут добавлять новые свойства, объекты и значений.
"добавлять новые свойства, объекты " - обыкновенно занятие проектровщика БД. Т.е. у них пользователи могут заменять проектировщика. Почему они тада не могут заменит какого-то там программиста (пусть и специального)?
Так что, скорее всего, это для них это не вопрос.
Другое дело, еав есть еав. Все таки это заплатка, а не какая-то там типовая МД. Тут есть риски и программных ухищрений и излишенго роста энтропии проограмного обеспечения (ну типа эффектов помойки разного рода).
...
Рейтинг: 0 / 0
Проектирование БД с созданием кучи таблиц
    #38190996
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по мне т.к. пользователи будут вводить всякий бред - модерировать его бессмысленно, так же бессмысленно плодить для этой хрени сущности.
Я бы использовал либо XML колонки для псевдосущностей или а-ля hStore (если так уж нужно выделение аттрибутов для этого мусора - хотя юзерам влом будет городить непонятные для себя штуки - им проще ввести текст скопом) - куда бы пихал весь этот бред, а попутно требовал бы ввода тегов и вот их бы и индексировал!
...
Рейтинг: 0 / 0
Проектирование БД с созданием кучи таблиц
    #38191042
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
progandВ общем кол-во объектов теоретически может достигать несколько десятков миллионов. Количество типов объектов несколько тысяч. Используемая СУБД Postgresql.
Какой способ будет более правильным и быстрым?

1) В СУБД PostgreSQL есть возможность создание своих типов
2) В СУБД PostgreSQL есть возможность создание массивов для любых типов
3) В СУБД PostgreSQL есть справочник метаданных information_schema
4) В СУБД PostgreSQL достаточно гибкий язык PL/PgSQL

Т.о. задача сводиться к... обычному менеджеру SQL ;-)
Для примера смотреть в сторону IBExpert :-)
Там просто классно сделан ввод для таблиц.
Т.е. проектируем БД, а форму ввода получаем автоматически. Правильно настраиваем индексы ;-)

Т.к. в PGAdmine уже почти все есть. Осталось по структуре БД создать автоматическую форму для ввода данных в таблицу.
...
Рейтинг: 0 / 0
Проектирование БД с созданием кучи таблиц
    #38191163
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А зачем в каждую дырку совать ЕАВ??
у товарища ТС есть пару лет на создания поддерживающего его фреймворка??Простая, но годная для сабжа реализация ЕАВ пишется менее чем за неделю (Delphi+MSSQL).
Всего три формочки и полтора десятка SQL-ХП/ф-ций.

А вот фреймворк для 1 варианта будет с полмиллиона строк и пару человеко-лет.
И далеко не факт, что он будет работать заметно лучше ЕАВ. Если до этого вообще дойдет дело... :)
...
Рейтинг: 0 / 0
Проектирование БД с созданием кучи таблиц
    #38191786
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LSVПростая, но годная для сабжа реализация ЕАВ пишется менее чем за неделю (Delphi+MSSQL).
А вот фреймворк для 1 варианта будет с полмиллиона строк и пару человеко-лет.
Какие-то малодостоверные оценки.

Функционал "ввода-редактирования тысячи типов" в том и в другом случае одинаков, поэтому исключается из рассмотрения. Не знаю, что Вы называете "годной для сабжа реализацией ЕАВ". Сколь мне помнится, десятки миллионов объектов множим на количество атрибутов - итого получаем под миллиард строк в СУБД. Ну что я могу сказать.... мой ноут с такой базой ощутимо тормозит. Во всяком случае, я не дам зуб, что за неделю сделаю для него хорошую реализацию. Тысяча таблиц с десятками, может сотнями тысяч строк.... да мой ноут такого даже не заметит. И я хотел бы посмотреть на архитектора, которому для этого нужно полмиллиона строк кода. Это уже напоминает фразы убойных ПМ-ов.
...
Рейтинг: 0 / 0
Проектирование БД с созданием кучи таблиц
    #38191928
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer,

+1
...
Рейтинг: 0 / 0
Проектирование БД с созданием кучи таблиц
    #38192140
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerLSVПростая, но годная для сабжа реализация ЕАВ пишется менее чем за неделю (Delphi+MSSQL).
А вот фреймворк для 1 варианта будет с полмиллиона строк и пару человеко-лет.
Какие-то малодостоверные оценки.

Функционал "ввода-редактирования тысячи типов" в том и в другом случае одинаков, поэтому исключается из рассмотрения. Не знаю, что Вы называете "годной для сабжа реализацией ЕАВ". Сколь мне помнится, десятки миллионов объектов множим на количество атрибутов - итого получаем под миллиард строк в СУБД. Ну что я могу сказать.... мой ноут с такой базой ощутимо тормозит. Во всяком случае, я не дам зуб, что за неделю сделаю для него хорошую реализацию. Тысяча таблиц с десятками, может сотнями тысяч строк.... да мой ноут такого даже не заметит. И я хотел бы посмотреть на архитектора, которому для этого нужно полмиллиона строк кода. Это уже напоминает фразы убойных ПМ-ов.Какое отношение кол-во записей имеет к сложности схемы ?
Делаем справочник атрибутов (тип дома, код улицы, код города, уличный номер, площадь участка, кадастровый номер и т.д.).
Если сделать его древовидным, то можно в ГУИ красиво показывать группировать по группам атрибутов (как в инспекторе свойств).
Делаем таблицу с фактами (код объекта, код атрибута.... значение атрибута)

Вот и весь ЕАВ (упрощенно). Можно хранить хоть миллион фактов для каждого объекта.

Неужели недоходчиво объяснил ? :)
...
Рейтинг: 0 / 0
Проектирование БД с созданием кучи таблиц
    #38192335
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LSVКакое отношение кол-во записей имеет к сложности схемы ?
Никакого. Оно имеет отношение к производительности.

LSVЕсли сделать его древовидным, то можно в ГУИ красиво показывать
Возможно самая частая ошибка проектировщика - затачивание структуры данных под текущие потребности интерфейса.

LSVВот и весь ЕАВ (упрощенно). Можно хранить хоть миллион фактов для каждого объекта.
Можно. Но на моём ноуте это будет конкретно тормозить. На крутом сервере - не знаю, не рискну говорить без тестов. А вот "с тысячей таблиц" тот же самый объём данных будет летать и у меня на ноуте. Неужели недоходчиво объяснил?
...
Рейтинг: 0 / 0
Проектирование БД с созданием кучи таблиц
    #38192363
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer,
А что именно будет тормозить? Запрос "все обьекты в радиусе N" будет тормозить на eav в сравнении с union по тысяче таблиц?
...
Рейтинг: 0 / 0
Проектирование БД с созданием кучи таблиц
    #38192372
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот МатроскинА что именно будет тормозить?
"Всё", если можно так выразиться. Я просто эмпирически знаю, что в тех экспериментах, которые делаю на локале с БД - таблица в 10 млн. строк как правило устраивает меня по быстродействию, с таблицей в 100 млн. строк я, как правило, начинаю скучать.
...
Рейтинг: 0 / 0
Проектирование БД с созданием кучи таблиц
    #38192488
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer,

Вы сравниваете "теплое с мягким". ОДНА таблица с 100 строк работает быстрее ДРУГОЙ ОДНОЙ таблицы с миллионом строк.

Но:

ТЫСЯЧА таблиц в ОДНОМ запросе через UNION по 100 строк - далеко не факт, что будут быстрее чем 4 таблицы (EAV) по 100 тысяч строк в ОДНОМ запросе.
...
Рейтинг: 0 / 0
Проектирование БД с созданием кучи таблиц
    #38192552
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arhat109ТЫСЯЧА таблиц в ОДНОМ запросе через UNION по 100 строк - далеко не факт, что будут быстрее чем 4 таблицы (EAV) по 100 тысяч строк в ОДНОМ запросе.
Еще может иметь значение, что SQL все же заточен под соотвествие структуры МД структуре предметной области (ПО): в списке SELECT - Колонки, FROM Таблицы - элементы стуктуры. Если в ПО есть информация Зарплата (страховой, месяц, зарплат), в МД, например, таблица Зарплата (страховой, месяц, зарплат). То запросы о зраплате всех, нескольких, за квартал, и т.п. почти на естественном языке. Для EAV даже тут ломняк думать. В более сложных случаях тем более. Учитывая, что и с ОЦ в EAV все сложнее, то в запросах, возможно, надо еще учитвать возможную большую чем в нормальной МД мусорность данных.

ПО сути EAV - это "плохая" РМД. РМД потому что там все равно таблицы, SQL и декларативный способ для реляционных БД. "Плохая", потому что нарушается требование качества структурированных МД о соотвествии структуры МД структуре ПО: 4 таблицы вместо ТЫСЯЧИ.

Вот XML, NoSQL и т.п. - там другой тип МД - не РМД. Как бы они, насколько можно, заточенный под их структурирование.

В случае ТС РМД, может быть, не совсем адекватна. Возможно, "гибридная" РМД и ЕАV все же меньшее зло чем другая МД. Однако, чистая ЕAV, скорее всего, выглядела бы привлекательно, если бы БД создавлись с целью занять персонал их набором, а извлекать информацию совсем бы не требовалось.
...
Рейтинг: 0 / 0
Проектирование БД с созданием кучи таблиц
    #38192577
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfo,

много слов "ни о чем"... EAV != РМД. Это своя МД, моделируемая в РМД небольшим набором таблиц... или большим и динамическим DDL ... или "в сочетании".

, ежели моделировать, то надо делать это "целиком" с ОЦ и т.д. и всё встает на свои места.
...
Рейтинг: 0 / 0
Проектирование БД с созданием кучи таблиц
    #38192601
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arhat109vadiminfo,

много слов "ни о чем"... EAV != РМД. Это своя МД, моделируемая в РМД небольшим набором таблиц... или большим и динамическим DDL ... или "в сочетании".

, ежели моделировать, то надо делать это "целиком" с ОЦ и т.д. и всё встает на свои места.

Мало слов ни о чем. Свои какие-то предстаывления о МД.
По типу EAV - РМД (из таблиц, SQLи деклаоатиыные ОЦ типа ключ, внешний ключ, ограниченя на значения). На Вашем языке "моделируемая в РМД ".
Конкретная МД всегда "своя". Вы бы читали внимательнее "много слов". Там было про другие типы МД типа XML.
А конкретная МД всегда "своя". Т.е. ЕАВ РМД, только "вывернутая на изнаку" как тут ея када-то спрашивали.
"динамическим DDL" это уже из области компилирования какого-то кода, что можно для любой МД. На "свои места" декларативные ОЦ в РМД встают, если с структурного соотвествия МД ПО в силу того, что их так задумал автор данного типа МД.
...
Рейтинг: 0 / 0
Проектирование БД с созданием кучи таблиц
    #38192611
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arhat109ТЫСЯЧА таблиц в ОДНОМ запросе через UNION по 100 строк - далеко не факт, что будут быстрее чем 4 таблицы (EAV) по 100 тысяч строк в ОДНОМ запросе.
Ну во-первых, скорее "4 таблицы по миллиону строк". Во-вторых - довольно близко к "факт". В-третьих же, если "запросы к тысяче таблиц" представляют собой существенную часть фунционала, скорее всего будет сделана тысяча первая "таблица с общей частью", в которую и пойдут такие запросы. Даже не потому, что так быстрее, а потому, что так удобнее.
...
Рейтинг: 0 / 0
Проектирование БД с созданием кучи таблиц
    #38192698
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arhat109... Но:
ТЫСЯЧА таблиц в ОДНОМ запросе через UNION по 100 строк - далеко не факт, что будут быстрее чем 4 таблицы (EAV) по 100 тысяч строк в ОДНОМ запросе.
Так же, вряд ли факт, что "4 таблицы (EAV) по 100 тысяч строк в одном запросе" будут быстрее, чем "одна обычная таблица" при использовании СУБД.
...
Рейтинг: 0 / 0
25 сообщений из 195, страница 3 из 8
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Проектирование БД с созданием кучи таблиц
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]