MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Devemos usar dbref ou documento incorporado em um aplicativo de leitura pesada


DBref não é nada parecido com uma chave estrangeira em sistemas relacionais tradicionais. É apenas uma convenção que informa facilmente a um motorista (que é capaz de) carregar automaticamente esses documentos referidos. Consulte DBRef para mais informações sobre isso.

Dependendo do driver usado, você poderá carregar essas referências automaticamente apenas quando precisar delas (lazy), portanto, a sobrecarga de desempenho deve ser muito pequena. Mas a sobrecarga de armazenamento é um pouco maior do que um simples _id referenciado de outro documento. Basicamente, eu diria que você só deve usar esses DBrefs se o documento vinculado puder ser do tipo variável. Se for estático, você ficará preso a _id-references e talvez à sua própria funcionalidade de carregador preguiçoso, para não se repetir.

Não se repita (ou duplicação de dados em termos de banco de dados) se aplica ao seu contexto também, como o MongoDB recomenda (eu também faria), é apenas vincule seus documentos . Caso contrário, você teria maior uso de armazenamento e atualizações de execução um pouco longas, para atualizar apenas uma entidade lógica (duplicada fisicamente com muita frequência).

Com o carregador preguiçoso personalizado mencionado anteriormente, você pode adicionar algum cache para que nem todas as pesquisas resultem em uma pesquisa mongodb. Provavelmente, você precisaria cuidar da consistência dos dados entre o cache e o db.