Size: a a a

Software Design/Architecture/Zen

2021 March 09

A

Adv0cat in Software Design/Architecture/Zen
Зачем нам ваши шаги в штанах?
источник

DK

Daniil Kostin in Software Design/Architecture/Zen
Правильно ли я делаю? Или лучше все вложенноедерево дежать? Или не id а сразу элементы?
Что можно улучшить?

У меня есть дерево вложенных категорий, если категория меняется или меняются ее элементы - ее баланс необходимо пересчитать.

Категория имеет:
1. id
2. parentId
3. список id потомков уровня ниже

при добавлении/удалении элемента иммитит событие пересчета.

По событию пересчета сервис пересчета инвалидирует parentId категорию, что иммитит сыбытие пересчета для нее и пересчитывает текущую.

Для UI из списка id потомков категории формируется просто map(childId => entity),  entity существует в домене, а сам список нет. Который реагирует на доменные события для перерисовки состояния.
источник

🐴🐴

🐴 🐴 in Software Design/Architecture/Zen
Приглашаем 16 марта в 18:00 на митап по архитектуре продуктов — поговорим о микросервисной архитектуре и использовании git submodules.

В программе выступления спикеров от Банка «Санкт-Петербург» и Lipt-Soft, интерактив и подарки за классные вопросы спикерам.

На митап мы приглашаем специалистов уровня миддл и выше. Участие бесплатное, но нужно зарегистрироваться. Мы пришлем вам приглашение после модерации: https://bit.ly/2OEnnly


#реклама
источник
2021 March 11

˸A

˸̧̨ ͅBlack Akula˸̧̨ ... in Software Design/Architecture/Zen
Daniil Kostin
Правильно ли я делаю? Или лучше все вложенноедерево дежать? Или не id а сразу элементы?
Что можно улучшить?

У меня есть дерево вложенных категорий, если категория меняется или меняются ее элементы - ее баланс необходимо пересчитать.

Категория имеет:
1. id
2. parentId
3. список id потомков уровня ниже

при добавлении/удалении элемента иммитит событие пересчета.

По событию пересчета сервис пересчета инвалидирует parentId категорию, что иммитит сыбытие пересчета для нее и пересчитывает текущую.

Для UI из списка id потомков категории формируется просто map(childId => entity),  entity существует в домене, а сам список нет. Который реагирует на доменные события для перерисовки состояния.
Может, вам надо nested set?
источник

M

Mixer in Software Design/Architecture/Zen
˸̧̨ ͅBlack Akula˸̧̨ ͅ ̤ ̬̪
Может, вам надо nested set?
+
источник
2021 March 12

КГ

Константин Грачев... in Software Design/Architecture/Zen
источник

˸A

˸̧̨ ͅBlack Akula˸̧̨ ... in Software Design/Architecture/Zen
источник

DK

Daniil Kostin in Software Design/Architecture/Zen
˸̧̨ ͅBlack Akula˸̧̨ ͅ ̤ ̬̪
Может, вам надо nested set?
Nested set же не про домен, а про представление в базе. У меня основная делема - это держать ли только видимый слой категорий, как открытая дирректория в винде. Или держать все дерево в модели. Второе, помоему, крайне ресурсо-затратно.
источник

К

Карательный отряд... in Software Design/Architecture/Zen
Доброго времени суток, вопрос общего характера: как обеспечить шардирование например по 2 нодам базы данных? с помощью uuid? с помощью serial bigint? кто должен обеспечивать диспетчирезацию шаридования? девопс? прикладной (возможно самописный) балансировщик/менеджер? или само приложение? где создавать идентификаторы? в базе или на приложении? это все относится к высоконагруженным масштабируемым системам
источник

К

Карательный отряд... in Software Design/Architecture/Zen
Daniil Kostin
Nested set же не про домен, а про представление в базе. У меня основная делема - это держать ли только видимый слой категорий, как открытая дирректория в винде. Или держать все дерево в модели. Второе, помоему, крайне ресурсо-затратно.
обычно при работе с деревом ипользуют ноды, у нод есть набор стандартных действий get, add, remove, update (как на фронте так и на беке) почему не реализовать все одинаково и там и там? структуру держать затратно и не нужно, в случае если есть возможность составлять рекурсивные запросы в базу это несложно сделать на беке
источник

ch

central hardware in Software Design/Architecture/Zen
Карательный отряд
Доброго времени суток, вопрос общего характера: как обеспечить шардирование например по 2 нодам базы данных? с помощью uuid? с помощью serial bigint? кто должен обеспечивать диспетчирезацию шаридования? девопс? прикладной (возможно самописный) балансировщик/менеджер? или само приложение? где создавать идентификаторы? в базе или на приложении? это все относится к высоконагруженным масштабируемым системам
UUID же создан специально для этого, там и алгоритм генерации должен брать mac сетевой карты и еще что то чтобы не было колизий
источник

К

Карательный отряд... in Software Design/Architecture/Zen
central hardware
UUID же создан специально для этого, там и алгоритм генерации должен брать mac сетевой карты и еще что то чтобы не было колизий
тоесть uuid можно раскодировать в бадягу которая может быть косвенным признаком идентификации ноды бд?
источник

DK

Daniil Kostin in Software Design/Architecture/Zen
Карательный отряд
тоесть uuid можно раскодировать в бадягу которая может быть косвенным признаком идентификации ноды бд?
Да, он блоками пишется. Можно вырезать блок МАК адресса и использовать его для индентификатора ноды.
https://ru.wikipedia.org/wiki/UUID#%D0%92%D0%B5%D1%80%D1%81%D0%B8%D1%8F_1_(%D0%B2%D1%80%D0%B5%D0%BC%D1%8F_%D0%B8_MAC-%D0%B0%D0%B4%D1%80%D0%B5%D1%81)
Wikipedia
UUID
UUID (англ. universally unique identifier «универсальный уникальный идентификатор») — стандарт идентификации, используемый в создании программного обеспечения, стандартизированный Open Software Foundation (OSF) как часть DCE — среды распределённых вычислений. Основное назначение UUID — это позволить распределённым системам уникально идентифицировать информацию без центра координации. Таким образом, любой может создать UUID и использовать его для идентификации чего-либо с приемлемым уровнем уверенности, что данный идентификатор непреднамеренно никогда не будет использован для чего-то ещё. Поэтому информация, помеченная с помощью UUID, может быть помещена позже в общую базу данных, без необходимости разрешения конфликта имен. Наиболее распространённым использованием данного стандарта является Globally Unique Identifier (GUID) фирмы Microsoft. Другими значительными пользователями являются Linux (файловая система ext2/ext3, LUKS шифрованные разделы, GNOME, KDE) и Mac OS X — все они применяют реализацию, полученную…
источник

MG

Max Grom in Software Design/Architecture/Zen
А зачем вообще брать часть uuid v1 для признака шардирования? Это типа шардирование ради шардирования? Какой смысл в таком разделении по такому признаку?
источник

EC

Ernan Cortez in Software Design/Architecture/Zen
Привет, друзья и коллеги. Простите меня за анонс, он не коммерческий, а скорее социальный и информативный. Уверен, многим тут будет интересно и они примут участие в хакатоне. Место подходящее, в списке задач для решения есть релевантные тематике чата.

Audithon 2021 — хакатон Счетной палаты Российской Федерации. Тематика направлена на решение задач в области государственного управления и аудита. Оператор мероприятия — корпоративный акселератор GenerationS Российской венчурной компании.

Заявки принимаются как от готовых команд, так и от индивидуальных участников из любой точки России. Призовой фонд Хакатона: 1.000.000 рублей.

Номинации и вся подробная информация доступны на сайте: https://audithon.ru/
источник

С

Санжар in Software Design/Architecture/Zen
NoMad42
Раз разговор за книги и классиков. Хочу перейти из джунов в мидлы. И, как я понял, главный критерий это самостоятельность при реализации фич и сложность этих фич. Уже прочёл паттерны от refactoring.guru, рефакторинг Фаулера, архитектура корпоративных систем от Аделя, много статей о DDD, в том числе Laravel beyond CRUD от Brend Rose. Вот теперь думаю что прочитать дальше. Что посоветуете?
1. Пиши проект для гитхаб
2. Выложи сюда и попроси дать совет
3. Переделай
4. goto 2


работает. но очень больно и неприятно (мягко говоря).
источник

С

Санжар in Software Design/Architecture/Zen
Sergey Protko
тут две вещи:

1. самостоятельно делать - это всякие get things done, приоритизация, ответственность, прозрачность коммуникаций. Самодисциплина в конце концов.
2. набить шишек и попробовать. Книжки это хорошо но скорее всего не сталкнувшись с проблемами которые эти книжки описывают (типичная история например с DDD) ты врядли что-то поймешь. Ну и да - прочтение книжки без применения на практике и хотя бы обсуждения прочитанного (строить предположение что ты чего-то не понял и придумывать/обсуждать примеры которые не ложатся на прочитанное) ты скорее всего запомнил может быть 5% от того что прочитал.
1. 50/50. иногда если слишком часто спрашиваешь или отнимаешь время других разрабов, ты по факту тратишь деньги компании и тип несамостоятельно решаешь задачи.
источник

SP

Sergey Protko in Software Design/Architecture/Zen
Санжар
1. 50/50. иногда если слишком часто спрашиваешь или отнимаешь время других разрабов, ты по факту тратишь деньги компании и тип несамостоятельно решаешь задачи.
Так это как раз про джуна.

А прозрачность коммуникаций - это ты не берешь задачу и уходишь с ней на месяц а можешь статус апдейты нормально делать. У многих с этим проблемы. Этому почему-то не учат
источник

SP

Sergey Protko in Software Design/Architecture/Zen
То что ты описал больше про джунов
источник

С

Санжар in Software Design/Architecture/Zen
Sergey Protko
Так это как раз про джуна.

А прозрачность коммуникаций - это ты не берешь задачу и уходишь с ней на месяц а можешь статус апдейты нормально делать. У многих с этим проблемы. Этому почему-то не учат
Понял мысль. Теперь согласен.
источник