Obecnie uruchamiam moją witrynę na jednym serwerze z MongoDB. Na moim serwerze mam dwa komponenty (1) przeszukiwacz, który działa co godzinę i dołącza dane do mojej instancji MongoDB (2) strony internetowej, która czyta z indeksu przeszukiwacza, a także zapisuje do DB personalizacji użytkownika. Przechodzę do Amazon EC2 w celu automatycznego skalowania, dzięki czemu serwer internetowy może automatycznie skalować, dzięki czemu mogę zwiększyć liczbę serwerów w miarę wzrostu ruchu w sieci. Nie potrzebuję automatycznego skalowania dla mojego robota. Stanowi to wyzwanie dla sposobu korzystania z MongoDB. Zastanawiam się, co moim najlepszym rozwiązaniem jest optymalizacja naSkalowanie MongoDB na EC2 czy powinienem po prostu przełączyć się na DynamoDB?
- minimalne zmiany do mojego kodu (kod jest w Perlu)
- możliwość łatwego dodawania/usuwania web-serwerów bez obaw o utratę danych w DB
- niski koszt
w krótkiej perspektywie, DB na pewno będzie w stanie zmieścić się w pamięci na wszystkich machies ponieważ będzie poniżej 2 GB. Nie można przebudować DB personalizacji użytkownika, więc ważniejsze jest to, a indeks można z łatwością odbudować. Obecny indeks indeksowania MongoDB ma około 100 000 wpisów, które są wpisane w ~ 15 różnych kolumnach. Jest to budowane z myślą o szybkości, ponieważ pracuję nad witryną randkową online (którą można przeszukiwać na wiele sposobów).
mogę wymyślić kilka opcji
- Zastosowanie SimpleDB do sklepu personalizacji użytkownika i MongoDB dla indeksu. Czy indeks jest replikowany na wszystkich komputerach, jednak nie wiem zbyt wiele o replikacji MongoDB.
- Przenieś wszystko do SimpleDB
- Przenieś wszystko do DynamoDB
nie wiem zbyt wiele o SimpleDB i/lub DynamoDB. Opierając się na artykułach wydaje się, że DynamoDB byłby naturalnym wyborem, ale nie jestem pewien co do dobrego wsparcia perl, czy mogę mieć wszystkie kolumny, indeks, itp. Ktoś ma doświadczenie lub jakąś radę?
Dzięki Joe! Jest to bardzo wnikliwe. Aby wyjaśnić, czy dane Mongo są rozproszone na 3 komputerach lub czy są one replikowane na 3 komputerach? To bardzo dobry pomysł na oddzielenie skalowania moich serwerów sieciowych od skalowania Mongo. Czy występują jakieś przestoje podczas skalowania serwerów Mongo? Czy masz jakieś wskazówki/linki na temat dobrych sposobów na skalowanie Mongo, kiedy potrzebujesz większej pojemności? – ZenoriInc
Używamy 3 oddzielnych maszyn z zestawem replik, jednym wzorcem, dwiema replikami. Jest to głównie dla automatycznego przełączania awaryjnego, więc jeśli nasz mistrz zginie, jedna z replik zostanie awansowana na mistrza. Dane w poszczególnych danych repliki są takie same. – Joe
Jeśli chodzi o skalowanie danych, możesz użyć tzw. Shardingu. Tutaj dzielisz dane z jednej lub więcej kolekcji w wielu instancjach Mongo. Pozwala to na skalowanie w poziomie. Twoje dane są rozproszone na wielu fizycznych maszynach, a proxy informuje Mongo, dokąd się udać w oparciu o klucz odłamkowy. Skonfigurowaliśmy infrastrukturę, aby upewnić się, że wszystko działa, ale obecnie nie ma wystarczającej ilości danych, aby uzasadnić korzystanie z niej, gdy tylko uruchomimy te instancje. – Joe