Välja ett analysdatalager i Azure

I en stordataarkitektur finns det ofta ett behov av ett analysdatalager som betjänar bearbetade data i ett strukturerat format som kan efterfrågas med analysverktyg. Analysdatalager som stöder frågor mot både hot-path- och cold-path-data kallas gemensamt för det betjänande lagret eller data som betjänar lagring.

Det betjänande lagret hanterar bearbetade data från både den heta sökvägen och den kalla sökvägen. I lambda-arkitekturendelas det betjänande lagret in i ett hastighets betjänande lager, som lagrar data som har bearbetats inkrementellt och ett batchbearbetningslager som innehåller batchbearbetningsutdata. Det betjänande lagret kräver starkt stöd för slumpmässiga läsningar med kort svarstid. Datalagring för hastighetslagret bör också ha stöd för slumpmässiga skrivningar, eftersom batch-inläsning av data till det här lagret skulle innebära oönskade fördröjningar. Å andra sidan behöver datalagring för batchlagret inte stödja slumpmässiga skrivningar, utan batch-skrivningar i stället.

Det finns inget enskilt bästa datahanteringsval för alla datalagringsuppgifter. Olika datahanteringslösningar är optimerade för olika uppgifter. De flesta verkliga molnappar och stordataprocesser har en mängd olika krav på datalagring och använder ofta en kombination av datalagringslösningar.

Vilka alternativ har du när du väljer ett analysdatalager?

Det finns flera alternativ för data som betjänar lagring i Azure, beroende på dina behov:

De här alternativen ger olika databasmodeller som är optimerade för olika typer av uppgifter:

  • Nyckel/värde-databaser innehåller ett enda serialiserat objekt för varje nyckelvärde. De är bra för att lagra stora mängder data där du vill hämta ett objekt för ett visst nyckelvärde och du inte behöver fråga baserat på andra egenskaper för objektet.
  • Dokumentdatabaser är nyckel-/värdedatabaser där värdena är dokument. Ett "dokument" i den här kontexten är en samling namngivna fält och värden. Databasen lagrar vanligtvis data i ett format som XML, YAML, JSON eller BSON, men kan använda oformaterad text. Dokumentdatabaser kan köra frågor mot icke-nyckelfält och definiera sekundära index för att göra frågor mer effektiva. Detta gör en dokumentdatabas mer lämplig för program som behöver hämta data baserat på kriterier som är mer komplexa än värdet för dokumentnyckeln. Du kan till exempel fråga efter fält som produkt-ID, kund-ID eller kundnamn.
  • Kolumnfamiljedatabaser är nyckel/värde-datalager som strukturerar datalagring i samlingar med relaterade kolumner som kallas kolumnfamiljer. En censusdatabas kan till exempel ha en grupp kolumner för en persons namn (första, mitten, sista), en grupp för personens adress och en grupp för personens profilinformation (födelsedata, kön). Databasen kan lagra varje kolumnfamilj i en separat partition, samtidigt som alla data för en person som är relaterade till samma nyckel finns kvar. Ett program kan läsa en enda kolumnfamilj utan att läsa igenom alla data för en entitet.
  • Graph-databaser lagrar information som en samling objekt och relationer. En grafdatabas kan effektivt utföra frågor som passerar nätverket med objekt och relationerna mellan dem. Objekten kan till exempel vara anställda i en personaldatabas och du kanske vill underlätta frågor som "hitta alla anställda som direkt eller indirekt arbetar för Scott".
  • Telemetri- och tidsseriedatabaser är en samling objekt som endast läggs till. Telemetridatabaser indexerar effektivt data i en mängd olika kolumnlager och minnesbaserade strukturer, vilket gör dem till det optimala valet för att lagra och analysera stora mängder telemetri- och tidsseriedata.

Viktiga urvalsvillkor

Börja med att besvara de här frågorna för att begränsa alternativen:

  • Behöver du betjäna lagring som kan fungera som en snabb sökväg för dina data? Om ja, begränsa alternativen till de som är optimerade för ett hastighets betjänande lager.

  • Behöver du stöd för massivt parallell bearbetning (MPP), där frågor distribueras automatiskt över flera processer eller noder? Om ja, välj ett alternativ som stöder frågeutskalning.

  • Föredrar du att använda ett relationsdatalager? I så fall begränsar du alternativen till dem som har en relationsdatabasmodell. Observera dock att vissa icke-relationella lager stöder SQL syntax för frågor, och verktyg som PolyBase kan användas för att köra frågor mot icke-relationella datalager.

  • Samlar du in tidsseriedata? Använder du data som endast läggs till?

Kapacitetsmatris

I följande tabeller sammanfattas de viktigaste skillnaderna i funktioner.

Allmänna funktioner

Funktion SQL Database Azure Synapse SQL pool Azure Synapse Spark-pool Öppna Azure-datautforskaren HBase/Phoenix på HDInsight Hive LLAP på HDInsight Azure Analysis Services Cosmos DB
Är hanterad tjänst Ja Ja Ja Ja Ja 1 Ja 1 Ja Ja
Primär databasmodell Relationell (kolumnformat när du använder kolumnlagringsindex) Relationstabeller med kolumnlagring Bred kolumnarkiv Relationslager (kolumnarkiv), telemetri och tidsserielager Bred kolumnarkiv Hive/In-Memory Tabellsemantikmodeller Dokumentarkiv, diagram, nyckel/värde-lager, brett kolumnarkiv
SQL språkstöd Ja Ja Ja Ja Ja (med Phoenix JDBC-drivrutin) Ja Inga Ja
Optimerad för hastighets betjänande lager Ja 2 Ja 3 Ja Ja Ja Ja Inga Ja

[1] Med manuell konfiguration och skalning.

[2] Använda minnesoptimerade tabeller och hash- eller icke-clustered-index.

[3] Stöds som Azure Stream Analytics utdata.

Skalbarhetsfunktioner

Funktion SQL Database Azure Synapse SQL pool Azure Synapse Spark-pool Öppna Azure-datautforskaren HBase/Phoenix på HDInsight Hive LLAP på HDInsight Azure Analysis Services Cosmos DB
Redundanta regionala servrar för hög tillgänglighet Ja Inga Inga Ja Ja Inga Inga Ja
Stöder frågeutskalning Inga Ja Ja Ja Ja Ja Ja Ja
Dynamisk skalbarhet (skala upp) Ja Ja Ja Ja Inga Inga Ja Ja
Stöder minnescachelagring av data Ja Ja Ja Ja Inga Ja Ja Inga

Säkerhetsfunktioner

Funktion SQL Database Azure Synapse Öppna Azure-datautforskaren HBase/Phoenix på HDInsight Hive LLAP på HDInsight Azure Analysis Services Cosmos DB
Autentisering SQL/Azure Active Directory (Azure AD) SQL/Azure AD Azure AD local/Azure AD 1 local/Azure AD 1 Azure AD databasanvändare/Azure AD via åtkomstkontroll (IAM)
Datakryptering i vila Ja 2 Ja 2 Yes Ja 1 Ja 1 Ja Ja
Säkerhet på radnivå Yes Ja 3 Nej Ja 1 Ja 1 Ja Inga
Stöder brandväggar Ja Ja Ja Ja 4 Ja 4 Ja Ja
Dynamisk datamaskning Ja Ja Ja Ja 1 Ja Inga Inga

[1] Kräver att du använder ett domän-ansluten HDInsight-kluster.

[2] Kräver att transparent datakryptering (TDE) används för att kryptera och dekryptera dina vilodata.

[3] Filtrera predikat endast. Se Säkerhet på radnivå

[4] När det används i en Azure Virtual Network. Se Utöka Azure HDInsight med hjälp av en Azure Virtual Network.