sql >> Database teknologi >  >> NoSQL >> MongoDB

Forskellen mellem dokumentbaserede og nøgle/værdibaserede databaser?

De vigtigste forskelle er datamodellen og forespørgselsmulighederne.

Nøgleværdibutikker

Den første type er meget enkel og behøver sandsynligvis ikke nogen yderligere forklaring.

Datamodel:mere end nøgleværdi-lagre

Selvom der er nogen debat om det korrekte navn for databaser såsom Cassandra, vil jeg gerne kalde dem kolonnefamiliebutikker . Selvom nøgle-værdi-par er en væsentlig del af Cassandra, er det ikke begrænset til netop det. Det giver dig mulighed for at indlejre nøgle-værdi-par, så en nøgle kan referere til flere undernøgle-værdi-par.

Du kan dog ikke indlejre nøgleværdi-par på ubestemt tid. Du er begrænset til tre niveauer (søjlefamilier) eller fire niveauer af indlejring (super-søjlefamilier). Hvis begrebet kolonnefamilie ikke ringer en klokke, se WTF er en SuperColumn-artikel, det er en god forklaring på Cassandras datamodel.

Dokumentdatabaser , såsom CouchDB og MongoDB gemmer hele dokumenter i form af JSON-objekter. Du kan tænke på disse objekter som indlejrede nøgleværdi-par. I modsætning til Cassandra kan du indlejre nøgleværdi-par, så meget du vil. JSON understøtter også arrays og forstår forskellige datatyper, såsom strenge, tal og booleske værdier.

Forespørger

Jeg tror, ​​at kolonnefamiliebutikker kun kan forespørges med nøgle eller ved at skrive kort-reducerende funktioner. Du kan ikke forespørge om værdierne, som du ville gøre i en SQL-database. Hvis din applikation har brug for mere komplekse forespørgsler, skal din applikation oprette og vedligeholde indekser for at få adgang til de ønskede data.

Dokumentdatabaser understøtter også forespørgsler med nøgle- og kort-reducerende funktioner, men giver dig også mulighed for at lave grundlæggende forespørgsler efter værdi, såsom "Giv mig alle brugere med mere end 10 indlæg". Dokumentdatabaser er mere fleksible på denne måde.



  1. Placering i mongoose, mongoDB

  2. Sådan opretter du forbindelse til ElastiCache-klyngen ved hjælp af node.js

  3. hvordan man konfigurerer forskellige ttl for hver redis cache, når man bruger @cacheable i springboot2.0

  4. Fejl:Ingen unix-socket-understøttelse på Windows, der forbinder mongodb