Redigera

Share via


Kostnadsbesparingar via HTAP med Azure SQL

Azure Databricks
Azure Event Hubs
Azure Functions
Azure SQL Database
Azure Stream Analytics

Den här artikeln beskriver en lösning för en HTAP-arkitektur (Hybrid Transaction/Analytical Processing). För att bearbeta transaktioner använder de flesta system driftarbetsbelastningar med låg svarstid och hög volym. För analys är arbetsbelastningar med högre svarstid och lägre volym mer typiska. HTAP-arkitekturer erbjuder en lösning för båda arbetsbelastningstyperna. Med hjälp av minnesinterna databaser konsoliderar HTAP tekniker för att optimera frågor på stora mängder data.

Arkitektur

Architecture diagram showing how data flows through an HTAP solution with Azure SQL Database at its center.

Ladda ned en Visio-fil med den här arkitekturen.

Dataflöde

  1. Event Hubs matar in telemetri från lokala anläggningar.
  2. Blob Storage samlar in Event Hubs-data och lagrar dem för framtida analys.
  3. Stream Analytics bearbetar data. I lösningens heta sökväg frågar Azure Cosmos DB data från de senaste två månaderna. Azure Cosmos DB garanterar svarstider med ensiffrig millisekunder.
  4. Om fel uppstår under databearbetning eller lagring loggar systemet dem i Azure Table Storage.
  5. Azure Functions använder SQL Database-klientbiblioteket för elastisk databas för att arkivera data. Den här processen partitioner data för att optimera infogningsåtgärder. Lösningen bildar shards genom att horisontellt distribuera data över flera Azure SQL-databaser. Varje databas använder ett partitionerat grupperat kolumnindex för att komprimera tabeller. Svarstiderna på den här kalla sökvägen är vanligtvis under en sekund.
  6. Ett Azure Databricks-kluster ombearbetar Blob Storage-data. Mer specifikt deserialiserar Azure Databricks Avro-filer och skickar data till Event Hubs för valfri analys.

Komponenter

  • Event Hubs är en fullständigt hanterad strömningsplattform för stordata.

  • Stream Analytics tillhandahåller serverlös dataströmbearbetning i realtid genom att köra frågor i molnet och på gränsenheter.

  • Azure Cosmos DB är en globalt distribuerad databas med flera modeller. Med Azure Cosmos DB kan dina lösningar elastiskt skala dataflöde och lagring i valfritt antal geografiska regioner.

  • Table Storage är en del av Azure Storage. Den här tjänsten lagrar strukturerade NoSQL-data i molnet.

  • SQL Database är en relationsdatabastjänst som ingår i Azure SQL-familjen . Som en fullständigt hanterad tjänst hanterar SQL Database databashanteringsfunktioner. SQL Database tillhandahåller även AI-baserade, automatiserade funktioner som optimerar prestanda och hållbarhet. Lagringsalternativ för serverlös beräkning och hyperskala skalar automatiskt resurser på begäran.

  • Elastiska databasverktyg hjälper dig att skapa och hantera utskalade databaser. Den här funktionen i SQL Database innehåller ett klientbibliotek som du kan använda för att utveckla fragmenterade program.

  • Blob Storage är en tjänst som ingår i Storage. Blob Storage erbjuder optimerad molnobjektlagring för stora mängder ostrukturerade data.

  • Azure Databricks är en plattform för dataanalys. Dess fullständigt hanterade Spark-kluster bearbetar stora dataströmmar från flera källor. Azure Databricks rensar och transformerar strukturlösa datauppsättningar. Den kombinerar bearbetade data med strukturerade data från driftdatabaser eller informationslager. Azure Databricks tränar och distribuerar även skalbara maskininlärnings- och djupinlärningsmodeller.

  • Power BI är en samling analystjänster och appar. Du kan använda Power BI för att ansluta och visa orelaterade datakällor.

Information om scenario

Azure SQL Database utgör kärnan i den här HTAP-lösningen. Metoden delar upp data i horisontellt distribuerade databaser eller shards. Andra huvudkomponenter är:

  • Azure Event Hubs för datainmatning.
  • Azure Stream Analytics för databehandling.
  • Azure Functions för partitionering.
  • Azure Blob Storage för händelselagring.

Tillsammans tillhandahåller dessa tjänster en HTAP-lösning som:

  • Minskar kostnaderna genom att ge snabb åtkomst till insikter om arkiverade data. Svarstider på den lågfrekventa sökvägen sjunker från timmar till mindre än sekunder med den här lösningen.
  • Förenklar arkivering genom att automatiskt lägga till data i långsiktig lagring.
  • Maximerar skalbarheten genom att partitionera data och använda en elastisk databas.

Potentiella användningsfall

Den här lösningen gäller organisationer som behöver åtkomst med låg latens till stora mängder historiska data. Exempel:

  • Online-återförsäljare som har åtkomst till kundhistorik och demografisk information för att tillhandahålla personliga upplevelser.
  • Energileverantörer som kombinerar enhetsdata med analys för att hantera smarta elnät.
  • Företag som ägnar sig åt bedrägeriskydd genom att identifiera mönster i historiska data och realtidsdata. Det här scenariot gäller för finans- och finansbranschen.
  • Tillverkare som förlitar sig på händelsebearbetning i realtid för att identifiera problem. Det här scenariot gäller för tillverkningsindustrin.

Att tänka på

Dessa överväganden implementerar grundpelarna i Azure Well-Architected Framework, som är en uppsättning vägledande grundsatser som kan användas för att förbättra kvaliteten på en arbetsbelastning. Mer information finns i Microsoft Azure Well-Architected Framework.

Den här lösningen gör följande antaganden:

  • När du har arkiverat data behöver du inte uppdatera eller ta bort dem.
  • Dataschemat ändras bara minimalt över tid.

Tänk på följande när du implementerar den här lösningen:

Prestandaeffektivitet

Prestandaeffektivitet handlar om att effektivt skala arbetsbelastningen baserat på användarnas behov. Mer information finns i Översikt över grundpelare för prestandaeffektivitet.

  • Så här optimerar du prestanda:

    • Kombinera horisontell partitionering med tabellkomprimering.
    • Partitionstabeller efter datum. Varje shard innehåller data från en annan period.
    • Justera index med datumpartitioneringen.
  • Om du vill skala upp till mer än 50 000 meddelanden per sekund använder du klientbiblioteket för elastisk databas inifrån Functions för att:

    • Gruppera meddelanden efter partition.
    • Dela in infogningssatser i små batchar.

    Den här metoden är lämplig för system som använder 10 Standard S3-databaser av typen SQL Database. För att vara värd för ett kolumnindex behöver du minst standardnivån.

  • För bästa prestanda vid infogningsåtgärder använder du tabellvärdesparametrar med lagrade procedurer.

  • När du använder instruktionen CREATE COLUMNSTORE INDEX använder du alternativet COLUMNSTORE_ARCHIVE . Det här alternativet ger högsta möjliga komprimeringsnivå. En hög komprimeringsnivå ökar den tid du behöver för att lagra och hämta data. Men den resulterande I/O-prestandan bör fortfarande vara tillfredsställande.

Skalbarhet

  • Använd shards så att du kan expandera systemet för att möta krävande arbetsbelastningar. När du använder shardade databaser kan du lägga till eller ta bort shards för att skala ut eller in. Verktyget för delningssammanslagning hjälper dig att dela och slå samman partitioner.
  • Dra nytta av skalningsfunktionerna i Functions. Skapa funktioner som skalas baserat på cpu- och minnesanvändning. Konfigurera funktionerna för att starta nya instanser för att hantera oväntade arbetsbelastningar.
  • Öka storleken på ditt Azure Databricks-kluster för att skala upp ombearbetning av Avro-filer. Lösningen använder Azure Databricks för att bearbeta Avro-filer som Blob Storage har samlat in. Spark-kluster i Azure Databricks kan bearbeta hela eller en del av Avro-filens sökväg. Genom att öka storleken på Azure Databricks-klustret kan du bearbeta alla data på nytt inom en tidsram som krävs. Om du vill hantera ökad volym från Azure Databricks lägger du till instanser av Event Hubs i namnområdet efter behov.

Motståndskraft

  • Alla komponenter i det här scenariot hanteras. På regional nivå erbjuder de inbyggd återhämtning.
  • Allmän vägledning om hur du utformar motståndskraftiga lösningar finns i Översikt över grundpelarna för tillförlitlighet.

Kostnadsoptimering

Kostnadsoptimering handlar om att titta på sätt att minska onödiga utgifter och förbättra drifteffektiviteten. Mer information finns i Översikt över kostnadsoptimeringspelare.

Om du vill utforska kostnaden för att köra det här scenariot använder du Priskalkylatorn för Azure, som förkonfigurerar alla Azure-tjänster. Justera parametrarna så att de matchar den trafik som du förväntar dig att ta emot.

I följande tabell visas exempel på kostnadsprofiler för varierande mängder meddelanden på 1 kilobyte:

Storlek Meddelandevolym Profile
Litet Färre än 500 meddelanden per sekund Liten profil
Medium 1 500 meddelanden per sekund Medelhög profil
Stort Mer än 5 000 meddelanden per sekund Stor profil

Deltagare

Den här artikeln underhålls av Microsoft. Det har ursprungligen skrivits av följande medarbetare.

Huvudförfattare:

Nästa steg