Size: a a a

Архитектура ИТ-решений

2019 December 12

GK

Gennadiy Kruglov in Архитектура ИТ-решений
Вы описали пример на каком-то африканском языке. Я попытался как-то вывести Вас на диалог, но не получается.
источник

AW

Alex Wells in Архитектура ИТ-решений
Gennadiy Kruglov
Вы описали пример на каком-то африканском языке. Я попытался как-то вывести Вас на диалог, но не получается.
Что именно на африканском? Обычная таблица из реляционной базы? Десериализация? Обьект? Тип? Фабрика?

Вполне простой пример.
источник

GK

Gennadiy Kruglov in Архитектура ИТ-решений
Опция это что? Опции в клиентском коде чего? Опция и фича это синонимы (Вы пишите, "опция равно какая-то фича")? Если синонимы, почему Вы говорите отдельно об опциях и фичах? Клиентский код по отношению к чему? Интерфейс для работы извне чего?

По второму примеру.

Что собой представляет конфигурация типа? Почему её нельзя получить с помощью рефлексии, чтобы потом использовать в фабриках и где угодно?
источник

AW

Alex Wells in Архитектура ИТ-решений
Gennadiy Kruglov
Опция это что? Опции в клиентском коде чего? Опция и фича это синонимы (Вы пишите, "опция равно какая-то фича")? Если синонимы, почему Вы говорите отдельно об опциях и фичах? Клиентский код по отношению к чему? Интерфейс для работы извне чего?

По второму примеру.

Что собой представляет конфигурация типа? Почему её нельзя получить с помощью рефлексии, чтобы потом использовать в фабриках и где угодно?
источник

AW

Alex Wells in Архитектура ИТ-решений
Фичи.
источник

AW

Alex Wells in Архитектура ИТ-решений
Тип опции и фича - синонимы.
источник

GK

Gennadiy Kruglov in Архитектура ИТ-решений
Теперь всё понятно. Вы всё правильно делаете.
источник

AW

Alex Wells in Архитектура ИТ-решений
Gennadiy Kruglov
Опция это что? Опции в клиентском коде чего? Опция и фича это синонимы (Вы пишите, "опция равно какая-то фича")? Если синонимы, почему Вы говорите отдельно об опциях и фичах? Клиентский код по отношению к чему? Интерфейс для работы извне чего?

По второму примеру.

Что собой представляет конфигурация типа? Почему её нельзя получить с помощью рефлексии, чтобы потом использовать в фабриках и где угодно?
Клиентский код по отношению к некой системе, которую я приводил в пример выше.
источник

AW

Alex Wells in Архитектура ИТ-решений
Супер, спасибо)
источник

d

dreamore in Архитектура ИТ-решений
Alex Wells
Причем тут рефлекция? Каким образом имея поле "type" со значением "фича_1" мне рефлекция поможет вытащить конфигурацию для этого типа, вызвать фабрику каких-то обьектов, присущим этому типу (это реальный юс кейс, детали упускаются) или узнать, как и во что десериализировать данные из поля "data"?

id | type | data
1  | f1       | 123
2  | f2       | {"sections": ["one", "two"]}
3  | f1       |  877


Имея такие данные, каким образом мне десириализировать data в обьект типа LimitedOptionData для опций 1 и 3, и в обьект типа SectionedOptionData  для опции 2?

Каким образом мне создать обьекты типа  F1OptionPresenter для опций 1 и 3, и обьект типа F2OptionPresenter для опции 2?

Рефлекция тут ни при чем.
Вижу вы начинаете строить key-value-attribute схему бд. Это антипаттерн. У вас база не нормализована, потом выборки не сможете делать и расширяемость будет страдать. Плюс исходный код начнет завязываться из-за бизнес требований на содержимое колонок типа вашей data, что ведёт к утечке контроля
источник

d

dreamore in Архитектура ИТ-решений
То есть перед тем как начать работать собственно с данными у вас появляется шаг с получением метасхемы из бд, конструированием типов в рантайме, и только потом собственно полезная нагрузка. Последствий много.
источник

d

dreamore in Архитектура ИТ-решений
Ну и в итоге ничего кроме монолита не получится построить, то есть теряете в гибкости дальнейшего развития. Или может каждому микросервисы свой key-value-attribute конструктор типов сделать? Или может сделать это отдельным микросервисом?) В общем губите гибкость
источник

A

Andreλ in Архитектура ИТ-решений
dreamore
Ну и в итоге ничего кроме монолита не получится построить, то есть теряете в гибкости дальнейшего развития. Или может каждому микросервисы свой key-value-attribute конструктор типов сделать? Или может сделать это отдельным микросервисом?) В общем губите гибкость
Монолитность тут вообще не в тему как бы. Далеко не в каждом сервисе такой механизм нужен.
источник

d

dreamore in Архитектура ИТ-решений
Возможно, но про будущее надо тоже думать
источник

d

dreamore in Архитектура ИТ-решений
Ещё добавлю что в обозначенном случае логическая модель данных не совпадает с физической моделью данных. Дополнительная сложность понимания. Сапорту системы, равно её как и всем новым сотрудникам, потом обучение потребуется или детальная документация схемы.
источник

d

dreamore in Архитектура ИТ-решений
Если все же продолжите в ту же сторону копать, то совет - перееедьте с рсубд на документное хранилище
источник

GK

Gennadiy Kruglov in Архитектура ИТ-решений
dreamore
Вижу вы начинаете строить key-value-attribute схему бд. Это антипаттерн. У вас база не нормализована, потом выборки не сможете делать и расширяемость будет страдать. Плюс исходный код начнет завязываться из-за бизнес требований на содержимое колонок типа вашей data, что ведёт к утечке контроля
В данном случае автору вопроса нужно садиться и читать учебник по программированию, а потом по базам данных. Думаю, вряд ли кто-то даст лучший совет.
источник

PD

Phil Delgyado in Архитектура ИТ-решений
dreamore
Если все же продолжите в ту же сторону копать, то совет - перееедьте с рсубд на документное хранилище
При этом база данных может остаться той же, просто метод работы с ней поменяется.
источник

PD

Phil Delgyado in Архитектура ИТ-решений
Нуу, с появлением jsonb осмысленность eav сильно уменьшилась.
источник

GK

Gennadiy Kruglov in Архитектура ИТ-решений
Игорь, почитай пожалуйста вопросы. По-моему очевидно, что нужно базу подводить. Я не шучу.
источник