sql >> Database >  >> NoSQL >> MongoDB

MongoDB-normalisatie, externe sleutel en samenvoegen

MongoDB ondersteunt geen externe-sleutelrelaties aan de serverzijde, normalisatie wordt ook ontmoedigd. U moet uw onderliggende object indien mogelijk insluiten in bovenliggende objecten, dit zal de prestaties verbeteren en externe sleutels totaal overbodig maken. Dat gezegd hebbende, is het niet altijd mogelijk, dus er is een speciale constructie genaamd DBref waarmee naar objecten in een andere verzameling kan worden verwezen. Dit is dan misschien niet zo snel omdat DB extra queries moet maken om objecten te lezen, maar er is een soort refererende sleutelreferentie mogelijk.

Toch zult u uw referenties handmatig moeten verwerken. Alleen tijdens het opzoeken van uw DBref zult u zien of deze bestaat, de DB zal niet alle documenten doornemen om de referenties te zoeken en deze te verwijderen als het doel van de referentie niet meer bestaat. Maar ik denk dat het verwijderen van alle referenties na het verwijderen van het boek een enkele zoekopdracht per collectie zou vereisen, niet meer, dus eigenlijk niet zo moeilijk.

Als uw schema complexer is, moet u waarschijnlijk een relationele database kiezen en niet nosql.

Er is ook een boek over het ontwerpen van MongoDB-databases:Document Design for MongoDB

UPDATE Bovenstaand boek is niet meer verkrijgbaar, maar vanwege de populariteit van MongoDB zijn er nog een heleboel andere. Ik zal ze niet allemaal linken, aangezien dergelijke links waarschijnlijk veranderen, een simpele zoekopdracht op Amazon toont meerdere pagina's, dus het zou geen probleem moeten zijn om er enkele te vinden.

Zie de MongoDB-handleiding voor 'Manual references' en DBRefs voor meer details en voorbeelden



  1. Gebruikersinformatie opslaan met redis of mongodb

  2. Optie useFindAndModify wordt niet ondersteund

  3. Hoe hervat hash-slots van een bepaald knooppunt in redis-cluster in geval van een harde storing?

  4. Hoe kan ik mongodb opvragen met mongoid/rails zonder time-out?