[Dúvida] Banco de dados com mais de 1000 itens?
Estou desenvolvendo um projeto multiplataforma (site, extensão e aplicativo), que recebe dados inseridos pelo usuário e realiza três verificações.
Edit. É uma aplicação que recebe um link do usuário e diz se ele é confiável de clicar, eu dividi em dois banco de dados, pois tem alguns que são mais frequente do usuário questionar.
Eu também tenho uma função que divide em pedaços menores o link, para reduzir o número de caracteres. Recorta o http e .com.
Obs1. Haverá um servidor para cada aplicação.
Obs2. Os dados inseridos são strings, não há números.
Minha dúvida é referente aos banco de dados que devo usar para cada verificação.
Contexto:
1
A primeira verificação é realizada no backend da aplicação, que compara o dado inserido pelo usuário com uma lista de quase 300 itens armazenada no servidor, cada item contém uma média de 42 caracteres por item. Penso em utilizar algum tipo de índice para essa tabela.
2
A segunda verificação também é realizada no servidor da aplicação, também é necessário um índice para ela, pois irá comparar o dado inserido pelo usuário com uma blacklist com 600 a 800 itens.
Então a primeira e segunda etapa de verificação usarão o mesmo banco de dados. Como preciso da melhor performance nessa parte, penso em usar o MongoDB e deixar em cache de servidor os dados da lista. O que acham?
3
A terceira verificação é realizada com uma api própria, hospedada em outro servidor e se utilizando de outro banco de dados, está ao receber os dados, irá comparar o dado enviado pelo usuário com uma lista de 2000 a 10.000 itens (os 2000 eu tenho certeza que vai ter, enquanto o 10.000 é uma estimativa para caso eu deseje ampliar o projeto).
Cada item tem uma média de 60 caracteres, e terão propriedades, 5 para cada item.
Ex. Ilustrativo:
Item: Cadeira
Propriedade 1: Madeira
Propriedade 2: Novo
Propriedade 3: Conforto
Propriedade 4: São Paulo
Minha idéia para garantir melhor performance:
O dado do usuário irá percorrer toda a lista até achar seu idêntico na tabela, retornando um valor para a aplicação. Para que não percorra milhares de itens toda vez, planejo dividir em várias pequenas tabelas que se iniciam com a letra do alfabeto, e sequência de dois caracteres, (A, B, C… AA, AB, AC...).
Penso em utilizar o MySQL para esse banco de dados, mas tenho ficado em dúvida sobre este ser o melhor, pois encontrei discussões falando que só se pode ter um índice dentro dele, e eu precisaria de vários, um para a sequência do alfabeto, e um para cada letra do alfabeto + uma segunda letra.
Pretendo programar usando Expo para as aplicações e Laravel para a api.