Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопрос архитектурного плана / 25 сообщений из 92, страница 1 из 4
26.09.2015, 11:50
    #39061865
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос архитектурного плана
Долго думал в каком топике запостить, но все же выбрал этот.

В общем коллеги, делаем proof-of-concept одного амбициозненького проектика. Сложность вот в чем - пользователи сами будут создавать доменные объекты, и атрибуты могут быть добавлены в любое время(хотя частота модификаций не большая). Встал вопрос как хранить это в базе, ну или не в базе:) А да, приложение также подразумевает довольно развитый репортинг по этим доменным объектам.

Покопавшись в интернетах, пока отсеяли NoSQL и OODB, фиксированная структура тоже не подходит. На данный момент склоняемся к использованию EAV(Entity-Attribute-Value) модели. По факту три главных таблицы Entity-Atribute-Value и несколько для BooleanAttr, TextAttr ... и тд. Основные проблемы - при каждом запросе куча джойнов, сложно разобраться в схеме, нельзя сделать поле реквайред или задать диапазон значений. Планируем победить это так - Создать материализованные виды над каждой энтити, а для констрейнтов свою таблицу, и навернуть перситсенс слой сверху, который будет разбираться что и куда.

Решение громоздкое и сложное, но достойных альтернатив не вижу, может у кого есть подобный опыт или хорошие идеи? Рассмотрим любой вариант.
...
Рейтинг: 0 / 0
26.09.2015, 12:09
    #39061870
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос архитектурного плана
забыл ник,
1. Концепция.
Я бы рассмотрел сначала аналог и чётко обозначил аналог какой системы вы делаете.
авторLotus Notes – мощное клиент-серверное программное обеспечение для автоматизации совместной работы и управленческой деятельности, решения задач документооборота, хранения слабоструктурированной информации в корпоративных Интернет/Интранет системах.
2.
у EAV очень много недостатков. Пытаются использовать новички. Профи плюются).
Один из недостатков - тормоза и сложные запросы. Если упрётесь в производительность, то будете переписывать всё с нуля.
3.
Я бы всё таки запостил тему в Разработка ИС.
Ошибка будет дорого стоить, а критика будет полезна.
...
Рейтинг: 0 / 0
26.09.2015, 12:11
    #39061872
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос архитектурного плана
забыл никСложность вот в чем - пользователи сами будут создавать доменные объекты, и атрибуты могут быть добавлены в любое время
"доменные" - термин программиста.
Что будут создавать пользователи?
...
Рейтинг: 0 / 0
26.09.2015, 12:19
    #39061876
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос архитектурного плана
Вариант1 - EAV
Вар.2 - XML + XPath
...
Рейтинг: 0 / 0
26.09.2015, 12:24
    #39061880
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос архитектурного плана
Аналогов нет, в ИС наверное запощу.

Насчет недостатков EAV осведомлены, создается ощущение что не умеют готовить. Именно для этого и собираемся делать materialized view, количество обновлений должно быть невелико, и после каждого инсерта теоретически можно делать рефреш. Ну и само собой прослойку сверху придется написать и очень качественно. Не то чтобы прям мне эта идея нравится, просто не видим других альтернатив.
Переформулирую вопрос ко всем - Были ли у вас ситуации когда вам грубо говоря надо добавить атрибут в схему БД на лету, без DDL-скрипта, как решали? На мой взгляд NoSQL ничем не поможет, так как проблемы с репортингом еще больше. Объектно-ориентированные базы - можно замучаться с версиями, да и что-то они так и не взлетели.. А какие еще варианты?
...
Рейтинг: 0 / 0
26.09.2015, 12:24
    #39061882
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос архитектурного плана
Petro123Вар.2 - XML + XPath

Поясни что имеешь ввиду.
...
Рейтинг: 0 / 0
26.09.2015, 12:33
    #39061885
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос архитектурного плана
забыл ник,
забыл никАналогов нет
вот за эту фразу тебя в той ветке и побьют. Наверно нобелевская светит.
забыл никEAV осведомлены, создается ощущение что не умеют готовить.
помониторь ветку Разработка БД. Ты не прав.
По крайней мере должен быть очень сильный выделенный чел Разработчик БД.
Кроме того трудность в динамических построителях запросов на такую модель.

забыл никпрослойку сверху
+1
как во всех ERP - ядро и API сверху для программистов БЛ. Может даже IDE для них.

забыл никПоясни что имеешь ввиду.
как что?
Оракл хранит в поле собственного типа XML.
Запросы на своём языке по стандарту. Добавляй любой атрибут от юзверя.
...
Рейтинг: 0 / 0
26.09.2015, 12:40
    #39061888
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос архитектурного плана
забыл никПереформулирую вопрос ко всем - Были ли у вас ситуации когда вам грубо говоря надо добавить атрибут в схему БД на лету
За 3 года не было тут таких тем с успешными реальными ответами.
Были вопросы с попыткой создания таких систем.
AFAIK
...
Рейтинг: 0 / 0
26.09.2015, 12:47
    #39061893
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос архитектурного плана
забыл никбез DDL-скрипта, как решали?
авторЯ пока ни разу не сталкивался с задачей хранения "произвольных структур", хотя видел уже, наверное, несколько десятков EAV- и XML-реализаций. Но во всех случаях за понятием "произвольная структура" скрывалось неумение разработчиков работать с DML. :)
EAV vs XML в таблицах
на подумать.....правда 2009 год. Делай скидку.
...
Рейтинг: 0 / 0
26.09.2015, 13:21
    #39061902
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос архитектурного плана
Да, спасибо почитаю. Навскидку с XML сразу вижу такую проблему - если каждая запись это xml, то какие-то поля могут быть пропущены, как показать юзеру все атрибуты сущности на экране? в случае eav должно прокатить select from attributes join on entity_id.
...
Рейтинг: 0 / 0
26.09.2015, 13:40
    #39061913
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос архитектурного плана
Я так делал. Есть стационарная часть таблицы. Атрибуты которые забиты на уровне DDL.
И есть некоторая динамическая часть ATTR_LIST, в которую можно в реальном времени
пихать изменения к бизнес-спекам.

Когда изменения начнут тормозить систему - формируете технологическое окно.
Перебрасываете их в стационарную часть индексируете и снова стартуете.

IDATTR1ATTR2ATTR_LIST0116ATTR3=45,ATTR4='16/02/2015',ATTR5=true1215ATTR3=40,ATTR5=false

Единственная сложность подпилить свой ORM таким образом чтобы он был
полиморфен к способу хранения.
...
Рейтинг: 0 / 0
26.09.2015, 14:01
    #39061923
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос архитектурного плана
забыл никДа, спасибо почитаю. Навскидку с XML сразу вижу такую проблему - если каждая запись это xml, то какие-то поля могут быть пропущены, как показать юзеру все атрибуты сущности на экране? в случае eav должно прокатить select from attributes join on entity_id.
ты не ответил, что за сущность на экране?
ВИ_1
======
- юзверь решил завести справочник ФизЛица
- длбавил 3 атрибута: Рост\Вес\Пол
- юзверь решил завести справочник Паровозы
- добавил 3 атрибута: Топливо\КлассИспользования
- дальше что?
...
Рейтинг: 0 / 0
26.09.2015, 14:02
    #39061924
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос архитектурного плана
забыл никкак показать юзеру все атрибуты сущности на экране? в случае eav должно прокатить select from attributes join on entity_id.
в техническом плане, ГУИ не зависит от ядра системы\физической модели(EAV или XML)
...
Рейтинг: 0 / 0
26.09.2015, 14:03
    #39061925
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос архитектурного плана
забыл никв случае eav должно прокатить select from attributes join on entity_id.
при XML - select xPath тра-та-та
...
Рейтинг: 0 / 0
26.09.2015, 14:05
    #39061926
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос архитектурного плана
maytonКогда изменения начнут тормозить систему - формируете технологическое окно.
Перебрасываете их в стационарную часть индексируете и снова стартуете.
как вариант, можно было сузить техОкно до 3 минут и сразу DDL при сохранении конфигурации (а-ля 1С)
...
Рейтинг: 0 / 0
26.09.2015, 14:17
    #39061930
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос архитектурного плана
Petro123maytonКогда изменения начнут тормозить систему - формируете технологическое окно.
Перебрасываете их в стационарную часть индексируете и снова стартуете.
как вариант, можно было сузить техОкно до 3 минут и сразу DDL при сохранении конфигурации (а-ля 1С)
Я к сожалению не изучал архитектуру 1С и не знаю как там внутре.

Сразу DDL - нельзя. В некоторых DBMS, DDL операции нельзя сделать during
transaction. Они также форсируют коммит и инвалидируют состояние stored
procedures/packages. Поэтому нужно исследовать внимательно этот вопрос.
К каким последствиям приведёт резкий DDL в нагруженной системе где
тип DBMS - неизвестен - я не знаю.
...
Рейтинг: 0 / 0
26.09.2015, 14:26
    #39061934
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос архитектурного плана
maytonПоэтому нужно исследовать внимательно этот вопрос.
конечно нужно.
РСУБД как раз и защищает модель при её модификации реинвалидацией хранимок и коммитом.
Одно дело оттягивать этот процесс а-ля закрытие оперДня.
Другое дело, делать изменение атрибутов _штатной операцией_ в реальном времени.
...
Рейтинг: 0 / 0
26.09.2015, 14:54
    #39061942
ViPRos
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос архитектурного плана
забыл ник,

а купить?
...
Рейтинг: 0 / 0
26.09.2015, 14:58
    #39061944
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос архитектурного плана
ViPRos, что купить? Топик звучит как "вопрос архитектурного плана".
...
Рейтинг: 0 / 0
26.09.2015, 15:01
    #39061947
ViPRos
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос архитектурного плана
maytonViPRos, что купить? Топик звучит как "вопрос архитектурного плана".
ну про архитектурный план ты сказал что надо делать (только вот технологическое окно - ерунда)
а я подумал, а вдруг ему нужна реализация этой архитектуры
...
Рейтинг: 0 / 0
26.09.2015, 15:03
    #39061948
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос архитектурного плана
Я-бы для начал предложил пренести топик в Разработку Инфо-систем.

Я для продажи консалтингов или готовых решений ИМХО здесь еще мало информации.
...
Рейтинг: 0 / 0
26.09.2015, 15:03
    #39061949
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос архитектурного плана
И для продажи...
...
Рейтинг: 0 / 0
26.09.2015, 15:07
    #39061950
ViPRos
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос архитектурного плана
mayton,

да не надо никуда переносить
там таких тем уже около пару сотен
я тут не бываю, потому подумал, а вдруг кому то реально нужна гибкая система, а не бла бла про джойны всякие с констрейтами :)
...
Рейтинг: 0 / 0
26.09.2015, 15:08
    #39061951
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос архитектурного плана
Вот именно поэтому и надо переносить. Черкну письмецо...
...
Рейтинг: 0 / 0
26.09.2015, 15:28
    #39061960
rdm
rdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос архитектурного плана
забыл никДолго думал в каком топике запостить, но все же выбрал этот.

В общем коллеги, делаем proof-of-concept одного амбициозненького проектика. Сложность вот в чем - пользователи сами будут создавать доменные объекты, и атрибуты могут быть добавлены в любое время(хотя частота модификаций не большая). Встал вопрос как хранить это в базе, ну или не в базе:) А да, приложение также подразумевает довольно развитый репортинг по этим доменным объектам.

Покопавшись в интернетах, пока отсеяли NoSQL и OODB, фиксированная структура тоже не подходит. На данный момент склоняемся к использованию EAV(Entity-Attribute-Value) модели. По факту три главных таблицы Entity-Atribute-Value и несколько для BooleanAttr, TextAttr ... и тд. Основные проблемы - при каждом запросе куча джойнов, сложно разобраться в схеме, нельзя сделать поле реквайред или задать диапазон значений. Планируем победить это так - Создать материализованные виды над каждой энтити, а для констрейнтов свою таблицу, и навернуть перситсенс слой сверху, который будет разбираться что и куда.

Решение громоздкое и сложное, но достойных альтернатив не вижу, может у кого есть подобный опыт или хорошие идеи? Рассмотрим любой вариант.
Вопрос от дилетанта. Чем это отличается от того же yandex market'а, где товары имеют кучу произвольных параметров/атрибутов (document oriented db)?
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопрос архитектурного плана / 25 сообщений из 92, страница 1 из 4
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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