profcomff / profcomff/dwh-pipelines
Собрать статистику использования БД
Open
Nobody has claimed this yet.
good first issue :baby:
new feature :new:
- Dominant language
- Python
- Stars
- 16
- Forks
- 0
- PR merge metrics
- No merged PRs in 30d
Description
Issue open by Roman Dyakov via telegram message.
Зачем
- Позволит выдавать ачивки за активность, которую пользователи создают в БД
- Позволит автоматизированно отнимать доступы у неактивных аккаунтов во избежании проблем с безопасностью
- Позволит узнать, какие данные используются, а какие бесполезно интегрированы
- Позволит узнавать о неавторизованных доступах в БД, куда у пользователей не должно быть доступов
План
- Собрать информацию об активности в Postgres
- Забрать информацию о запущенных пользователем запросов в
STG_POSTGRES.pg_stat_activity. Забрать можно изSELECT * FROM pg_stat_activity(уточнить что делать с историей).- Сделать таблицу dwh_definitions
- Собрать пайплайн dwh_pipelines
- Запускать пайплайн в проде раз в 10 минут
- Забрать информацию о запущенных пользователем запросов в
- Совместить информацию о пользователях Твой ФФ и их активности в Postgres.
- Построить таблицу
ODS_ACTIVITY.postgres. В ключах должны быть user_id (из Auth API), имя пользователя postgres (есть в auth api и данных portsgres, ключ для джойна данных), время (округленное до ровной сетки в 10 минут, т.е. 2024-01-01T10:00, 2024-01-01T10:10 и тд), тип окружения (название базы данных, в которую делался запрос). Запись должна быть для каждого момента, когда пользователь был в активен и не должно быть, если пользователь активен не был
- Построить таблицу
- Собрать информацию об использовании таблиц
- Построить таблицу
ODS_SECURITY.postgres_object_usage. В ключах должны быть user_id (из Auth API, nullable), имя пользователя postgres (есть в auth api и данных portsgres, ключ для джойна данных), время (точное), база данных (test/prod/dwh/dwh_test), название схемы, название таблицы, тип запроса (INSERT/SELECT/DELETE/OTHER), query_id – id запуска запроса на получение/запись/удаление данных.
- Построить таблицу
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reviewing existing repository pipelines and the Postgres pg_stat_activity source. Define how query history, user joins through Auth API, timestamps, environments, and object usage should be represented in dwh_definitions, dwh_pipelines, ODS_ACTIVITY.postgres, and ODS_SECURITY.postgres_object_usage. Done means the production pipeline runs every 10 minutes and records the requested activity and query metadata.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- postgresql, python, sql
- Domain
- data-engineering, databases, security
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100