Wat betekent “Documentgericht” versus Key-Value als we het hebben over MongoDB versus Cassandra?

Wat levert een op documenten gebaseerde NoSQL-optie u op boven een KV-winkel en omgekeerd?


Antwoord 1, autoriteit 100%

Een sleutelwaardearchiefbiedt het eenvoudigst mogelijke gegevensmodel en is precies wat de naam doet vermoeden: het is een opslagsysteem dat waarden opslaat die door een sleutel zijn geïndexeerd. U bent beperkt tot zoekopdrachten op sleutel en de waarden zijn ondoorzichtig, de winkel weet er nietsover. Dit maakt zeer snelle lees- en schrijfbewerkingen mogelijk (een eenvoudige schijftoegang) en ik zie dit model als een soort niet-vluchtige cache (d.w.z. zeer geschikt als u snelle toegang per sleutel tot langlevende gegevens nodig hebt).

Een document-georiënteerde databasebreidt het vorige model uit en waarden worden opgeslagen in een gestructureerde-indeling (een document, vandaar de naam) die de database kan begrijpen. Een document kan bijvoorbeeld een blogpost zijn ende opmerkingen ende tags die op een gedenormaliseerde manier zijn opgeslagen. Omdat de gegevens transparantzijn, kan de winkel meer werk doen (zoals het indexeren van velden van het document) en bent u niet beperkt tot zoekopdrachten per sleutel. Zoals ik al liet doorschemeren, maken dergelijke databases het mogelijk om de gegevens van een hele pagina op te halen met een enkele zoekopdracht en zijn ze zeer geschikt voor inhoudgerichte toepassingen (daarom vinden grote sites zoals Facebook of Amazon ze leuk).

Andere soorten NoSQL-databases zijn onder meer kolomgeoriënteerde winkels, grafiekdatabasesen zelfs objectdatabases. Maar dit gaat verder dan de vraag.

Zie ook


Antwoord 2, autoriteit 12%

Nou, ik heb de afgelopen maand zelf NoSQL onderzocht. Ik denk dat het over het algemeen zoiets zou kunnen zijn als

  • KV-winkels kennen de waarde niet
    inhoud die daadwerkelijk is opgeslagen voor een sleutel
  • Op document gebaseerd kunt u secundair definiëren
    indexen binnen de waarde-inhoud, als
    de db kent de documentstructuur
    (bijv. tags van een blogpost).
  • NoSQL-oplossingen hebben elk specifieke kenmerken waarmee rekening moet worden gehouden, zoals:
    • Speciale datatypes in een KV-winkel (bijv. sets met links/rechts pop/push zoals in redis)
    • eenvoudig op- en afschalen cluster zoals riak zegt dat het heeft (ik heb het nog niet geprobeerd … nog)
    • inplugbare gegevensopslag zoals in Voldemort
    • ingebouwde webconfiguratie en webapp-ondersteuning zoals in CouchDB / couchapp

Antwoord 3

  1. In het sleutel-waardedatabasemodel kunnen gebruikers kiezen wat de sleutels zijn, terwijl het document
    ID’s in het documentmodel worden doorgaans door het systeem gegenereerd.

  2. De sleutel-waardeparen in het sleutel-waardedatabasemodel kunnen niet worden gegroepeerd, terwijl in een
    documentdatabase, we kunnen sleutel-waardeparen in afzonderlijke documenten groeperen; bovendien, sommige
    vormen van documentdatabases stellen ons in staat deze documenten zelfs verder te groeperen, namelijk in
    dus “collecties” of “domeinen” genoemd.

  3. Terwijl de documenten in een documentendatabase een interne structuur hebben die duidelijk is
    gedefinieerd (en dus kan worden bediend door het DBMS; bijvoorbeeld om indexen te maken), de
    hetzelfde is niet het geval voor de waarden in een sleutel-waardedatabase waar eventuele interne
    structuur van dergelijke waarden is ondoorzichtig vanuit een DBMS-perspectief.

  4. In het sleutelwaardemodel toegang tot meerdere database-items (sleutelwaardeparen in dit geval)
    aparte aanvragen nodig. In het documentmodel daarentegen, meerdere databases
    ingangen (documenten, in dit geval) kunnen in een enkel verzoek worden opgehaald.

Other episodes