close

Amazon Simple DB

Gå til navigation Gå til søg
Image
SimpleDB-logo

Amazon SimpleDB er en distribueret database skrevet i Erlang [ 1 ] af Amazon.com . Den bruges som en webservice i forbindelse med Amazon Elastic Compute Cloud (EC2) og Amazon S3 og er en del af Amazon Web Services . Det blev annonceret den 13. december 2007.

Ligesom EC2 og S3 opkræver Amazon gebyrer for SimpleDBs lagring, overførsel og ydeevne over internettet. Den 1. december 2008 introducerede Amazon en ny pris for den gratis sektion for 1 GB data og 25 maskintimer. Overførsel til andre Amazon Web Service-tjenester er gratis.

Begrænsninger

SimpleDB giver eventuel konsistens , hvilket er en svagere form for konsistens sammenlignet med andre databasestyringssystemer . Dette betragtes ofte som en begrænsning, fordi det er sværere at ræsonnere med, hvilket gør det svært at skrive korrekte programmer, der bruger SimpleDB. Denne begrænsning er resultatet af en grundlæggende designafvejning. Ved forudgående konsistens kan systemet opnå to andre yderst ønskelige egenskaber:

  1. Tilgængelighed: Systemkomponenter kan fejle, men tjenesten vil fortsætte med at fungere korrekt.
  2. Partitionstolerance: Systemkomponenter er forbundet med hinanden ved hjælp af et computernetværk . Hvis komponenterne ikke kan kommunikere med hinanden over netværket (en tilstand kendt som netværkspartitionering ), vil systemdriften fortsætte.

Komponentfejl antages at være uundgåelige; derfor blev begge funktioner anset for nødvendige for at levere en pålidelig webservice . CAP-sætningen siger , at det ikke er muligt for et system at udvise disse egenskaber sammen med konsistens; derfor måtte designerne nøjes med en svagere form for konsistens.

Indsendte begrænsninger:

Butiksbegrænsninger

Attribut Maksimum
domæner 250 aktive domæner pr. konto. Mere kan rekvireres ved at udfylde en formular.
størrelsen på hvert domæne 10 GB
attributter pr. domæne 1.000.000.000
egenskaber pr 256 egenskaber
størrelse pr. egenskab 1024 bytes

Forespørgselsbegrænsninger

Attribut Maksimum
varer returneret i et forespørgselssvar 2500 varer
sekunder kan en forespørgsel køre 5 sekunder
attributnavne pr. forespørgselsprædikat 1 attributnavn
sammenligninger efter prædikat 22 operatører
prædikater efter forespørgselsudtryk 20 prædikater

Funktioner

Betinget put og betinget sletning er nye operationer, der blev tilføjet i februar 2010. De løser et problem, når man får adgang til SimpleDB på samme tid. Overvej et simpelt program, der bruger SimpleDB til at gemme en tæller, det vil sige et tal, der kan øges. Programmet skal gøre tre ting:

  1. Hent den aktuelle værdi af SimpleDB-tælleren.
  2. Tilføj en til værdien.
  3. Gem den nye værdi på samme sted som den gamle værdi i SimpleDB.

Hvis dette program køres, mens ingen andre programmer har adgang til SimpleDB, vil det fungere fint; dog er det ofte ønskeligt for softwareapplikationer (især webapplikationer ) at få adgang til de samme data på samme tid. Når de samme data tilgås på samme tid, opstår der en racetilstand , som ville resultere i uopdagelige datatab.

Fortsæt med det foregående eksempel, overvej to processer, A og B, der udfører det samme program. Antag, at SimpleDB-tjenester dataanmodninger, som beskrevet i trin 1, fra A og B. A og B ser den samme værdi. Lad os sige, at den aktuelle værdi af tælleren er 0. På grund af trin 2 og 3 vil A forsøge at gemme 1. B vil forsøge at gøre det samme; derfor vil den endelige værdi af tælleren være 1, selvom den forventede slutværdi af tælleren er 2, fordi systemet forsøgte to inkrementer operationer, en for A og en af ​​B.

Dette problem kan løses ved at bruge betinget put. Antag, at vi ændrer trin 3 som følger: i stedet for ubetinget at gemme den nye værdi, beder programmet SimpleDB om kun at gemme den nye værdi, hvis den værdi, den aktuelt indeholder, er den samme som værdien hentet i trin 1. Så vi kan være sikre på, at værdien af ​​tælleren stiger faktisk. Dette introducerer en vis yderligere kompleksitet; Hvis SimpleDB ikke var i stand til at gemme den nye værdi, fordi den aktuelle værdi ikke var, hvad der var forventet, skal programmet gentage trin 1 til 3, indtil den betingede put-operation faktisk ændrer den lagrede værdi.

Konsekvent læsning

Konsistent læsning var en ny funktion, der blev frigivet samtidig med betinget placering og betinget fjernelse. Som navnet antyder, adresserer konsistent læsning problemer, der opstår på grund af SimpleDBs eventuelle konsistensmodel. Overvej følgende rækkefølge af operationer:

  1. Program A gemmer nogle data i SimpleDB.
  2. Umiddelbart derefter anmoder A om de data, den lige har gemt.

SimpleDB's eventuelle konsistensgaranti tillader os ikke at sige, at de data, der hentes i trin 2, afspejler de opdateringer, der blev foretaget i trin 1. Eventuel konsistens garanterer kun, at trin 2 afspejler det fulde sæt af opdateringer fra trin 1, eller ingen af ​​disse opdateringer. Konsekvent læsning kan bruges til at sikre, at de data, der hentes i trin 2, afspejler ændringerne i trin 1.

Grunden til, at du muligvis får inkonsistente resultater, når du ikke bruger den konsistente læseoperation, er, at SimpleDB gemmer data på flere steder (for tilgængelighed), og de nye data fra trin 1 bliver muligvis ikke skrevet til alle lokationer, når SimpleDB modtager dataanmodningen i trin 2. I så fald er det muligt, at dataanmodningen i trin 2 vil blive serveret på et af de steder, hvor de nye data ikke er blevet skrevet.

Amazon fraråder brugen af ​​konsekvent læsning, medmindre det er påkrævet for afhjælpning. Årsagen til denne anbefaling er, at den hastighed, hvormed konsistente læseoperationer udføres, er langsommere end normale aflæsninger.

Forholdet til DynamoDB

Der har været tale om at erstatte SimpleDB med DynamoDB (det er ikke længere "itereret", selvom Amazon ikke planlægger at fjerne det). DynamoDB ser ud til at være dens efterfølger. [ 2 ]

Se også

Referencer

  1. Hvad du behøver at vide om Amazon SimpleDB
  2. "Amazon DynamoDB – en hurtig og skalerbar NoSQL-databasetjeneste designet til internetskalaapplikationer - alle ting distribueret" . www.allthingsdistributed.com . 18. januar 2012.