Automatisert – dataintegritet
Lær mer om Well-Architected Easy → Automated → Data Integrity → Data Handling
| Hvor skal du se? Produktområde | Sted | Hvordan ser godt ut? Mønster |
|---|---|
| Data 360 | Data Dictionary | ✅ Feltnivådata og prioriteringslogikk finnes for alle datakilder og datasjøobjekter |
| Data 360 | Organisasjon | ✅ Sammensatte nøkler brukes til å konstruere en unik primærnøkkel hvis det ikke finnes en. Bruk et formelfelt til å slå sammen flere felt fra datasettet når det ikke er et enkelt felt i datasettet som er unikt |
| Data 360 | Organisasjon | ✅ Datastrømmer som bruker CRM-koblingen, bruker den fullstendige oppdateringen hver eneste uke Når CRM-koblingen brukes til inkrementelle innlastinger, startes en full oppdatering hver andre uke. Selv om dette kan øke datainntaket, beskytter det dataintegritet for metadata (som formelfelt), som ikke utløser en DML-transaksjon og som et resultat ikke inkluderes i inkrementelle innlastinger |
| Data 360 | Organisasjon | ✅ Enkeltperson-ID brukes til å tilordne Data 360-data til andre systemer Tilordne enkeltpersoner i Data 360 til andre systemer som bruker Enkeltperson-ID. Abonnentnøkkelen for Marketing Cloud-engasjement kan for eksempel tilordnes til Enkeltperson-IDen fra Data 360 |
| Data 360 | Organisasjon | ✅ Fullt kvalifiserte nøkler brukes til å tolke data nøyaktig Alle DLO-er som inneholder en nøkkelverdi, har et nøkkelkvalifikasjonsfelt og Fullt kvalifiserte nøkler (FQK) er aktivert i organisasjonen for å sikre at det unngås konflikter som kan oppstå når flere datastrømmer harmoniseres til ett datamodellobjekt (DMO) |
| Data 360 | Organisasjon | ✅ Normaliserte samsvarsmetoder brukes i samsvarsregler når de er tilgjengelige Nøyaktig normalisert samsvar transformerer kildedata for å løse vanlige samsvarsproblemer som etterfølgende mellomrom, inkonsekvent formatering og spesialtegn. Bruk denne metoden på felt der den er tilgjengelig i stedet for å bruke tilnærmet samsvar med mindre du har konfigurert flere regelsett for testing og har bekreftet at konsolideringsgraden ikke oppfyller forretningsbehovene |
| Einstein | Dokumentasjon | ✅ Datatilgjengelighet dokumenteres som en del av AI-prosjektutformingen Firmaets definisjon av datatilgjengelighet dokumenteres og opereres for å forbedre AI-svar |
| Plattform | Apex | ✅ Fremtidig Apex brukes sparsomt, for oppkall eller systemobjekt DML |
| Plattform | Apex | ✅ Asynkrone Apex bruker købar til "kjede"-komplekse DML på tvers av transaksjoner |
| Plattform | Apex | ✅ Batch Apex brukes utelukkende til store datavolumer Batch Apex er best til å behandle store mengder data. Asynkron Apex har høyere grenser enn synkron Apex slik at mer arbeid kan gjøres. Unngå svært små batchstørrelser der det er mulig for å unngå konsekvenser av Flow Control (køflom), overhead og uttømming av den daglige Asynkrone Apex grensen |
| Plattform | Apex | ✅ Alle synkrone DML-setninger eller Database-klassemetoder utføres i før utløserutførelseskontekster |
| Plattform | Apex | ✅ Bulk-API brukes bare når store mengder data må behandles Bulk-API brukes når store mengder data må behandles. Innebygde SOAP- og REST-API-er brukes til mindre databehandlingsmengder |
| Plattform | Data Dictionary | ✅ Felttilordning fra datasjøobjekt til datamodellobjekt finnes |
| Plattform | Flyt | ✅ Alle flyter som startes i brukerkontekst, abstrakterer alle systemkontekstraksjoner til underflyter, som plasseres konsistent etter et Pause-element, for å opprette en ny transaksjon |
| Plattform | Flyt | ✅ Alle postutløste flyter har utløserrekkefølgeverdier fylt ut |
| Plattform | Flyt | ✅ Flyter som involverer eksterne systemoppkall eller prosesser som kjører lenge, bruker asynkrone baner |
| Plattform | Flyt | ✅ Komplekse sekvenser av relaterte dataoperasjoner opprettes med Orchestrator (i stedet for å kalle opp flere underflyter i en monolittisk flyt) |
| Plattform | Organisasjon | ✅ Avstemmingsregler for Identitetsløsning følger prioriteringslogikken i datadialogen |
Lær mer om Well-Architected Easy → Automated → Data Integrity → Feilbehandling
| Hvor skal du se? Produktområde | Sted | Hvordan ser godt ut? Mønster |
|---|---|
| Einstein | Organisasjon | ✅ Ledetekster angir forventede utdata Inkluder direkte instruksjoner for LLM for å generere bare den forventede typen innhold. |
| Plattform | Apex | ✅ Tilpassede unntak brukes til å opprette avanserte feilmeldinger og logikk |
| Plattform | Apex | ✅ Kode slår sammen alle DML, SOQL, oppkall og andre viktige prosesstrinn i try-catch blokker |
| Plattform | Apex | ✅ Databaseklassemetoder kan brukes eksklusivt for alle dataoperasjoner (i stedet for DML) |
| Plattform | Apex | ✅ I asynkrone og gruppekontekster brukes Database-klassemetoder i stedet for DML |
| Plattform | Aura | ✅ JavaScript pakker alle dataoperasjoner og viktige prosesstrinn i try-catch blokker |
| Plattform | Aura | ✅ Innenfor try-catch blokker brukes innebygd JavaScript Error i kastsetninger (ingen bruk av $A.error()) |
| Plattform | Aura | ✅ All gjenopprettingsfeillogikk vises i catch og gir tydelige brukermeldinger |
| Plattform | Flyt | ✅ Flyter med dataoperasjoner, oppkall og annen viktig behandlingslogikk har feilbaner for alle viktige handlinger |
| Plattform | Flyt | ✅ Skjermflyter bruker konsekvent feilkoblinger til å vise feil til brukere |
| Plattform | Flyt | ✅ Tilpassede feilmeldinger konfigureres for feil som vises på skjermen |
| Plattform | Lightning Web Components (LWC) | ✅ JavaScript avslutter alle dataoperasjoner og viktige prosesstrinn i if ()/else if () blokker |
| Plattform | Lightning Web Components (LWC) | ✅ Alle @wire-funksjoner bruker data og error-egenskaper fra APIen |
| Plattform | Lightning Web Components (LWC) | ✅ Alle if (error)/else if (error)-setninger inneholder logikk for å behandle feil og gi informative meldinger |
Lær mer om Well-Architected Easy → Automated → Data Integrity → Data Handling
| Hvor skal du se? Produktområde | Sted | Hva bør unngås? Anti-mønster |
|---|---|
| Data 360 | Organisasjon | ⚡️ Felt med støttede normaliserte samsvarsmetoder bruker tilnærmet samsvar Tilnærmet samsvar brukes på felt som tilbyr eksakte normaliserte samsvarsmetoder |
| Data 360 | Organisasjon | ⚡️ Forente persondata-ID antas å være uforanderlig Forente persondata-ID brukes som en overordnet ID eller global ID som skal brukes av resten av organisasjonen |
| Data 360 | Organisasjon | ⚡️ Hendelsesdato er tilordnet til en variabel DateTime-verdi Hendelsesdato er tilordnet til et variabel DateTime-felt, som LastUpdated eller LastExtracted |
| Data 360 | Organisasjon | ⚡️ Primærnøkkel tilordnes til et felt som ikke er unikt Velge et felt som primærnøkkel for datastrømmen hvis det ikke finnes noe i datasettet uten først å validere at det valgte feltet er unikt |
| Data 360 | Organisasjon | ⚡️ Laste inn data i batcher og deretter forsøke å aktivere dem i sanntid. En vanlig, men feilaktig løsning kan for eksempel innebære å laste inn data hver time fra en Amazon S3-samlekategori og deretter aktivere den via datahandlinger. |
| Plattform | Apex | ⚡️ DML-setninger vises regelmessig i kode som kalles opp i etter utløserkontekster |
| Plattform | Apex | ⚡️ Apex for batcher har en meget liten omfangsstørrelse. Meget små batchstørrelser (som omfangsstørrelse = 1) brukes |
| Plattform | Apex | ⚡️ Batch Apex brukes til eksterne oppkall Store mengder Salesforce-data overføres fra Salesforce til et eksternt system ved bruk av batch Apex |
| Plattform | Apex | ⚡️ Publiser umiddelbart Plattformhendelser brukes adhoc Publiser umiddelbart (sanntid) hendelser brukes i stedet for Publiser etter bekreftelse (ikke sanntid) uavhengig av publiseringskrav eller postlåserisiko. |
| Plattform | Apex | ⚡️ Asynkrone Apex brukes vilkårlig Fremtidige metoder og Købar Apex brukes inkonsistent eller byttbart |
| Plattform | Apex | ⚡️ Asynkrone Apex brukes vilkårlig. Det er ikke klart at utviklere vet når de skal bruke fremtidig kontra købar Apex, når de skal overlevere DML til gruppejobber |
| Plattform | Apex | ⚡️ Asynkron Apex brukes sjelden |
| Plattform | Apex | ⚡️ Asynkrone Apex brukes vilkårlig Databaseoperasjoner har ikke klar, konsistent logikk for overføring av utførelse til Apex når det er nødvendig |
| Plattform | Data Dictionary | ⚡️ Felttilordning fra datasjøobjekter til datamodellobjekter er ikke inkludert |
| Plattform | Data Dictionary | ⚡️ Feltnivådata og prioriteringslogikk for datakilder og datasjøobjekter inkluderes ikke |
| Plattform | Flyt | ⚡️ Utføre DML med en samling som er et utdata fra en skjermkomponent Bruke innstillingen "Bruk ID-ene og alle feltverdiene fra en post- eller postsamling" på et opprette-, oppdatere- eller sletteelement, når denne samlingen er et utdata fra en skjermkomponent |
| Plattform | Flyt | ⚡️ Postutløste flyter bruker ikke noen attributter for utløserbestilling eller bruker ikke utløserbestillingsverdier konsistent |
| Plattform | Flyt | ⚡️ Asynkrone baner brukes ikke konsistent eller i det hele tatt |
| Plattform | Flyt | ⚡️ Store, monolittiske flyter forsøker å koordinere komplekse sekvenser av relaterte dataoperasjoner (med eller uten underflyter) |
| Plattform | Organisasjon | ⚡️ Avstemmingsregler for Identitetsløsning følger ikke prioriteringslogikk i datadiagrammet |
Lær mer om Well-Architected Easy → Automated → Data Integrity → Feilbehandling
| Hvor skal du se? Produktområde | Sted | Hva bør unngås? Anti-mønster |
|---|---|
| Plattform | Apex | ⚡️ DML, SOQL, oppkall eller andre viktige prosesstrinn blir ikke konsekvent pakket inn i prøve-fangstblokker |
| Plattform | Apex | ⚡️ Ingen databaseklassemetoder brukes |
| Plattform | Apex | ⚡️ Dataoperasjoner utføres eksklusivt med DML |
| Plattform | Apex | ⚡️ System.debug vises i produksjonskode (og blir ikke kommentert) |
| Plattform | Aura | JavaScript pakker ikke dataoperasjoner og viktige prosesstrinn konsekvent inn i try-catch blokker |
| Plattform | Aura | ⚡️ Komponenter bruker $A.error() |
| Plattform | Aura | ⚡️ Gjenopprettbar feillogikk vises ikke konsekvent i catch, og feilmeldinger til brukere er ikke klare |
| Plattform | Flyt | ⚡️ Flyter bruker ikke feilbaner konsistent eller i det hele tatt |
| Plattform | Flyt | ⚡️ Tilpassede feilmeldinger brukes ikke, så brukere ser standardmeldingen "En ubehandlet feil har skjedd i denne flyten" |
| Plattform | Lightning Web Components (LWC) | ⚡️ @wire-funksjoner bruker ikke data og error-egenskaper fra API (eller bruker dem ikke konsekvent) |
| Plattform | Lightning Web Components (LWC) | ⚡️ Hvis det brukes, inneholder ikke if (error)/else if (error)-setninger logikk for å behandle feil og gi nyttige feilmeldinger |
| Plattform | Lightning Web Components (LWC) | JavaScript bruker ikke konsekvent if ()/else if () blokker med dataoperasjoner eller kritiske prosesstrinn |