På denne side
Forestil dig en supportskærm, der behøver ét svar: Er denne ordre betalt? Betalingssystemet har svaret. Et integrationsteam foreslår at kopiere alle betalingsposter til en anden database, holde kopien opdateret og læse den, når agenten åbner ordren. Det er et tænkt eksempel fra driften, ikke den analytiske anvendelse i den citerede demonstration.
Det kan være nødvendigt. Spørg først, om skærmen blot behøver ét svar, den må få, lige nu.
En teknisk demonstration af analytiske forespørgsler på tværs af clouds viser en forespørgsel på eksisterende datakilder uden først at lave en permanent kopi af kildetabellen i destinationen. Samme demo gemmer en tabel dannet ved at sammenkoble data og viser dermed, at fjernadgang og kopiering kan eksistere i den samme arbejdsgang. Det er en virkelig produktfunktion, ikke et løfte om, at en analytisk forespørgselstjeneste passer til en driftsmæssig skærm for betalingsstatus, eller at data aldrig flyttes under udførelsen. Google Clouds dokumentation om fødererede forespørgsler forklarer, at nogle resultater fra eksterne forespørgsler midlertidigt flyttes ind i forespørgselstjenesten. Den vigtige forskel er mellem en permanent synkroniseret kopi og en afgrænset læsning til et bestemt spørgsmål.
Vælg ud fra det modtagende systems opgave
Der gemmer sig to forskellige ønsker i »forbind systemerne«. Det ene spørger: »Hvad siger kilden nu?« Det andet: »Hvilken tilstand skal destinationen have for at kunne handle senere?«
På supportskærmen kan en afgrænset læsning returnere ordrestatus og tidspunktet, den blev set. Kilden er fortsat autoritativ. Hvis kilden er nede, bør skærmen sige, at den aktuelle status ikke kan hentes, eller tydeligt mærke et gemt svar. En anden kopi giver et nyt spørgsmål: Hvilken status gælder, når de to er uenige?
Et modtagende system beder kilden om ét aktuelt svar gennem en forespørgsel med begrænset adgang; den kan behandle midlertidige data uden at lave en varig kopi.
I en kampagne for forladte kurve kan destinationen skulle handle, uden at nogen åbner en skærm. Den kan behøve en hurtig hændelse, samtykkestatus og en måde at annullere en planlagt besked efter køb. En direkte læsning på kampagnetidspunktet kan stadig hjælpe, men et svar på forespørgsel er ikke hele opgaven.
| Det modtagende system behøver | Første design at teste | Vigtigste afvejning |
|---|---|---|
| Ét aktuelt svar | Afgrænset forespørgsel til ejeren | Afhænger af adgang og svartid hos kilden |
| Løbende handling ved ændring | Hændelse eller minimal synkronisering af ændringer | Skal håndtere forsinkelse, dubletter og mistede hændelser |
| Historisk bevis for beslutning | Versionsstyret øjebliksbillede af relevante felter | Kræver styring af opbevaring og adgang |
| Drift under nedbrud hos kilden | Tydelig cache eller kopi | Kan være forældet; kræver en regel for alder |
Det er en beslutningstabel, ikke en ydelsesmåling. Der findes ingen universel grænse mellem forespørgsel og kopi i den.
En kopi har en vedvarende pris
Den første udtrækning er let at undervurdere, fordi den slutter. Kopien lever videre. Et nyt felt opstår, et id flettes sammen med et andet, en tilladelse ændres, eller en gammel hændelse ankommer efter en ny. Så kan destinationen have et svar, som kilden ville afvise.
Prisen er ikke kun lagerplads. Den er afstemning: at holde øje med forsinkelse, afspille mistede ændringer igen, slette data når det kræves og forklare, hvorfor en beslutning brugte gårsdagens værdi. Opgaverne er berettigede, når destinationen behøver selvstændig tilstand. De er unødigt ekstraarbejde, hvis det eneste ønskede resultat er et aktuelt svar.
En forespørgsel koster også noget. Den kan belaste kilden, vise felter til en anden adgangsidentitet, krydse en netværksgrænse og fejle på det værst tænkelige tidspunkt. Planlægningen af forespørgslen kan behandle flere data, end det synlige resultat antyder. Dokumentationen om føderering beskriver detaljer, der bør kontrolleres, før fjernforespørgsel regnes for nul dataflytning.
Den sikre forespørgsel har et snævert formål og et snævert resultat. Nævn feltets ejer. Begræns adgangen for den bruger eller tjeneste, der kalder. Beslut, hvor gammelt et svar må være, hvor længe forespørgslen må vente, og hvad skærmen siger, når svartidsgrænsen overskrides. Behold observationstidspunktet sammen med svaret.
Hvornår en kontrolleret kopi er prisen værd
»Lokale data giver os en forudsigelig grænseflade og færre fejl fra fjernsystemet.« Det er et alvorligt argument. Hvis arbejdsgangen har et stramt krav til svartid eller skal fortsætte under nedbrud hos kilden, kan en kontrolleret kopi være det rigtige design.
Det afgørende ord er kontrolleret. Definer, hvilke felter der kopieres, hvor hurtigt de skal opdateres, hvad der sker, når opdateringer stopper, og hvornår det modtagende system nægter at handle på forældet tilstand. Test en sen rettelse og normalforløbet. Et hurtigt, men forældet svar kan være værre end et synligt utilgængeligt svar.
Begynd med det mindste spørgsmål, det modtagende system stiller. Hvis en læsning løser det, så lad kilden bestemme. Hvis en handling kræver lokal tilstand, så kopiér kun det, handlingen kan begrunde.
Et lille forsøg kan afgøre valget uden at bygge en generel kopi-mekanisme. Vælg ét spørgsmål, som systemet faktisk stiller, registrer hvor aktuelt svaret skal være, og kør en forespørgsel med tilladelse mod kilden. Se på svartid, belastning af kilden og fejl med realistiske adgangskontroller. Prøv så den smalleste kopierede tilstand, der kan opfylde samme behov. Sammenlign ikke kun svartid, men også rettelser, sletning og nedbrud. Guiden til integrationsplanlægning giver den bredere sammenhæng; forsøget vælger, hvor svaret skal bo. Ingen af vejene er automatisk billigst, når løbende vedligeholdelse tælles med.
En forbindelse måles ikke på, hvor mange rækker der krydsede den.
Ofte Stillede Spørgsmål
Hvornår er en fjernforespørgsel bedre end synkronisering?
Brug den, når en bruger eller tjeneste behøver et svar fra den autoritative kilde og kan leve med kildens tilgængelighed og svartid. Hold adgangen afgrænset, og vis, hvornår svaret blev læst.
Hvornår skal data kopieres?
Kopiér kun den nødvendige tilstand, når et andet system skal handle uden et direkte opslag i kilden, gemme et kontrollerbart øjebliksbillede eller opfylde krav om hastighed eller tilgængelighed, som kilden ikke kan klare.
Betyder en forespørgsel hos kilden, at data aldrig flyttes?
Nej. En tjeneste, der samler forespørgsler, kan flytte mellemresultater eller slutresultater under udførelsen. Kontrollér leverandørens dokumentation om udførelse, opbevaring og sikkerhed.