Dela via


Jämföra diagram- och relationsdatabaser

Anmärkning

Den här funktionen är för närvarande i offentlig förhandsversion. Den här förhandsversionen tillhandahålls utan ett serviceavtal och rekommenderas inte för produktionsarbetsbelastningar. Vissa funktioner kanske inte stöds eller kan vara begränsade. Mer information finns i Kompletterande villkor för användning av Microsoft Azure-förhandsversioner.

I den här artikeln jämför vi grafdatabaser och relationsdatabaser, belyser viktiga skillnader, användningsfall och fördelar med analys. Du kan utvärdera om du vill använda Graph för Microsoft Fabric eller en relationsdatabas baserat på dina specifika behov.

En grafdatabas lagrar och frågar data som ett nätverk av noder (entiteter) och kanter (relationer), vilket gör att den skiljer sig i grunden från formatet tabeller och rader för relationsdatabaser. Grafdatabaser är utmärkta vid modellering och analys av mycket anslutna data, till exempel sociala nätverk, kunskapsdiagram, rekommendationssystem och bedrägeriidentifiering.

Grundläggande skillnader

  • Grafdatabaser: Organisera data som noder och kanter och lagra relationer explicit. Traversering av anslutningar är effektivt och ofta oberoende av den totala datamängdens storlek.
  • Relationsdatabaser: Organisera data i tabeller med rader och kolumner. Relationer härleds vid frågetillfället med hjälp av JOIN-åtgärder, som kan bli komplexa och långsamma för mycket anslutna data.

Fråga efter relationer: Sammanfogningar jämfört med traversering

Relationsdatabaserfrågor: Data i olika tabeller länkas via främmande nycklar. För att hämta relaterade data använder relationsdatabaser JOIN-åtgärder för att kombinera rader från flera tabeller. Detta fungerar bra för enkla relationer men kan bli dyrt och komplext för djup- eller variabellängdsanslutningar.

Graph-databasfrågor: Relationer lagras som kanter, vilket möjliggör direkt bläddering från en nod till en annan. Graph-frågor kan effektivt navigera i flera hopp och komplexa mönster. Diagramfrågespråk som GQL gör det enkelt att uttrycka blädderingar och mönstermatchning.

Example:

GQL:

MATCH (p:Person)-[:friendsWith]->(friend)-[:purchased]->(o:Order)
WHERE p.name = 'Alice';
RETURN o

SQL (motsvarande):

SELECT o.*
FROM Person AS p
JOIN Friends_With AS fw ON p.id = fw.person_id
JOIN Person AS friend ON fw.friend_id = friend.id
JOIN Purchased AS pur ON friend.id = pur.person_id
JOIN "Order" AS o ON pur.order_id = o.id
WHERE p.name = 'Alice';

Anmärkning

GQL är ett ISO-standardiserat frågespråk för grafdatabaser, utformat för effektiv frågekörning och manipulering av grafstrukturerade data. Samma internationella arbetsgrupp som övervakar SQL utvecklar den.

Prestandakonsekvenser

Grafdatabaser kan överträffa relationssystem för frågor som omfattar många kanter eller okända djup, särskilt för djuplänksanalyser eller rekursiva frågor. Relationsdatabaser utmärker sig vid uppsättningsorienterade åtgärder och aggregeringar på grund av årtionden av optimering.

Skalningsöverväganden

  • Relationsdatabaser: Skala vanligtvis lodrätt (större datorer) och kan skalas vågrätt via horisontell partitionering och replikering. Sharding av mycket anslutna scheman är komplext och kan medföra överbelastning mellan nätverk.
  • Grafdatabaser: Skala lodrätt och vågrätt. Distribuerade grafdatabaser partitionerar grafer mellan datorer och syftar till att hålla ihop relaterade noder för effektiva genomgångar.

När du ska använda varje

Använd en grafdatabas om:

  • Dina data är mycket anslutna och relationsintensiva (sociala nätverk, kunskapsdiagram, rekommendationer).
  • Du måste gå igenom ett okänt eller variabelt antal hopp.
  • Schemat utvecklas eller är halvstrukturerat.
  • Du vill ha intuitiv modellering för domäner där relationer är centrala.

Använd en relationsdatabas om:

  • Dina data är mestadels tabellbaserade eller passar en väldefinierad struktur.
  • Dina sökningar omfattar tunga aggregeringar eller operationer på stora dataset.
  • Du har befintliga verktyg eller expertis som är anpassade till SQL.

Hybridmetoder

Många projekt använder båda: en relationsdatabas för grundläggande transaktionsdata och en grafdatabas för specialiserade analys- eller nätverksanalysfunktioner.