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

Graf DB'er vs. Dokument DB'er vs. Triplestores

Jeg er ikke sikker på, at jeg er enig i følelsen af, at mange mennesker ikke kan lide SPARQL. SPARQL 1.0 havde nogle mangler, men det rettede ganske pænt det, den var designet til, og den nye iteration, SPARQL 1.1, bygger på, at den tilføjer mange konstruktioner fra SQL, som folk forventede at se i den originale spec, inklusive underforespørgsler, aggregater &opdatere semantik. Jeg synes, at det faktum, at det er standard, og at du kan forvente at se den samme parsing og semantik i hver triple store, i modsætning til dialekter af SQL, er en god funktion.

Jeg vil også påstå, at alle tredobbelte lagre er grafdatabaser; du kan sætte egenskaber på bestemte kanter i RDF, omend ikke så pænt som du kan med Neo4j. Men triple stores har fordelen af ​​et rigtigt forespørgselssprog, en w3c standard datarepræsentation, som gør det trivielt at tage dine data til en anden triple store, og for en række triple stores, muligheden for at udføre ræsonnement baseret på OWL.

Jeg ved ikke noget om skalerbarheden for de fleste graf-db'er, men generelt skalerer de kommercielle RDF-databaser ret godt. Alle kan skalere til milliarder af tripler, som håndterer rigtig mange use cases. Selvom det er meget forskelligt, hvordan de håndterer skalering fra leverandør til leverandør, hvad angår opskalering eller udskalering, klyngedannelse osv. Du vil også se ret forskellige krav til mem- og hardware, der matcher implementeringerne for hver enkelt. For mig har jeg haft en tendens til bare at tage fat i en EC2-instans, normalt en 2XL eller 4XL, montere en EBS, der er stor nok til at holde dataene, og jeg er ret godt indstillet.

Derudover integrerer nogle tredobbelte butikker med Lucene eller lignende teknologier for at give inverterede indekser over dataene, og mange er nu begyndt at inkludere geo-spatiale og tidsmæssige indekser. Disse er meget nyttige funktioner, som jeg ikke er sikker på, om de er tilgængelige i noget som Neo4j.

Med det sagt, vil de ikke skalere så godt som en relationelle databaser, de er bare ikke så modne. Men du kommer heller ikke til at blive skruet sammen, når du har "rigtige" mængder af data. Selvfølgelig er en af ​​fordelene ved triples stores ræsonnement, hvilket er svært at præstere i skala, men det er meget af grunden til, at de forskellige OWL-profiler blev oprettet. Men du kan male dig selv ind i et hjørne, hvis du ikke tænker fremad.

Jeg tror, ​​at grafdatabaser, specifikt triple stores, kan være et ret godt match til mange applikationer, der er ved at blive bygget, men jeg tror ikke, det betyder, at alt skal gøres med dem. Som alt andet er de værktøjer med deres gode og dårlige punkter, så du er nødt til at træffe det rigtige valg baseret på din ansøgning. Men de fortjener nok altid i det mindste en overvejelse i disse dage.



  1. Python Reddis Queue ValueError:Funktioner fra __main__-modulet kan ikke behandles af arbejdere

  2. Gruppér efter tilstand i MongoDB

  3. Hvordan kan jeg sortere i, at nuller sidst er bestilt i mongodb?

  4. Langsom paginering over tonsvis af poster i mongodb