sql >> Database >  >> NoSQL >> MongoDB

Verschil tussen op documenten gebaseerde en op sleutel/waarde gebaseerde databases?

De belangrijkste verschillen zijn het datamodel en de bevragingsmogelijkheden.

Sleutelwaardewinkels

Het eerste type is heel eenvoudig en behoeft waarschijnlijk geen verdere uitleg.

Gegevensmodel:meer dan sleutelwaardewinkels

Hoewel er enige discussie is over de juiste naam voor databases zoals Cassandra, zou ik ze graag column-family stores willen noemen. . Hoewel sleutel-waardeparen een essentieel onderdeel zijn van Cassandra, is het niet alleen daartoe beperkt. Hiermee kunt u sleutel-waardeparen nesten, zodat een sleutel kan verwijzen naar meerdere subsleutel-waardeparen.

U kunt sleutel-waardeparen echter niet voor onbepaalde tijd nesten. U bent beperkt tot drie niveaus (kolomfamilies) of vier nestniveaus (superkolomfamilies). Als de term kolomfamilie geen belletje doet rinkelen, zie de WTF is een SuperColumn-artikel, het is een goede uitleg van Cassandra's datamodel.

Documentdatabases , zoals CouchDB en MongoDB slaan hele documenten op in de vorm van JSON-objecten. U kunt deze objecten zien als geneste sleutel-waardeparen. In tegenstelling tot Cassandra kunt u zoveel sleutel-waardeparen nesten als u wilt. JSON ondersteunt ook arrays en begrijpt verschillende gegevenstypen, zoals strings, getallen en booleaanse waarden.

Bevragen

Ik geloof dat kolomfamiliewinkels alleen kunnen worden opgevraagd met een sleutel of door functies voor het verkleinen van de kaart te schrijven. U kunt de waarden niet opvragen zoals u zou doen in een SQL-database. Als uw toepassing complexere zoekopdrachten nodig heeft, moet uw toepassing indexen maken en onderhouden om toegang te krijgen tot de gewenste gegevens.

Documentdatabases ondersteunen ook zoekopdrachten met sleutel en kaartverkleinende functies, maar stellen u ook in staat om basisquery's op waarde uit te voeren, zoals "Geef me alle gebruikers met meer dan 10 berichten". Documentdatabases zijn op deze manier flexibeler.



  1. Hoe de junit-tests de ingebedde mongoDB te laten gebruiken in een springboot-toepassing?

  2. Efficiënt pagineren in MongoDB met mgo

  3. Hadoop - Een Apache Hadoop-zelfstudie voor beginners

  4. Stop Mongoose met het maken van _id eigenschap voor subdocumentarray-items