create compose with database
This commit is contained in:
parent
262bba35da
commit
feda68d5f8
26
compose.yaml
Normal file
26
compose.yaml
Normal file
@ -0,0 +1,26 @@
|
||||
name: data_engineer-farpost
|
||||
|
||||
services:
|
||||
database:
|
||||
container_name: farpost-database
|
||||
restart: always
|
||||
image: postgres:latest
|
||||
volumes:
|
||||
- ./dump.sql:/docker-entrypoint-initdb.d/dump.sql:ro
|
||||
- postgres-data:/var/lib/postgresql/data
|
||||
healthcheck:
|
||||
test: pg_isready -d log
|
||||
interval: 60s
|
||||
start_period: 1s
|
||||
timeout: 600s
|
||||
ports:
|
||||
- 5432:5432
|
||||
environment:
|
||||
POSTGRES_DB: log
|
||||
POSTGRES_USER: postgres
|
||||
POSTGRES_PASSWORD: postgres
|
||||
|
||||
|
||||
volumes:
|
||||
postgres-data:
|
||||
name: farpost-postgres-data
|
75
dump.sql
Normal file
75
dump.sql
Normal file
@ -0,0 +1,75 @@
|
||||
--
|
||||
-- PostgreSQL database dump
|
||||
--
|
||||
|
||||
-- Dumped from database version 17.3 (Debian 17.3-3.pgdg120+1)
|
||||
-- Dumped by pg_dump version 17.3 (Debian 17.3-3.pgdg120+1)
|
||||
|
||||
SET statement_timeout = 0;
|
||||
SET lock_timeout = 0;
|
||||
SET idle_in_transaction_session_timeout = 0;
|
||||
SET transaction_timeout = 0;
|
||||
SET client_encoding = 'UTF8';
|
||||
SET standard_conforming_strings = on;
|
||||
SELECT pg_catalog.set_config('search_path', '', false);
|
||||
SET check_function_bodies = false;
|
||||
SET xmloption = content;
|
||||
SET client_min_messages = warning;
|
||||
SET row_security = off;
|
||||
|
||||
--
|
||||
-- Name: user_actions; Type: TYPE; Schema: public; Owner: postgres
|
||||
--
|
||||
|
||||
CREATE TYPE public.user_actions AS ENUM (
|
||||
'first_entry',
|
||||
'registration',
|
||||
'login',
|
||||
'logout',
|
||||
'create_theme',
|
||||
'entry_theme',
|
||||
'delete_theme',
|
||||
'write_message'
|
||||
);
|
||||
|
||||
|
||||
ALTER TYPE public.user_actions OWNER TO postgres;
|
||||
|
||||
SET default_tablespace = '';
|
||||
|
||||
SET default_table_access_method = heap;
|
||||
|
||||
--
|
||||
-- Name: log; Type: TABLE; Schema: public; Owner: postgres
|
||||
--
|
||||
|
||||
CREATE TABLE public.log (
|
||||
id integer NOT NULL,
|
||||
user_id integer NOT NULL,
|
||||
action public.user_actions NOT NULL,
|
||||
datetime timestamp with time zone DEFAULT (now() AT TIME ZONE 'EAST'::text) NOT NULL,
|
||||
object_id integer,
|
||||
response smallint NOT NULL
|
||||
);
|
||||
|
||||
|
||||
ALTER TABLE public.log OWNER TO postgres;
|
||||
|
||||
--
|
||||
-- Data for Name: log; Type: TABLE DATA; Schema: public; Owner: postgres
|
||||
--
|
||||
|
||||
|
||||
|
||||
--
|
||||
-- Name: log log_pk; Type: CONSTRAINT; Schema: public; Owner: postgres
|
||||
--
|
||||
|
||||
ALTER TABLE ONLY public.log
|
||||
ADD CONSTRAINT log_pk PRIMARY KEY (id);
|
||||
|
||||
|
||||
--
|
||||
-- PostgreSQL database dump complete
|
||||
--
|
||||
|
32
tasks/1.md
Normal file
32
tasks/1.md
Normal file
@ -0,0 +1,32 @@
|
||||
1. Спроектировать схему БД
|
||||
я здесь вижу 2 варианта развития
|
||||
1) сделать одну таблицу в которой будет:
|
||||
- id пользователя
|
||||
- время выполненного дйствия
|
||||
- enum из различный действия (бэку не нужно лишний раз искать id действия, чтобы закрепить его в таблице логов)
|
||||
- (отдельная таблица для действий будет лишней)
|
||||
- (бэку необходимо знать и контролировать все действия, а таблица будет лишь означать изменение данных извне, которое будет либо бесполезной, либо опасной, когда бэк не найдёт нужное действие)
|
||||
2) разбить на несколько таблиц:
|
||||
- таблица логов аккаунта
|
||||
- таблица работы с темой
|
||||
- таблица работы с сообщениями
|
||||
|
||||
- 1 вариант -
|
||||
1) ускоренная разработка из-за отсутсвия необходимости задумываться над подтягиванием данных из других таблиц (join, lazy_loading, selectin)
|
||||
2) простота работы с данными: SQL запросы намного проще, более удобный перенос в csv
|
||||
- 2 вариант -
|
||||
1) БД более подготовлена к изменению или усложенению архитектуры
|
||||
2) повышение эффективности за счёт меньшего количества столбцов
|
||||
|
||||
в ТЗ не было речи про дальнейшую судьбу этой БД, так что я пойду на 1 вариант
|
||||
|
||||
```
|
||||
CREATE TABLE public.log (
|
||||
id integer NOT NULL,
|
||||
user_id integer NOT NULL,
|
||||
action public.user_actions NOT NULL,
|
||||
datetime timestamp with time zone DEFAULT (now() AT TIME ZONE 'EAST'::text) NOT NULL,
|
||||
object_id integer,
|
||||
response smallint NOT NULL
|
||||
);
|
||||
```
|
0
tasks/2.md
Normal file
0
tasks/2.md
Normal file
Loading…
x
Reference in New Issue
Block a user