Den här artikeln beskriver en lösning för en arkitektur för hybridtransaktion/analysbearbetning (HTAP). För att bearbeta transaktioner använder de flesta system arbetsbelastningar med korta svarstider och stora volymer. För analys är arbetsbelastningar med längre svarstider och lägre volymer mer typiska. HTAP-arkitekturer är en lösning för båda arbetsbelastningstyperna. Med hjälp av minnesbaserade databaser konsoliderar HTAP tekniker för att optimera frågor på stora mängder data.
Azure SQL Database utgör kärnan i den här HTAP-lösningen. Metoden delar in data i vågrätt 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 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. Svarstiderna på den lågsö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 horisontell partitionering av data och användning av en elastisk databas.
Potentiella användningsfall
Den här lösningen gäller för organisationer som behöver åtkomst med korta svarstider till stora mängder historiska data. Exempel:
- Online-återförsäljare som har åtkomst till kundhistorik och demografisk information för att tillhandahålla anpassade upplevelser.
- Energileverantörer som kombinerar enhetsdata med analys för att hantera smarta elnät.
- Företag som arbetar med bedrägeriskydd genom att identifiera mönster i historiska data och realtidsdata.
- Tillverkare som förlitar sig på händelsebearbetning i realtid för att identifiera problem.
Arkitektur
Ladda ned en SVG-fil för den här arkitekturen.
- Event Hubs matar in telemetri från lokala anläggningar.
- Blob Storage samlar in Event Hubs data och lagrar dem för framtida analys.
- Stream Analytics bearbetar data. I lösningens heta sökväg frågar Azure Cosmos DB data från de föregående två månaderna. Azure Cosmos DB garanterar svarstider på ensiffriga millisekunder.
- Om fel inträffar under databearbetning eller lagring loggar systemet dem i Azure Table Storage.
- Azure Functions använder SQL Database elastiska databasklientbiblioteket för att arkivera data. Den här processen partitionerar data för att optimera infogningsåtgärder. Lösningen bildar shards genom att vågrätt 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.
- Ett Azure Databricks-kluster ombearbetar blobbdata Storage data. Mer specifikt 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 över val annat antal geografiska regioner.
Tabell Storage ingår i 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 även AI-baserade, automatiserade funktioner som optimerar prestanda och hållbarhet. Serverlös beräkning och hyperskalalagringsalternativ skalar automatiskt resurser på begäran.
Elastiska databasverktyg hjälper dig att skapa och hantera utskalade databaser. Den här funktionen SQL Database ett klientbibliotek som du kan använda för att utveckla shardade 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 datamängder. Den kombinerar bearbetade data med strukturerade data från driftdatabaser eller informationslager. Azure Databricks även träna och distribuera 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.
Överväganden
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:
Saker att tänka på gällande prestanda
Optimera prestanda:
- Kombinera horisontell partitionering med tabellkomprimering.
- Partitionera tabeller efter datum. Varje fragment innehåller data från en annan period.
- Justera index med datumpartitionering.
Om du vill skala upp till mer än 50 000 meddelanden per sekund använder du elastic database-klientbiblioteket från Functions för att:
- Gruppera meddelanden efter partition.
- Dela in insert-instruktioner i små batchar.
Den här metoden är lämplig för system som använder 10 Standard S3-databaser av SQL Database. Om du vill vara värd för ett kolumnindex behöver du minst standardnivån.
För bästa prestanda under infogningsåtgärder använder du tabellvärdesparametrar med lagrade procedurer.
När du använder instruktionen CREATE COLUMNSTORE INDEX använder du COLUMNSTORE_ARCHIVE alternativet. 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.
Skalbarhetsöverväganden
- Använd shards så att du kan expandera systemet för att uppfylla krävande arbetsbelastningar. När du använder fragmenterade databaser kan du lägga till eller ta bort shards för att skala ut eller in. Verktyget split-merge hjälper dig att dela och sammanfoga partitioner.
- Dra nytta av skalningsfunktionen i Functions. Skapa funktioner som skalar baserat på processor- och minnesanvändning. Konfigurera funktionerna för att starta nya instanser för att hantera oväntade arbetsbelastningar.
- Öka storleken på ditt Azure Databricks för att skala upp ombearbetningen av Avro-filer. Lösningen använder Azure Databricks för att bearbeta Avro-filer som Blob Storage har avbildat. Spark-kluster Azure Databricks kan bearbeta hela eller en del av Avro-filens sökväg. Genom att Azure Databricks klusterstorleken kan du ombearbeta alla data inom en obligatorisk tidsram. För att hantera ökad volym Azure Databricks lägger du till instanser Event Hubs till namnområdet efter behov.
Att tänka på om återhämtning
- Alla komponenter i det här scenariot hanteras. På regional nivå erbjuder de inbyggd motståndskraft.
- Allmän vägledning om hur du utformar motståndskraftiga lösningar finns i Översikt över grundpelaren för tillförlitlighet.
Prissättning
Om du vill utforska kostnaden för att köra det här scenariot använder du priskalkylatornfö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 olika mängder meddelanden på 1 kilobyte:
| Storlek | Meddelandevolym | Profil |
|---|---|---|
| Liten | Färre än 500 meddelanden per sekund | Liten profil |
| Medel | 1 500 meddelanden per sekund | Medelprofil |
| Stor | Mer än 5 000 meddelanden per sekund | Stor profil |