Aplicar padrões de design
Os padrões de design de esquemas são maneiras de otimizar seu Modelo de dados Realm para os padrões de acesso da aplicação. Eles melhoram o desempenho do aplicativo e reduzem a complexidade do esquema. Os padrões de design do esquema afetam como seus dados são armazenados e quais dados são retornados ao seu aplicativo.
Para obter uma lista de exemplos e padrões de design de esquema, consulte a série de blogs Construindo com padrões do MongoDB Blog .
Sobre esta tarefa
Antes de implementar padrões de design de esquema, considere o problema que você está tentando resolver. Cada padrão de design de esquema tem diferentes casos de uso e compensações para consistência de dados, desempenho e complexidade. Por exemplo, alguns padrões de design de esquema melhoram o desempenho de gravação, enquanto outros melhoram o desempenho de leitura.
Implementar um padrão sem entender seu aplicativo e os dados que ele precisa pode degradar o desempenho do aplicativo e causar problemas desnecessários para o design do esquema.
Exemplo
Considere os seguintes padrões de exemplo usados por uma franquia de cinema:
O esquema contém uma coleção
movie
e uma coleçãotheater
. O esquema usa o padrão de subconjunto para duplicar um subconjunto de informações da coleçãomovie
na coleçãotheater
. O padrão de subconjunto reduz o tamanho dos documentos retornados ao aplicação e melhora o desempenho de leitura.A coleção
movie
contém um campototal_views
, que usa opadrão computado para calcular um total em execução do número de vezes que os clientes assistem a um filme em todos os cinemas onde o filme é exibido.
collection de filmes
db.movie.insertOne( { _id: 1, title: "Titanic", year: 1997, director: "James Cameron", runtime: 194, distributor: "Paramount Pictures", languages: [ "English" ], total_views: 3500 } )
teatro collection
db.theater.insertMany( [ { name: "Downtown Cinemas", address: { street: "2212 Taylor Street", state: "NY" }, movies: [ { movie_id: 1, title: "Titanic", runtime: 194, views: 1500 } ] }, { name: "Midtown Theater", address: { street: "1232 5th Street", state: "NY" }, movies: [ { movie_id: 1, title: "Titanic", runtime: 194, views: 2000 } ] } ] )