46 lines
4.2 KiB
Markdown
46 lines
4.2 KiB
Markdown
---
|
||
aliases:
|
||
tags:
|
||
- зрелость/🌱
|
||
date:
|
||
- - 2024-03-19
|
||
zero-link:
|
||
- "[[00 Архитектура ПО]]"
|
||
parents:
|
||
linked:
|
||
---
|
||
Нам нужно выяснить всё о данных в вашем проекте. Всё - это вообще всё.
|
||
|
||
Примеры вопросов:
|
||
- Какие есть данные?
|
||
- Как они связаны друг с другом?
|
||
- Сколько данных каждого типа?
|
||
- Какие минимальные, максимальные и средние размеры у данных каждого типа?
|
||
- Сколько актуальных данных?
|
||
- Как определяется актуальность данных?
|
||
- Как быстро растёт объём данных?
|
||
- Как часто данные читаются?
|
||
|
||
## Какие у нас есть данные?
|
||
Нам нужно составить схему движения данных внутри вашего проекта. Простой пример - пользователь публикует текстовый пост в френдленту. Вопросы, ответы на которые вы должны получить у менеджера проекта (или прикинуть самим, мы обычно прикидываем сами и предлагаем менеджеру или заказчику конкретное значение):
|
||
- Какого размера может быть пост? Минимальный, максимальный и средний размер? / Кстати, ограничениедолжно быть, ограничения есть всегда и это не спроста /
|
||
- Сколько постов может быть у одного пользователя?
|
||
- Сколько в среднем у пользователя постов?
|
||
- Как часто пользователь может публиковать посты?
|
||
- Сколько постов публикуется в день?
|
||
- Сколько всего постов в системе?
|
||
- Как долго должны храниться посты?
|
||
- Можно ли прочитать архивные посты?
|
||
- Сколько всего пользователей в системе?
|
||
- Сколько в среднем у пользователя друзей?
|
||
- Сколько максимум у пользователя друзей?
|
||
- Как быстро пользователь должен увидеть свой пост?
|
||
- Как быстро пользователь должен увидеть пост друга в своей френдленте?
|
||
- Как сортируются посты в френдленте друзей?
|
||
|
||
В сухом остатке, вы должны точно понимать, что у вас есть за данные, какие эти данные, как эти данные изменяются.
|
||
|
||
## Как данные будут использоваться?
|
||
Знать всё о своих данных, предполагает также знание о том, как эти данные будут использоваться. Причём обо всех вариантах использования. Написать такую систему хранения, которая позволит любое использование и обработку данных в высоконагруженной системе, строго говоря, невозможно.
|
||
|
||
Показ данных пользователю - это тоже использование, причём использование, которое обладает одним критичным свойством - в случае, если мы проектируем с вами веб-систему, то показ данных пользователю должен быть максимально быстрым. Пользователь не будет ждать. Мы должны придумать такую схему хранения данных, которая позволит максимально быстро обработать ЛЮБОЙ запрос пользователя. |