- 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 pegar a primeira hash disponível retornar o valor e salvar na tabela de hashuser
- 500 RPM
- 10 novas urls por minutos
- 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ácterTIMESTAMPTZ DEFAULT NOW()
=> 8 bytes por registroboolean
=> 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
- custo estimado por registro na tabela
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
- custo estimado por registro na tabela