Modelar entidades de pesquisa pequenas

Concluído

Nosso modelo de dados inclui duas pequenas entidades de dados de referência, ProductCategory e ProductTag. Essas entidades são usadas para valores de referência e estão relacionadas a outras entidades por meio de um 1:Many relationship.

Diagrama que mostra a relação entre as tabelas de categoria de produto, produto, marcas de produto e marca de produto.

Nesta unidade, vamos modelar as entidades ProductCategory e em nosso modelo de ProductTag documento.

Modelar as categorias de produto

Primeiramente, para as categorias, vamos modelar os dados com as colunas de id e nome como as únicas propriedades e as colocaremos em um novo contêiner chamado ProductCategory.

Em seguida, precisaremos escolher uma chave de partição. Vamos explorar as operações que precisamos executar nos dados.

Vamos criar uma nova categoria de produto, editar uma categoria de produto e, em seguida, listar todas as categorias de produtos. A criação e a edição de categorias de produtos não são operações de execução frequente. Porém, o aplicativo de comércio eletrônico geralmente lista todas as categorias de produtos quando os clientes acessam o site. Portanto, a última operação é a que mais executaremos.

A consulta para essa última operação será parecida com isto: SELECT * FROM c. Com a id como a chave de partição selecionada, essa consulta agora será entre partições, mesmo que queiramos tentar otimizar essas operações de leitura intensa, use apenas uma partição, se possível. Também sabemos que os dados para a categoria de produto nunca chegarão a perto de 20 GB, portanto, como essas informações nos ajudariam a modelar os dados de uma forma que resultará em uma consulta de partição única quando listamos todas as categorias de produtos.

Diagrama que mostra a consulta entre partições para listar todas as categorias de produtos.

Para forçar essa pequena quantidade de dados a voltar para uma só partição, podemos adicionar a propriedade discriminatória de entidade ao nosso esquema e usá-la como a chave de partição para esse contêiner. Ao atribuir a essa propriedade um valor constante para todos os documentos desse tipo no contêiner, garantimos que agora temos uma só consulta de partição. Nesse caso, chamaremos a propriedade e type daremos um valor constante de category. Nossa consulta agora seria assim: SELECT * FROM c WHERE c.type = ”category”.

Diagrama que mostra a categoria de produto modelada com a chave de partição como tipo e o valor como categoria.

Modelar as marcas de produto

Em seguida, temos a entidade ProductTag. Essa entidade é quase idêntica em função à ProductCategory entidade que discutimos na seção anterior. Vamos adotar a mesma abordagem aqui e modelar o documento para conter propriedades de ID e nome e criar uma propriedade discriminatória de entidade chamada type, nesse caso, com um valor constante de tag. Vamos criar um novo contêiner chamado ProductTag e tornar type a nova chave de partição.

Diagrama que mostra o contêiner de marca de produto modelado com a chave de partição como tipo e o valor como marca.

Algumas pessoas acham estranha essa técnica para modelar tabelas de pesquisa pequenas. No entanto, modelar nossos dados dessa maneira nos dá a oportunidade de fazer uma otimização adicional no próximo módulo.