sql >> Database >  >> NoSQL >> MongoDB

Best practices voor NoSQL

Ik denk dat het hele idee van NoSQL-gegevensopslag en het concept van documentdatabases momenteel zo nieuw en anders is dan de gevestigde ideeën die relationele opslag aansturen, dat er momenteel zeer weinig (of geen) best practices zijn.

We weten op dit moment dat de regels voor het opslaan van uw gegevens in bijvoorbeeld CouchDB (of een andere documentdatabase) nogal verschillen van die voor een relationele. Het is bijvoorbeeld zo'n beetje een feit dat normalisatie en streven naar 3NF niet iets is waar je naar moet streven. Een van de meest voorkomende voorbeelden is dat van een eenvoudige blog.

In een relationele winkel zou je elk een tabel hebben voor "Berichten", "Opmerkingen" en "Auteurs". Elke auteur zou veel berichten hebben en elk bericht zou veel opmerkingen hebben. Dit is een model dat goed genoeg werkt en prima in kaart kan worden gebracht over elke relationele DB. Het opslaan van dezelfde gegevens in een docDB zou echter hoogstwaarschijnlijk nogal verschillen. Je zou waarschijnlijk zoiets hebben als een verzameling Post-documenten, die elk hun eigen Auteur en verzameling Opmerkingen hebben ingebed. Natuurlijk is dat waarschijnlijk niet de enige manier waarop je het zou kunnen doen, en het is een beetje een compromis (nu opvragen voor een enkele post is snel - je doet maar één bewerking en krijgt alles terug), maar je hebt geen manier om de relatie tussen auteurs en berichten te behouden (omdat het allemaal onderdeel wordt van het postdocument).

Ik heb ook voorbeelden gezien die gebruik maken van een "type" -attribuut (in een CouchDB-voorbeeld). Natuurlijk, dat klinkt als een haalbare aanpak. Is het de beste? Ik heb geen idee. Zeker in MongoDB zou je aparte collecties binnen een database gebruiken, waardoor het type attribuut totale onzin is. In CouchDB echter... misschien is dat is het beste. De andere alternatieven? Aparte databases voor elk type document? Dit lijkt een beetje gek, dus ik neig zelf naar de "type" -oplossing. Maar dat ben ik gewoon. Misschien is er iets beters.

Ik realiseer me dat ik hier nogal wat heb doorgepraat en heel weinig heb gezegd, hoogstwaarschijnlijk niets dat je nog niet wist. Mijn punt is echter dit - ik denk dat het aan ons is om te experimenteren met de tools die we hebben en de gegevens waarmee we werken en na verloop van tijd zullen de goede ideeën worden verspreid en worden de best practices. Ik denk dat je het iets te vroeg in het spel vraagt.



  1. Node Mongo REST-servicepost

  2. Model bijwerken met Mongoose, Express, NodeJS

  3. MongoConnectionException - Kan geen verbinding maken met:localhost:27017

  4. Zoeken in waarden van een redis db