Prosta baza danych Amazon
Amazon SimpleDB to rozproszona baza danych napisana w języku Erlang [ 1 ] przez Amazon.com . Jest używany jako usługa internetowa w połączeniu z Amazon Elastic Compute Cloud (EC2) i Amazon S3 i jest częścią Amazon Web Services . Został ogłoszony 13 grudnia 2007 r.
Podobnie jak EC2 i S3, Amazon pobiera opłaty za przechowywanie, przesyłanie i wydajność SimpleDB przez Internet. 1 grudnia 2008 r. Amazon wprowadził nową cenę za darmową sekcję za 1 GB danych i 25 godzin pracy maszyny. Transfer do innych usług Amazon Web Service jest bezpłatny.
Ograniczenia
SimpleDB zapewnia spójność ostateczną , która jest słabszą formą spójności w porównaniu z innymi systemami zarządzania bazami danych . Jest to często uważane za ograniczenie, ponieważ jest to trudniejsze do zrozumienia, co utrudnia pisanie poprawnych programów korzystających z SimpleDB. To ograniczenie jest wynikiem fundamentalnego kompromisu projektowego. Dzięki rezygnacji z spójności system może osiągnąć dwie inne wysoce pożądane cechy:
- Dostępność: składniki systemu mogą ulec awarii, ale usługa będzie nadal działać poprawnie.
- Tolerancja partycji: Komponenty systemu są ze sobą połączone za pomocą sieci komputerowej . Jeśli komponenty nie mogą komunikować się ze sobą przez sieć (stan znany jako partycjonowanie sieci ), działanie systemu będzie kontynuowane.
Zakłada się, że awarie komponentów są nieuniknione; dlatego obie funkcje uznano za niezbędne do zapewnienia niezawodnej usługi internetowej . Twierdzenie CAP stwierdza, że nie jest możliwe, aby system wykazywał te właściwości wraz ze spójnością; dlatego projektanci musieli zadowolić się słabszą formą spójności.
Opublikowane ograniczenia:
Ograniczenia sklepu
| Atrybut | Maksymalny |
|---|---|
| domeny | 250 aktywnych domen na konto. Więcej można uzyskać, wypełniając formularz. |
| rozmiar każdej domeny | 10 GB |
| atrybuty na domenę | 1 000 000 000 |
| atrybuty na przedmiot | 256 atrybutów |
| rozmiar na atrybut | 1024 bajty |
Ograniczenia zapytań
| Atrybut | Maksymalny |
|---|---|
| elementy zwrócone w odpowiedzi na zapytanie | 2500 pozycji |
| sekund, kiedy zapytanie może zostać uruchomione | 5 sekund |
| nazwy atrybutów na predykat zapytania | 1 nazwa atrybutu |
| porównania według predykatu | 22 operatorów |
| predykaty według wyrażenia zapytania | 20 predykatów |
Funkcje
Warunkowe umieszczanie i warunkowe usuwanie to nowe operacje dodane w lutym 2010 r. Rozwiązują one problem podczas jednoczesnego uzyskiwania dostępu do SimpleDB. Rozważ prosty program, który używa SimpleDB do przechowywania licznika, czyli liczby, którą można zwiększyć. Program musi robić trzy rzeczy:
- Pobierz bieżącą wartość licznika SimpleDB.
- Dodaj jeden do wartości.
- Przechowuj nową wartość w tym samym miejscu, co stara wartość w SimpleDB.
Jeśli ten program zostanie uruchomiony, gdy żadne inne programy nie mają dostępu do SimpleDB, będzie działać poprawnie; jednak często pożądane jest, aby aplikacje (zwłaszcza aplikacje internetowe ) miały dostęp do tych samych danych w tym samym czasie. Gdy w tym samym czasie uzyskuje się dostęp do tych samych danych, dochodzi do sytuacji wyścigu , która może spowodować niewykrywalną utratę danych.
Kontynuując poprzedni przykład, rozważmy dwa procesy, A i B, wykonujące ten sam program. Załóżmy, że SimpleDB obsługuje żądania danych, jak opisano w kroku 1, od A i B. A i B widzą tę samą wartość. Załóżmy, że bieżąca wartość licznika wynosi 0. Z powodu kroków 2 i 3 A spróbuje zapisać 1. B spróbuje zrobić to samo; w związku z tym ostateczna wartość licznika będzie wynosić 1, mimo że oczekiwana końcowa wartość licznika wynosi 2, ponieważ system próbował wykonać dwie operacje inkrementacyjne, jedną przez A i jedną przez B.
Ten problem można rozwiązać za pomocą warunkowego umieszczenia. Załóżmy, że zmieniamy krok 3 w następujący sposób: zamiast bezwarunkowego zapisywania nowej wartości, program prosi SimpleDB o zapisanie nowej wartości tylko wtedy, gdy wartość, którą aktualnie zawiera jest taka sama, jak wartość pobrana w kroku 1. Możemy więc być pewni, że wartość licznika faktycznie wzrasta. Wprowadza to dodatkową złożoność; Jeśli SimpleDB nie może zapisać nowej wartości, ponieważ bieżąca wartość nie była taka, jak oczekiwano, program musi powtarzać kroki od 1 do 3, aż operacja warunkowego umieszczenia faktycznie zmieni przechowywaną wartość.
Konsekwentne czytanie
Spójne czytanie to nowa funkcja, która została wydana w tym samym czasie, co warunkowe umieszczanie i warunkowe usuwanie. Jak sama nazwa wskazuje, spójne czytanie rozwiązuje problemy, które pojawiają się w wyniku ostatecznego modelu spójności SimpleDB. Rozważ następującą sekwencję operacji:
- Program A przechowuje pewne dane w SimpleDB.
- Zaraz potem A żąda danych, które właśnie zachował.
Ostateczna gwarancja spójności SimpleDB nie pozwala nam powiedzieć, że dane pobrane w kroku 2 odzwierciedlają aktualizacje, które zostały wykonane w kroku 1. Ostateczna spójność gwarantuje tylko, że krok 2 odzwierciedla pełny zestaw aktualizacji z kroku 1 lub żadną z tych aktualizacji. Spójny odczyt może służyć do zapewnienia, że dane pobrane w kroku 2 odzwierciedlają zmiany w kroku 1.
Powodem, dla którego możesz uzyskać niespójne wyniki, gdy nie używasz spójnej operacji odczytu, jest to, że SimpleDB przechowuje dane w wielu lokalizacjach (dla dostępności), a nowe dane z kroku 1 mogą nie zostać zapisane we wszystkich lokalizacjach, gdy SimpleDB otrzyma żądanie danych w kroku 2. W takim przypadku możliwe jest, że żądanie danych w kroku 2 zostanie doręczone w jednej z lokalizacji, w której nowe dane nie zostały zapisane.
Amazon odradza stosowanie konsekwentnego czytania, chyba że jest to wymagane do naprawy. Powodem tego zalecenia jest to, że szybkość obsługi spójnych operacji odczytu jest mniejsza niż normalnych odczytów.
Związek z DynamoDB
Mówi się o zastąpieniu SimpleDB przez DynamoDB (nie jest już "iterowana", chociaż Amazon nie planuje jej usunąć). Jego następcą wydaje się być DynamoDB. [ 2 ]
Zobacz także
Referencje
- ↑ Co musisz wiedzieć o Amazon SimpleDB
- ↑ „Amazon DynamoDB – szybka i skalowalna usługa bazy danych NoSQL zaprojektowana dla aplikacji na skalę internetową – wszystko jest rozproszone” . www.wszystkodystrybuowane.com . 18 stycznia 2012 r.