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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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