digital-garden/_inbox/Анализ данных проекта.md

46 lines
4.2 KiB
Markdown
Raw Normal View History

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