Video: Scaling Databases - Web Development 2024
En felles funksjon i NoSQL-systemer er deres evne til å skalere seg over mange råvareservere. Disse relativt billige plattformene betyr at du kan skalere databaser ved å legge til en ny server i stedet for å erstatte gammel maskinvare med ny, kraftigere maskinvare i et enkelt skudd.
Det er høyvolumbrukstilfeller som raskt vil tvinge deg til å skalere. Disse inkluderer
-
Du mottar statusrapporter og loggmeldinger fra et IT-landskap. Dette scenariet krever rask inntastingstid, men det krever trolig ikke avansert analysestøtte.
-
Du vil ha hurtigbufring for komplekse søk. Kanskje du vil ha de siste nyhetene på et nettsted. Her leser caches høy prioritet over spørringer eller inntastingshastigheter.
Det eneste som er vanlig for utførelsen av alle NoSQL-databaser, er at du ikke kan stole på publiserte data - ingen av det - for å finne ut hva ytelsen sannsynligvis vil være på dataene dine, for din egen brukstilfelle.
Du kan absolutt ikke stole på en bestemt databaseleverandørs løfte om ytelse! Mange leverandører oppgir høy inntakshastighet mot en kunstig brukstilfelle som ikke er en realistisk bruk av databasen, som bevis på databasens overlegenhet.
Problemet er imidlertid at disse samme studiene helt kan overse spørringshastigheten. Hva er poenget med å lagre data hvis du aldri bruker det?
Disse studiene kan også gjøres på systemer der nøkkelfunksjoner er deaktivert. Sikkerhetsindekser er kanskje ikke aktivert, eller kanskje ACID-transaksjonsstøtte er slått av under studien, slik at dataene lagres raskt, men det er ingen garanti for at det er trygt.
Alt dette betyr at du må gjøre din egen test, som er lett nok, men vær sikker på at testen er så nær det siste systemet som mulig. For eksempel er det ikke noe poeng i å teste en enkelt server hvis du planlegger å skalere til 20 servere. Sørg spesielt for å ha en nøyaktig blanding av inntak, modifisering og spørring av data.
Vurder å spørre din NoSQL-leverandør disse spørsmålene:
-
Kan du sikre at alle størrelses- og ytelsesstallene sitert er for systemer som sikrer ACID-transaksjoner under inntak som støtter sanntidsindeksering, og som inkluderer en realistisk blanding av inntatt og lest / forespørsler om forespørsel?
-
Gir produktet ditt funksjoner som gjør det enkelt å øke serverens kapasitet?
-
Gir produktet ditt funksjoner som gjør det enkelt å fjerne ubrukt serverkapasitet?
-
Er produktets forespørselshastighet begrenset av mengden informasjon som må lagres i RAM?
-
Bruker produktet ditt en minnekortstrategi som krever at alle indeksene holdes i RAM for tilstrekkelig ytelse (minnekortet betyr at den maksimale mengden data lagret er den samme som mengden av fysisk RAM installert)?
-
Kan databasen opprettholde svaretid for andre sekunders spørring når du mottar høyfrekvente oppdateringer?
-
Sikrer systemet at det ikke kreves nedetid for å legge til eller fjerne serverkapasitet?
-
Sikrer systemet at informasjon er umiddelbart tilgjengelig for spørring etter at den er lagt til i databasen?
-
Sikrer systemet at sikkerheten til data opprettholdes uten å påvirke spørringshastigheten negativt?
-
Sikrer systemet at databasens skalaer og tilbakestillingsfunksjoner er skriptbare, og at de vil integreres med den valgte serverleveringsprogramvaren (for eksempel VMWare og Amazon Cloud Formation)?