Size: a a a

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

2020 October 05

GK

Gennadiy Kruglov in Архитектура ИТ-решений
Oleg
Коллеги, кто какие знает фреймворки описания архитектуры данных предприятия кроме dama-dmbok и togaf?
dama-dmbok - это не фреймворк для описания архитектуры данных, а целый свод знаний по управлению данными. Togaf не совсем про данные.

При этом, знания в dama-dmbok уже во многом устарели, это скорее - учебник истории по управлению данным. Togaf тоже уже учебник истории. Прочитать их полезно, как и любой хороший учебник истории.

А нового ничего по управлению данными пока не видно.
источник

OF

Oleg Fedyakin in Архитектура ИТ-решений
Доброе утро! что можно почитать про архитектуры для структуризации знаний? Есть ли какие-то книги, циклы статей?
источник

ЗА

Заур Абасмирзоев... in Архитектура ИТ-решений
источник

AT

Alexander Teterkin in Архитектура ИТ-решений
Хорошая штука! 👍🏻
источник

O

Oleg in Архитектура ИТ-решений
Gennadiy Kruglov
dama-dmbok - это не фреймворк для описания архитектуры данных, а целый свод знаний по управлению данными. Togaf не совсем про данные.

При этом, знания в dama-dmbok уже во многом устарели, это скорее - учебник истории по управлению данным. Togaf тоже уже учебник истории. Прочитать их полезно, как и любой хороший учебник истории.

А нового ничего по управлению данными пока не видно.
и там и там есть разделы разделы посвященные дата архитектуре, понятно что в целом они про другое
источник

OF

Oleg Fedyakin in Архитектура ИТ-решений
Спасибо!
источник

PT

Peter Tugolukov in Архитектура ИТ-решений
Привет.
Кто-нибудь сталкивался с задачей резервирования чего-либо?
У меня есть задача - есть пачка товаров, приходит пользователь, что бы один из товаров зарезервировать. Товары друг от друга не отличаются, но у них есть ID и немного другой информации.
Что бы зарезервировать - надо выбрать любой товар из списка и прописать его "reserved == true".
Сейчас сделано только на уровне базы с помощью SELECT  FOR UPDATE, но ощутили конкурентность за строки, даже  с учетом наличия индекса.
Может у кого-нибудь есть best practiсe для такой задачи?
источник

OF

Oleg Fedyakin in Архитектура ИТ-решений
в каком моменте возникает конкурентность?
делайте селект в транзакции
источник

PT

Peter Tugolukov in Архитектура ИТ-решений
В момент, когда делается select for update, блокируются строки. В этот же момент к этим строкам могут хотеть доступ другие клиенты. И они вынуждены ждать.
источник

PT

Peter Tugolukov in Архитектура ИТ-решений
Из-за этого снижается пропускная способность.
источник

SL

Sergey Lukin in Архитектура ИТ-решений
Peter Tugolukov
Привет.
Кто-нибудь сталкивался с задачей резервирования чего-либо?
У меня есть задача - есть пачка товаров, приходит пользователь, что бы один из товаров зарезервировать. Товары друг от друга не отличаются, но у них есть ID и немного другой информации.
Что бы зарезервировать - надо выбрать любой товар из списка и прописать его "reserved == true".
Сейчас сделано только на уровне базы с помощью SELECT  FOR UPDATE, но ощутили конкурентность за строки, даже  с учетом наличия индекса.
Может у кого-нибудь есть best practiсe для такой задачи?
ну по классике, если "пессимистическая  блокировка" тормозит, переходи на "оптимистическую".
источник

GK

Gennadiy Kruglov in Архитектура ИТ-решений
Peter Tugolukov
В момент, когда делается select for update, блокируются строки. В этот же момент к этим строкам могут хотеть доступ другие клиенты. И они вынуждены ждать.
И вопрос, что это за строки? Это какая-то отдельная таблица с резервами? Вам же по сути нужно сопоставить ID с флагом "резерв". Может вам KV использовать?
источник

PT

Peter Tugolukov in Архитектура ИТ-решений
У меня есть таблица с товарами с примерно следующими столбцами:
- id; // unique
- sku // not unique
- avaiable // true|false
- reserved // true|false
- project_id // not unique
Может быть много строк с одинаковыми sku, project_id.
Когда хотим зарезервировать товар для нужного project_id, делает SELECT FOR UPDATE с условием по available = 1, project_id = XXX и reserved = 0. Апдэйтим reserved.
источник

OF

Oleg Fedyakin in Архитектура ИТ-решений
Peter Tugolukov
Из-за этого снижается пропускная способность.
- сколько записей в базе актуально?
- быть может для резерва можно сделать так: создать новую таблицу, куда пишется sku->reserved_count
источник

PT

Peter Tugolukov in Архитектура ИТ-решений
Записей в базе - порядка 10лямов;
источник

PT

Peter Tugolukov in Архитектура ИТ-решений
Запись в новую таблицу - при обновлении reserved_count также будет происходить лок этой таблицы.
источник

OF

Oleg Fedyakin in Архитектура ИТ-решений
ну и туда все сохранять для резерва.
при новой покупке проверить - sum(reserved_count)  для этого sku меньше, чем всего товаров в вашей первой таблице
источник

OF

Oleg Fedyakin in Архитектура ИТ-решений
Peter Tugolukov
Запись в новую таблицу - при обновлении reserved_count также будет происходить лок этой таблицы.
reserved_count - для каждого заказа
источник

PT

Peter Tugolukov in Архитектура ИТ-решений
В рамках одной транзакции?
источник

OF

Oleg Fedyakin in Архитектура ИТ-решений
заказ создали, отгрузили, из таблицы запись удалили
источник