Modelar entidades de pesquisa pequenas
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
.
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.
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”
.
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.
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.