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:
- Azure Synapse Analytics
- Azure Synapse Spark-pooler
- Azure Databricks
- Azure-datautforskaren
- Azure SQL Database
- SQL Server på Azure VM
- HBase/Phoenix på HDInsight
- Hive LLAP på HDInsight
- Azure Analysis Services
- Azure Cosmos DB
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.