Analysera driftdata på MongoDB Atlas med Hjälp av Azure Synapse Analytics

Azure App Service
Azure Data Lake Storage
Azure Event Grid
Azure Synapse Analytics
Power BI

Den här artikeln innehåller en lösning för att härleda insikter från Driftdata för MongoDB Atlas. Lösningen ansluter MongoDB Atlas till Azure Synapse Analytics. Anslutningen gör det möjligt att överföra data i batchar och i realtid. Realtidsmetoden håller azure Synapse Analytics-dedikerade SQL-pooler synkroniserade med ändringar i MongoDB Atlas-datakällan.

Apache®, Apache Spark och flamlogotypen är antingen registrerade varumärken eller varumärken som tillhör Apache Software Foundation i USA och/eller andra länder. Inget godkännande från Apache Software Foundation underförstås av användningen av dessa märken.

MongoDB Atlas-logotypen är ett varumärke som tillhör MongoDB. Inget godkännande understås av användningen av det här märket.

Arkitektur

Följande diagram visar hur du synkroniserar MongoDB Atlas-data till Azure Synapse Analytics i realtid.

Architecture diagram that shows data flow from MongoDB Atlas to analysis apps. Interim stages include a change stream API and Azure Synapse Analytics.

Ladda ned en PowerPoint-fil med alla diagram i den här artikeln.

Dataflöde

Lösningen innehåller två alternativ för att utlösa pipelines som samlar in realtidsändringarna i MongoDB Atlas operational data store (ODS) och synkroniserar data. Följande steg beskriver båda alternativen.

  1. Ändringar sker i drift- och transaktionsdata som lagras i MongoDB Atlas. Api:erna för Mongo Atlas-ändringsström meddelar prenumererade program om ändringarna i realtid.

  2. En anpassad Azure App Service-webbapp prenumererar på MongoDB-ändringsströmmen. Det finns två versioner av webbappen, Event Grid och lagring, en för varje version av lösningen. Båda appversionerna lyssnar efter ändringar som orsakas av en infognings-, uppdaterings- eller borttagningsåtgärd i Atlas. När apparna identifierar en ändring skriver de det ändrade dokumentet som en blob till Azure Data Lake Storage, som är integrerat med Azure Synapse Analytics. Event Grid-versionen av appen skapar också en ny händelse i Azure Event Grid när den identifierar en ändring i Atlas.

  3. Båda versionerna av lösningen utlöser Azure Synapse Analytics-pipelinen:

    1. I Event Grid-versionen konfigureras en anpassad händelsebaserad utlösare i Azure Synapse Analytics. Utlösaren prenumererar på event grid-ämnet som webbappen publicerar till. Den nya händelsen i det ämnet aktiverar Azure Synapse Analytics-utlösaren, vilket gör att Azure Synapse Analytics-datapipelinen körs.
    2. I lagringsversionen konfigureras en lagringsbaserad utlösare i Azure Synapse Analytics. När den nya bloben identifieras i den integrerade Data Lake Storage-mappen aktiveras utlösaren, vilket gör att Azure Synapse Analytics-datapipelinen körs.
  4. I en kopieringsaktivitet kopierar Azure Synapse Analytics-pipelinen det fullständiga ändrade dokumentet från Data Lake Storage-bloben till den dedikerade SQL-poolen. Den här åtgärden är konfigurerad för att göra en upsert på en vald kolumn. Om kolumnen finns i den dedikerade SQL-poolen uppdaterar upsert kolumnen. Om kolumnen inte finns infogar upsert kolumnen.

  5. Den dedikerade SQL-poolen är funktionen för informationslager för företag som är värd för tabellen som datapipelinen uppdaterar. Pipelinens kopieringsdataaktivitet håller tabellen synkroniserad med motsvarande Atlas-samling.

  6. Power BI-rapporter och visualiseringar visar aktuella och nästan realtidsanalyser. Data matas också in i underordnade program. MongoDB Atlas fungerar som en mottagare med hjälp av en Azure Synapse Analytics-anslutningsapp för datapipelinesmottagare. Atlas tillhandahåller sedan anpassade appar med realtidsdata.

Komponenter

  • MongoDB Atlas är ett databas-som-en-tjänst-erbjudande från MongoDB. Den här dataplattformen för flera molnprogram erbjuder transaktionsbearbetning, relevansbaserad sökning, realtidsanalys och datasynkronisering från mobil till moln. MongoDB erbjuder också en lokal lösning, MongoDB Enterprise Advanced.

  • Ändringsströmmar i MongoDB Atlas ger program åtkomst till dataändringar i realtid så att apparna omedelbart kan reagera på dessa ändringar. Ändringsströmmarna är ett sätt för program att ta emot meddelanden om ändringar i en viss samling, databas eller hela distributionsklustret.

  • App Service och dess webbappar, mobilappar och API Apps-funktioner tillhandahåller ett ramverk för att skapa, distribuera och skala webbappar, mobilappar och REST-API:er. Den här lösningen använder webbappar som är programmerade i ASP.NET. Koden är tillgänglig på GitHub:

  • Azure Synapse Analytics är den kärntjänst som den här lösningen använder för datainmatning, bearbetning och analys.

  • Data Lake Storage innehåller funktioner för att lagra och bearbeta data. Som en datasjö som bygger på Blob Storage tillhandahåller Data Lake Storage en skalbar lösning för att hantera stora mängder data från flera heterogena källor.

  • Azure Synapse Analytics-pipelines används för att utföra åtgärder för att extrahera, transformera och läsa in (ETL) på data. Azure Data Factory tillhandahåller en liknande tjänst, men du kan skapa Azure Synapse Analytics-pipelines i Synapse Studio. Du kan använda flera aktiviteter i samma pipeline. Du kan också skapa beroendeslutpunkter för att ansluta en aktivitet till en annan aktivitet i pipelinen.

  • Mappning av dataflöden är visuellt utformade datatransformeringar i Azure Synapse Analytics. Dataflöden är ett sätt för datatekniker att utveckla datatransformeringslogik utan att skriva kod. Du kan köra resulterande dataflöden som aktiviteter i Azure Synapse Analytics-pipelines som använder utskalade Apache Spark-kluster. Du kan använda dataflödesaktiviteter i drift med hjälp av befintliga schemaläggnings-, kontroll-, flödes- och övervakningsfunktioner i Azure Synapse Analytics.

  • Dedikerad SQL-pool tillhandahåller datalagerfunktioner för data när data har bearbetats och normaliserats. Den här funktionen i Azure Synapse Analytics kallades tidigare SQL Data Warehouse. Dedikerade SQL-pooler gör raffinerade data tillgängliga för dina slutanvändare och program.

  • Azure Synapse Analytics-utlösare ger ett automatiserat sätt att köra pipelines. Du kan schemalägga dessa utlösare. Du kan också konfigurera händelsebaserade utlösare, till exempel utlösare för lagringshändelser och anpassade händelseutlösare. Lösningen använder båda typerna av händelsebaserade utlösare.

  • Event Grid är en mycket skalbar, serverlös händelsekö. Du kan använda Event Grid för att leverera händelser till prenumerantmål.

  • Power BI är en samling programvarutjänster och appar som visar analysinformation. I den här lösningen ger Power BI ett sätt att använda bearbetade data för att utföra avancerad analys och härleda insikter.

Information om scenario

MongoDB Atlas fungerar som det operativa datalagret för många företagsprogram. Den här molndatabasen lagrar data från interna program, kundriktade tjänster och API:er från tredje part från flera kanaler. Genom att använda Azure Synapse Analytics-pipelines kan du kombinera MongoDB Atlas-data med relationsdata från andra traditionella program och ostrukturerade data från källor som loggar.

Batchintegration

I Azure Synapse Analytics kan du sömlöst integrera lokala MongoDB-instanser och MongoDB Atlas som en käll- eller mottagarresurs. MongoDB är den enda NoSQL-databasen som har anslutningsappar för källa och mottagare för Azure Synapse Analytics och Data Factory.

Med historiska data kan du hämta alla data samtidigt. Du kan också hämta data stegvis under specifika perioder med hjälp av ett filter i batchläge. Sedan kan du använda SQL-pooler och Apache Spark-pooler i Azure Synapse Analytics för att transformera och analysera data. Om du behöver lagra analys- eller frågeresultaten i ett analysdatalager kan du använda mottagarresursen i Azure Synapse Analytics.

Architecture diagram that shows the source and sink connectors that connect data from consumers to Azure Synapse Analytics and MongoDB data storage.

Mer information om hur du konfigurerar anslutningsappar finns i följande resurser:

Källanslutningsappen är ett bekvämt sätt att köra Azure Synapse Analytics ovanpå driftdata som lagras i MongoDB eller Atlas. När du har använt källanslutningsappen för att hämta data från Atlas kan du läsa in data i Data Lake Storage Blob Storage som en Parquet-, Avro-, JSON-, text- eller CSV-fil. Du kan sedan transformera dessa filer eller koppla dem till andra filer från andra datakällor i miljöer med flera databaser, flera moln eller hybridmoln.

Du kan använda de data som du hämtar från MongoDB Enterprise Advanced eller MongoDB Atlas i följande scenarier:

  • Hämta alla data från ett visst datum från MongoDB i en batch. Sedan läser du in data i Data Lake Storage. Därifrån använder du en serverlös SQL-pool eller Spark-pool för analys, eller så kopierar du data till en dedikerad SQL-pool. När du har hämtat den här batchen kan du tillämpa ändringar på data när de inträffar, enligt beskrivningen i Dataflöde. En Storage-CopyPipeline_mdb_synapse_ded_pool_RTS-exempelpipeline är tillgänglig som en del av den här lösningen. Du kan exportera pipelinen från GitHub för den här engångsinläsningen.

  • För att skapa insikter med en viss frekvens, till exempel för en daglig rapport eller varje timme. I det här scenariot schemalägger du en pipeline för att hämta data regelbundet innan du kör analyspipelines. Du kan använda en MongoDB-fråga för att tillämpa filtervillkor och endast hämta en viss delmängd data.

Realtidssynkronisering

Företag behöver insikter som baseras på realtidsdata, inte inaktuella data. En fördröjning på några timmar i insiktsleveransen kan fördröja beslutsprocessen och leda till en förlust av konkurrensfördelar. Den här lösningen underblåser kritiskt beslutsfattande genom att sprida ändringar som sker i MongoDB-transaktionsdatabasen till den dedikerade SQL-poolen i realtid.

Den här lösningen har tre delar, som beskrivs i följande avsnitt.

Samla in MongoDB Atlas-ändringarna

MongoDB-ändringsströmmen samlar in ändringar som sker i databasen. Api:erna för ändringsström gör information om ändringar tillgängliga för App Service-webbappar som prenumererar på ändringsströmmen. De här apparna skriver ändringarna i Data Lake Storage-bloblagringen.

Utlösa en pipeline för att sprida ändringarna till Azure Synapse Analytics

Lösningen innehåller två alternativ för att utlösa en Azure Synapse Analytics-pipeline när blobben har skrivits till Data Lake Storage:

  • En lagringsbaserad utlösare. Använd det här alternativet om du behöver realtidsanalys eftersom pipelinen utlöses så snart blobben med ändringen har skrivits. Men det här alternativet kanske inte är den bästa metoden när du har en stor mängd dataändringar. Azure Synapse Analytics begränsar antalet pipelines som kan köras samtidigt. När du har ett stort antal dataändringar kan du nå den gränsen.

  • En händelsebaserad anpassad utlösare. Den här typen av utlösare har fördelen att den är utanför Azure Synapse Analytics, så det är enklare att kontrollera. Event Grid-versionen av webbappen skriver det ändrade datadokumentet till bloblagringen. Samtidigt skapar appen en ny Event Grid-händelse. Data i händelsen innehåller blobens filnamn. Pipelinen som händelsen utlöser tar emot filnamnet som en parameter och använder sedan filen för att uppdatera den dedikerade SQL-poolen.

Sprida ändringarna till en dedikerad SQL-pool

En Azure Synapse Analytics-pipeline sprider ändringarna till en dedikerad SQL-pool. Lösningen tillhandahåller en CopyPipeline_mdb_synapse_ded_pool_RTS pipeline på GitHub som kopierar ändringen i bloben från Data Lake Storage till den dedikerade SQL-poolen. Den här pipelinen utlöses av antingen storage- eller Event Grid-utlösaren.

Potentiella användningsfall

Användningsfallen för den här lösningen omfattar många branscher och områden:

  • Retail

    • Skapa information om produktpaketering och produkthöjning
    • Optimera kall lagring som använder IoT-strömning
    • Optimera lagerpåfyllning
    • Lägga till värde i omnichannel-distribution
  • Bank och ekonomi

    • Anpassa kundens finansiella tjänster
    • Identifiera potentiellt bedrägliga transaktioner
  • Telekommunikation

    • Optimera nästa generations nätverk
    • Maximera värdet för gränsnätverk
  • Fordonsindustri

    • Optimera parameterisering av anslutna fordon
    • Identifiera avvikelser i IoT-kommunikation i anslutna fordon
  • Manufacturing

    • Tillhandahålla förutsägande underhåll för maskiner
    • Optimera lagrings- och lagerhantering

Här är två specifika exempel:

  • Som den här artikeln beskriver tidigare i Batch-integrering kan du hämta MongoDB-data i en batch och sedan uppdatera data när ändringar sker. Den här funktionen gör realtidsinformation möjlig för just-in-time-beslutsfattande och slutsatser. Den här funktionen är användbar för analys av känslig och kritisk information, till exempel finansiella transaktioner och bedrägeriidentifieringsdata.
  • Som Batch-integrering också beskriver kan du schemalägga en pipeline för att hämta MongoDB-data regelbundet. Den här funktionen är användbar i detaljhandelsscenarier som att uppdatera lagernivåer med dagliga försäljningsdata. I sådana fall är analysrapporter och instrumentpaneler inte av avgörande betydelse och realtidsanalys är inte värt arbetet.

Följande avsnitt tar en närmare titt på två användningsfall för detaljhandeln.

Paketering av produkter

För att marknadsföra försäljningen av en produkt kan du sälja produkten som en del av ett paket tillsammans med andra relaterade produkter. Målet är att använda försäljningsmönsterdata för att utveckla strategier för att paketera en produkt i paket.

Det finns två datakällor:

  • Produktkatalogdata från MongoDB
  • Försäljningsdata från Azure SQL

Båda datauppsättningarna migreras till en dedikerad SQL-pool i Azure Synapse Analytics med hjälp av en Azure Synapse Analytics-pipeline. Utlösare och ändringsdatainsamlingar används för att uppnå en datasynkronisering i nästan realtid ovanpå engångsmigrerade data.

Följande Power BI-diagram visar tillhörigheten mellan produkterna och försäljningsmönstren. Tillhörigheten mellan pennan och pennanteckningsbaserad påfyllning är hög. Försäljningsdata visar att pennan har en hög försäljningsvolym i det angivna området.

Diagram that shows pipeline stages and charts that show pen sales by product, year, region, and affinity. Pen sales are highest in 2022 in the South.

Analysen ger två förslag för att ge bättre försäljning:

  • Paketering av pennan och pennanteckningsbaserad påfyllning
  • Marknadsföra paketet inom vissa områden

Produkthöjning

För att marknadsföra försäljningen av en produkt kan du rekommendera produkten till kunder som är intresserade av relaterade produkter. Målet är att använda försäljningsdata och kundköpsmönster för att utveckla strategier för att rekommendera en produkt till kunder.

Genom att använda Azure Synapse Analytics kan du utveckla AI- och maskininlärningsmodeller för att avgöra vilka produkter som ska rekommenderas till kunderna.

Följande diagram visar användningen av olika typer av data för att skapa en modell för att fastställa alternativa produktrekommendationer. Data inkluderar kundköpsmönster, vinster, produkttillhörighet, försäljningsvolymen för produkterna och produktkatalogparametrar.

Diagrams that show pipeline stages and a workflow for an AI model. Data fields include the customer ID, price, sales, and profit.

Om din modell uppnår hög noggrannhet innehåller den en lista över produkter som du kan rekommendera till kunden.

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.

Säkerhet

Säkerhet ger garantier mot avsiktliga attacker och missbruk av dina värdefulla data och system. Mer information finns i Översikt över säkerhetspelare.

Detaljerad information om säkerhetskrav och kontroller för Azure-komponenterna i lösningen finns i säkerhetsavsnittet i varje produkts dokumentation.

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 beräkna kostnaden för Azure-produkter och -konfigurationer använder du priskalkylatorn för Azure.
  • Azure hjälper dig att undvika onödiga kostnader genom att identifiera rätt antal resurser för dina behov, genom att analysera utgifter över tid och genom att skala för att uppfylla affärsbehov utan överförbrukning. Du kan till exempel pausa de dedikerade SQL-poolerna när du inte förväntar dig någon belastning. Du kan återuppta dem senare.
  • Du kan ersätta App Service med Azure Functions. Genom att samordna funktionerna i en Azure Synapse Analytics-pipeline kan du minska kostnaderna.
  • Om du vill minska Spark-klusterkostnaden väljer du rätt dataflödesberäkningstyp. Allmänna och minnesoptimerade alternativ är tillgängliga. Välj också lämpliga kärnvärden och TTL-värden (time-to-live).
  • Mer information om hur du hanterar kostnaderna för viktiga lösningskomponenter finns i följande resurser:

Prestandaeffektivitet

Prestandaeffektivitet är arbetsbelastningens förmåga att skala för att uppfylla de krav som användarna ställer på den på ett effektivt sätt. Mer information finns i Översikt över grundpelare för prestandaeffektivitet.

När det finns en stor mängd ändringar kan tusentals pipelines i Azure Synapse Analytics köras för varje ändring i samlingen, vilket kan leda till kvarvarande köade pipelines. Tänk på följande metoder för att förbättra prestanda i det här scenariot:

  • Använd den lagringsbaserade App Service-koden, som skriver JSON-dokumenten med ändringarna i Data Lake Storage. Länka inte den lagringsbaserade utlösaren till pipelinen. Använd i stället en schemalagd utlösare med ett kort intervall, till exempel varannan eller var femte minut. När den schemalagda utlösaren körs tar den alla filer i den angivna Data Lake Storage-katalogen och uppdaterar den dedikerade SQL-poolen för var och en av dem.
  • Ändra Event Grid App Service-koden. Programmera den för att lägga till en mikrobatch med cirka 100 ändringar i bloblagringen innan den lägger till det nya ämnet i händelsen med metadata som innehåller filnamnet. Med den här ändringen utlöser du bara en pipeline för en blob med de 100 ändringarna. Du kan justera mikrobatchstorleken så att den passar ditt scenario. Använd små mikrobatch med hög frekvens för att tillhandahålla uppdateringar som är nära realtid. Eller använd större mikrobatch med lägre frekvens för fördröjda uppdateringar och lägre omkostnader.

Mer information om hur du förbättrar prestanda och skalbarhet för azure Synapse Analytics-pipelinekopieringsaktivitet finns i aktiviteten Kopiera guide för prestanda och skalbarhet.

Distribuera det här scenariot

Information om hur du implementerar den här lösningen finns i Realtidssynkroniseringslösning för MongoDB Atlas-integrering med Synapse.

Deltagare

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

Huvudsakliga författare:

Övriga medarbetare:

Om du vill se icke-offentliga LinkedIn-profiler loggar du in på LinkedIn.

Nästa steg

Om du vill ha mer information om lösningen kontaktar du partners@mongodb.com.

Information om MongoDB finns i följande resurser:

Information om Azure-lösningskomponenter finns i följande resurser: