sql >> Database >  >> NoSQL >> MongoDB

MongoDB:Moet je nog steeds ID's verstrekken die linken naar andere collecties of alleen collecties opnemen?

Het hangt ervan af.

Het hangt af van hoeveel van elk van dit soort objecten u verwacht te hebben. Kun je ze allemaal in een enkel MongoDB-document passen voor een bepaald onderwerp? Waarschijnlijk niet.

Het hangt af van de relaties - heb je een-op-veel- of veel-op-veel-relaties? Als het een-op-veel is en het aantal gerelateerde entiteiten klein is, kunt u ervoor kiezen om ze in een IList op een document in te sluiten. Als het veel-op-veel is, kunt u ervoor kiezen om een ​​meer traditionele relatie te gebruiken of u kunt ervoor kiezen om beide kanten als ILists in te sluiten.

Je kunt nog steeds relaties in MongoDB modelleren met aparte collecties MAAR er zijn geen joins in de database, dus je moet dat in code doen. Het laden van een onderwerp en het laden van de commentaren ervoor zou vanuit prestatieperspectief prima kunnen zijn.

Andere tips:

Met MongoDB kunt u INTO-arrays op documenten indexeren. Beschouw een index dus niet als een index op een eenvoudig veld in een document (zoals SQL). U kunt bijvoorbeeld een Tag-verzameling op een onderwerp gebruiken en indexeren in de tags. (Zie http://www.mongodb.org/display/DOCS/Indexes #Indexes-Arrays )

Wanneer u gegevens ophaalt of schrijft, kunt u elk document gedeeltelijk lezen en gedeeltelijk schrijven. (zie http://www.mongodb.org/display /DOCS/Retrieving+a+Subset+of+Fields )

En tot slot, als u niet kunt zien hoe u kunt krijgen wat u wilt met behulp van verzamelingen en indexen, kunt u dit mogelijk bereiken met kaartverkleining. Om bijvoorbeeld alle tags te vinden die momenteel in gebruik zijn, gesorteerd op hun gebruiksfrequentie, zou u elk onderwerp in kaart brengen dat de tags bevat die erin worden gebruikt, en dan zou u die set verkleinen om het gewenste resultaat te krijgen. U kunt dan het resultaat van die kaartverkleining permanent opslaan en alleen bijwerken wanneer dat nodig is.

Het is een vrij belangrijke mindshift van relationeel denken, maar het is het waard als je de schaalbaarheid en flexibiliteit nodig hebt die een NOSQL-aanpak met zich meebrengt.



  1. Mongodb sorteren met hoofdletterongevoelige manier

  2. MongoDB verwijdert zeer langzaam

  3. MongoDB-dump van 3.2, herstel met 3.4, foutindex veilig =null

  4. Selectieve replicatie in mongodb