https://github.com/thales-eduardo/shortener-url-node-streams
node-streams
https://github.com/thales-eduardo/shortener-url-node-streams
docker docker-compose jest node-js node-pg node-stream supertest typescript
Last synced: 3 months ago
JSON representation
node-streams
- Host: GitHub
- URL: https://github.com/thales-eduardo/shortener-url-node-streams
- Owner: Thales-Eduardo
- Created: 2024-12-03T20:52:32.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2025-03-08T17:27:36.000Z (7 months ago)
- Last Synced: 2025-03-08T18:25:50.217Z (7 months ago)
- Topics: docker, docker-compose, jest, node-js, node-pg, node-stream, supertest, typescript
- Language: TypeScript
- Homepage:
- Size: 97.7 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
README
# Estratégia de Geração e Uso de Hashes
- Geramos com antecedência um número X de hash, assim controlamos a disponibilidade das hashes, evitando um loop grande para saber se a hash já foi usada ou não.
- Na tabela de hash iremos pegar a primeira hash disponível, retornar o valor e salvar na tabela de hashuser# Trafego Estimado
- 500 RPM
- 10 novas urls por minutos# Armazenamento estimado no PostgreSQl
- **Tabelas:**
- `HASHUSER`
- hash: varchar(6) => PK => index
- user_id: uuid = varchar(36)
- url_original: varchar(255)
- created_at: TIMESTAMPTZ
- updated_at: TIMESTAMPTZ
- `HASHES`
- hash: varchar(6) => PK => index
- available: boolean
- created_at: TIMESTAMPTZ
- **Custo por caracter no banco de dados**
- `varchar()` => 4 bytes por carácter
- `TIMESTAMPTZ DEFAULT NOW()` => 8 bytes por registro
- `boolean` => 1 bytes por registro
- **Custo estimado de armazenamento por registro:**
- `HASHES`
- custo estimado por registro na tabela `Hash` = 33 bytes
- 6.000.000 registros x 33 bytes = 198000000 bytes = 188.78MB
- `HASHUSER`
- custo estimado por registro na tabela `HASHUSER` = 684 bytes = 0,000652 MB
- 10 url por minutos x 60 minutos x 24 horas x 365 dias = 5.256.000 url
- o total de armazenamento necessário em um ano seria = 5.256.000 url x 0,000652 MB = 3,35GB