Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 16395|Svare: 0

[Kilde] Databaseskjema: Lese- og skriveseparasjon til CQRS

[Kopier lenke]
Publisert på 04.05.2020 09:58:50 | | | |
Lese-skrive-separasjon

Når en bedrifts virksomhet fortsetter å vokse og antallet brukere øker betydelig, vil den opprinnelige databasen sannsynligvis ikke kunne opprettholde seg selv. Da ja

  • Skalering, som øker maskinvarens ytelse, men det er sannsynlig at antallet brukere vil fortsette å vokse, og den økte ytelsen vil snart bli spist opp.
  • Lese-skrive-separasjon: Databasen kan ikke holde på seg, det er ikke annet enn for mye lese- og skriving, spesielt hvis det er noen komplekse spørringer som de mest populære produktene de siste 24 timene. Det krever svært komplekse SQL-setninger, og selvfølgelig er det tregt å kjøre.


For å skille lesing og skriving må databasen imidlertid deles opp i master- og slavebiblioteker.

De viktigste relasjonsdatabasene på markedet støtter datareplikering, så du kan dele en database i to roller: Master og Slave, skriveoperasjoner på masteren, og synkronisere masterserveren med andre slave-servere.

Offline-operasjoner som leseoperasjoner og dataanalyse utføres på Slave-serveren.

Vi vet at mange applikasjoner på Internett leses, slik at flere slaver kan dele belastningen og sikre tilgjengelighet og korrekthet av dataene.



Den tilsvarende opprinnelige applikasjonskoden må imidlertid også endres, og den må endres til å bruke hovedbiblioteket til å skrive data, og bruke slavebiblioteket når man leser data, noe som tilsvarer omskriving.

Komplekse spørringer

Men selv etter å ha skrevet om koden, fant jeg at ytelsen fortsatt ikke var betydelig forbedret fordi for mange komplekse spørringer ble brukt, og vi har sagt i databasekomponenten at joins er svært ytelseskrevende.

Så kan vi bruke en separat tabell for å lagre de populære produktene fra de siste 24 timene, slik at vi bare trenger å bruke enkel SQL for å gjøre det.

Med andre ord er et enkelt sett med databasetabeller uegnet for ulike atferder som rapporter, søk, transaksjoner osv.

Den nåværende tabellen er designet for å legge til og endre data, og er ikke egnet for komplekse spørringer.

Men vi må også vurdere hvordan denne spørringsbasen oppdateres, eller om vi kan tolerere denne forsinkelsen, om den kanskje ikke oppdateres i sanntid.

CQRS

Om forsinkelsen kan tolereres må sees fra et forretningsperspektiv, som de populære beste produktene de siste 24 timene, litt utdatert informasjon har ikke stor betydning, det kreves bare endelig konsistens.

Vi kan bruke CQRS (Command Query Responsibility Segregation), det vil si separasjon av kommandoer for å legge til eller endre kommandoer fra spørringsansvar.



I CQRS legges vekt på separasjonen mellom lesing (Spørring) og skriving (Kommando), fordi dataene som leses av brukere vanligvis er utdaterte, så hvorfor må du lese fra databasen, du kan direkte etablere en lesedatakilde. Det kan være Cache, det kan være XML, JSON, osv.

Hvordan løse problemet med hvordan man oppdaterer nevnt tidligere? Du kan bruke Event, altså en hendelse, for eksempel, når et produkt selges, kan du publisere en hendelse for å endre den opprinnelige Read-modellen.

På denne måten blir synkronisering asynkron gjennom hendelsesmekanismen.

Til slutt er denne metoden best å bruke kun for komplekse spørringer, og de opprinnelige enkle spørringene hentes fortsatt i relasjonsdatabasen. Hvorfor? Fordi introduksjonen av en ny teknologi krever en pris, som synkrone mutasjonstrinn og hendelsesmekanismer, kan vi ikke bare se fordelene med ny teknologi og ikke ulempene.






Foregående:Jining ny sanntids stordatakildekode for koronaviruset
Neste:Effekten av dll.refresh-filen når man refererer til prosjektklassebiblioteket
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com