|
|
|
Вопрос архитектурного плана
|
|||
|---|---|---|---|
|
#18+
Долго думал в каком топике запостить, но все же выбрал этот. В общем коллеги, делаем proof-of-concept одного амбициозненького проектика. Сложность вот в чем - пользователи сами будут создавать доменные объекты, и атрибуты могут быть добавлены в любое время(хотя частота модификаций не большая). Встал вопрос как хранить это в базе, ну или не в базе:) А да, приложение также подразумевает довольно развитый репортинг по этим доменным объектам. Покопавшись в интернетах, пока отсеяли NoSQL и OODB, фиксированная структура тоже не подходит. На данный момент склоняемся к использованию EAV(Entity-Attribute-Value) модели. По факту три главных таблицы Entity-Atribute-Value и несколько для BooleanAttr, TextAttr ... и тд. Основные проблемы - при каждом запросе куча джойнов, сложно разобраться в схеме, нельзя сделать поле реквайред или задать диапазон значений. Планируем победить это так - Создать материализованные виды над каждой энтити, а для констрейнтов свою таблицу, и навернуть перситсенс слой сверху, который будет разбираться что и куда. Решение громоздкое и сложное, но достойных альтернатив не вижу, может у кого есть подобный опыт или хорошие идеи? Рассмотрим любой вариант. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2015, 11:50 |
|
||
|
Вопрос архитектурного плана
|
|||
|---|---|---|---|
|
#18+
забыл ник, 1. Концепция. Я бы рассмотрел сначала аналог и чётко обозначил аналог какой системы вы делаете. авторLotus Notes – мощное клиент-серверное программное обеспечение для автоматизации совместной работы и управленческой деятельности, решения задач документооборота, хранения слабоструктурированной информации в корпоративных Интернет/Интранет системах. 2. у EAV очень много недостатков. Пытаются использовать новички. Профи плюются). Один из недостатков - тормоза и сложные запросы. Если упрётесь в производительность, то будете переписывать всё с нуля. 3. Я бы всё таки запостил тему в Разработка ИС. Ошибка будет дорого стоить, а критика будет полезна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2015, 12:09 |
|
||
|
Вопрос архитектурного плана
|
|||
|---|---|---|---|
|
#18+
забыл никСложность вот в чем - пользователи сами будут создавать доменные объекты, и атрибуты могут быть добавлены в любое время "доменные" - термин программиста. Что будут создавать пользователи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2015, 12:11 |
|
||
|
Вопрос архитектурного плана
|
|||
|---|---|---|---|
|
#18+
Вариант1 - EAV Вар.2 - XML + XPath ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2015, 12:19 |
|
||
|
Вопрос архитектурного плана
|
|||
|---|---|---|---|
|
#18+
Аналогов нет, в ИС наверное запощу. Насчет недостатков EAV осведомлены, создается ощущение что не умеют готовить. Именно для этого и собираемся делать materialized view, количество обновлений должно быть невелико, и после каждого инсерта теоретически можно делать рефреш. Ну и само собой прослойку сверху придется написать и очень качественно. Не то чтобы прям мне эта идея нравится, просто не видим других альтернатив. Переформулирую вопрос ко всем - Были ли у вас ситуации когда вам грубо говоря надо добавить атрибут в схему БД на лету, без DDL-скрипта, как решали? На мой взгляд NoSQL ничем не поможет, так как проблемы с репортингом еще больше. Объектно-ориентированные базы - можно замучаться с версиями, да и что-то они так и не взлетели.. А какие еще варианты? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2015, 12:24 |
|
||
|
Вопрос архитектурного плана
|
|||
|---|---|---|---|
|
#18+
Petro123Вар.2 - XML + XPath Поясни что имеешь ввиду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2015, 12:24 |
|
||
|
Вопрос архитектурного плана
|
|||
|---|---|---|---|
|
#18+
забыл ник, забыл никАналогов нет вот за эту фразу тебя в той ветке и побьют. Наверно нобелевская светит. забыл никEAV осведомлены, создается ощущение что не умеют готовить. помониторь ветку Разработка БД. Ты не прав. По крайней мере должен быть очень сильный выделенный чел Разработчик БД. Кроме того трудность в динамических построителях запросов на такую модель. забыл никпрослойку сверху +1 как во всех ERP - ядро и API сверху для программистов БЛ. Может даже IDE для них. забыл никПоясни что имеешь ввиду. как что? Оракл хранит в поле собственного типа XML. Запросы на своём языке по стандарту. Добавляй любой атрибут от юзверя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2015, 12:33 |
|
||
|
Вопрос архитектурного плана
|
|||
|---|---|---|---|
|
#18+
забыл никПереформулирую вопрос ко всем - Были ли у вас ситуации когда вам грубо говоря надо добавить атрибут в схему БД на лету За 3 года не было тут таких тем с успешными реальными ответами. Были вопросы с попыткой создания таких систем. AFAIK ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2015, 12:40 |
|
||
|
Вопрос архитектурного плана
|
|||
|---|---|---|---|
|
#18+
забыл никбез DDL-скрипта, как решали? авторЯ пока ни разу не сталкивался с задачей хранения "произвольных структур", хотя видел уже, наверное, несколько десятков EAV- и XML-реализаций. Но во всех случаях за понятием "произвольная структура" скрывалось неумение разработчиков работать с DML. :) EAV vs XML в таблицах на подумать.....правда 2009 год. Делай скидку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2015, 12:47 |
|
||
|
Вопрос архитектурного плана
|
|||
|---|---|---|---|
|
#18+
Да, спасибо почитаю. Навскидку с XML сразу вижу такую проблему - если каждая запись это xml, то какие-то поля могут быть пропущены, как показать юзеру все атрибуты сущности на экране? в случае eav должно прокатить select from attributes join on entity_id. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2015, 13:21 |
|
||
|
Вопрос архитектурного плана
|
|||
|---|---|---|---|
|
#18+
Я так делал. Есть стационарная часть таблицы. Атрибуты которые забиты на уровне DDL. И есть некоторая динамическая часть ATTR_LIST, в которую можно в реальном времени пихать изменения к бизнес-спекам. Когда изменения начнут тормозить систему - формируете технологическое окно. Перебрасываете их в стационарную часть индексируете и снова стартуете. IDATTR1ATTR2ATTR_LIST0116ATTR3=45,ATTR4='16/02/2015',ATTR5=true1215ATTR3=40,ATTR5=false Единственная сложность подпилить свой ORM таким образом чтобы он был полиморфен к способу хранения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2015, 13:40 |
|
||
|
Вопрос архитектурного плана
|
|||
|---|---|---|---|
|
#18+
забыл никДа, спасибо почитаю. Навскидку с XML сразу вижу такую проблему - если каждая запись это xml, то какие-то поля могут быть пропущены, как показать юзеру все атрибуты сущности на экране? в случае eav должно прокатить select from attributes join on entity_id. ты не ответил, что за сущность на экране? ВИ_1 ====== - юзверь решил завести справочник ФизЛица - длбавил 3 атрибута: Рост\Вес\Пол - юзверь решил завести справочник Паровозы - добавил 3 атрибута: Топливо\КлассИспользования - дальше что? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2015, 14:01 |
|
||
|
Вопрос архитектурного плана
|
|||
|---|---|---|---|
|
#18+
забыл никкак показать юзеру все атрибуты сущности на экране? в случае eav должно прокатить select from attributes join on entity_id. в техническом плане, ГУИ не зависит от ядра системы\физической модели(EAV или XML) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2015, 14:02 |
|
||
|
Вопрос архитектурного плана
|
|||
|---|---|---|---|
|
#18+
забыл никв случае eav должно прокатить select from attributes join on entity_id. при XML - select xPath тра-та-та ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2015, 14:03 |
|
||
|
Вопрос архитектурного плана
|
|||
|---|---|---|---|
|
#18+
maytonКогда изменения начнут тормозить систему - формируете технологическое окно. Перебрасываете их в стационарную часть индексируете и снова стартуете. как вариант, можно было сузить техОкно до 3 минут и сразу DDL при сохранении конфигурации (а-ля 1С) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2015, 14:05 |
|
||
|
Вопрос архитектурного плана
|
|||
|---|---|---|---|
|
#18+
Petro123maytonКогда изменения начнут тормозить систему - формируете технологическое окно. Перебрасываете их в стационарную часть индексируете и снова стартуете. как вариант, можно было сузить техОкно до 3 минут и сразу DDL при сохранении конфигурации (а-ля 1С) Я к сожалению не изучал архитектуру 1С и не знаю как там внутре. Сразу DDL - нельзя. В некоторых DBMS, DDL операции нельзя сделать during transaction. Они также форсируют коммит и инвалидируют состояние stored procedures/packages. Поэтому нужно исследовать внимательно этот вопрос. К каким последствиям приведёт резкий DDL в нагруженной системе где тип DBMS - неизвестен - я не знаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2015, 14:17 |
|
||
|
Вопрос архитектурного плана
|
|||
|---|---|---|---|
|
#18+
maytonПоэтому нужно исследовать внимательно этот вопрос. конечно нужно. РСУБД как раз и защищает модель при её модификации реинвалидацией хранимок и коммитом. Одно дело оттягивать этот процесс а-ля закрытие оперДня. Другое дело, делать изменение атрибутов _штатной операцией_ в реальном времени. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2015, 14:26 |
|
||
|
Вопрос архитектурного плана
|
|||
|---|---|---|---|
|
#18+
забыл ник, а купить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2015, 14:54 |
|
||
|
Вопрос архитектурного плана
|
|||
|---|---|---|---|
|
#18+
ViPRos, что купить? Топик звучит как "вопрос архитектурного плана". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2015, 14:58 |
|
||
|
Вопрос архитектурного плана
|
|||
|---|---|---|---|
|
#18+
maytonViPRos, что купить? Топик звучит как "вопрос архитектурного плана". ну про архитектурный план ты сказал что надо делать (только вот технологическое окно - ерунда) а я подумал, а вдруг ему нужна реализация этой архитектуры ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2015, 15:01 |
|
||
|
Вопрос архитектурного плана
|
|||
|---|---|---|---|
|
#18+
Я-бы для начал предложил пренести топик в Разработку Инфо-систем. Я для продажи консалтингов или готовых решений ИМХО здесь еще мало информации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2015, 15:03 |
|
||
|
Вопрос архитектурного плана
|
|||
|---|---|---|---|
|
#18+
И для продажи... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2015, 15:03 |
|
||
|
Вопрос архитектурного плана
|
|||
|---|---|---|---|
|
#18+
mayton, да не надо никуда переносить там таких тем уже около пару сотен я тут не бываю, потому подумал, а вдруг кому то реально нужна гибкая система, а не бла бла про джойны всякие с констрейтами :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2015, 15:07 |
|
||
|
Вопрос архитектурного плана
|
|||
|---|---|---|---|
|
#18+
Вот именно поэтому и надо переносить. Черкну письмецо... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2015, 15:08 |
|
||
|
Вопрос архитектурного плана
|
|||
|---|---|---|---|
|
#18+
забыл никДолго думал в каком топике запостить, но все же выбрал этот. В общем коллеги, делаем proof-of-concept одного амбициозненького проектика. Сложность вот в чем - пользователи сами будут создавать доменные объекты, и атрибуты могут быть добавлены в любое время(хотя частота модификаций не большая). Встал вопрос как хранить это в базе, ну или не в базе:) А да, приложение также подразумевает довольно развитый репортинг по этим доменным объектам. Покопавшись в интернетах, пока отсеяли NoSQL и OODB, фиксированная структура тоже не подходит. На данный момент склоняемся к использованию EAV(Entity-Attribute-Value) модели. По факту три главных таблицы Entity-Atribute-Value и несколько для BooleanAttr, TextAttr ... и тд. Основные проблемы - при каждом запросе куча джойнов, сложно разобраться в схеме, нельзя сделать поле реквайред или задать диапазон значений. Планируем победить это так - Создать материализованные виды над каждой энтити, а для констрейнтов свою таблицу, и навернуть перситсенс слой сверху, который будет разбираться что и куда. Решение громоздкое и сложное, но достойных альтернатив не вижу, может у кого есть подобный опыт или хорошие идеи? Рассмотрим любой вариант. Вопрос от дилетанта. Чем это отличается от того же yandex market'а, где товары имеют кучу произвольных параметров/атрибутов (document oriented db)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2015, 15:28 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=117&tid=2124890]: |
0ms |
get settings: |
7ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
29ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 212ms |
| total: | 308ms |

| 0 / 0 |
