MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Czy GridFS jest wystarczająco szybki i niezawodny do produkcji?

Używam gridfs w pracy na jednym z naszych serwerów, który jest częścią strony porównującej ceny z honorowymi statystykami ruchu (około 25 000 odwiedzających dziennie). Serwer nie ma dużo pamięci RAM, 2 gigigabajtów, a nawet procesor nie jest zbyt szybki (Core 2 duet 1,8 Ghz), ale serwer ma dużo miejsca do przechowywania:10 Tb (sata) w konfiguracji raid 0. Zadanie wykonywane przez serwer jest bardzo proste:

Każdy produkt w naszej porównywarce cenowej ma obraz (według naszej bazy danych produktów jest około 10 milionów produktów), a zadaniem serwerów jest pobranie obrazu, zmiana jego rozmiaru, zapisanie go w gridfs i dostarczenie go do przeglądarki odwiedzających. .. jeśli nie ma go w siatce... lub... dostarcz go do przeglądarki odwiedzających, jeśli jest już zapisany w siatce. Można to więc nazwać „tradycyjnym schematem CDN”.

Przechowaliśmy i przetworzyliśmy 4 miliony obrazów na tym serwerze od czasu jego uruchomienia. Zmiana rozmiaru i przechowywanie odbywa się za pomocą prostego skryptu php ... ale na pewno skrypt Pythona lub coś takiego jak java może być szybszy.

Aktualny rozmiar danych:11.23g

Aktualny rozmiar przechowywania:12,5 g

Indeksy:5

Rozmiar indeksu:849,65 m

O niezawodności:jest to bardzo niezawodne. Serwer się nie ładuje, rozmiar indeksu jest w porządku, zapytania są szybkie

O szybkości :Z pewnością nie jest tak szybka jak lokalna pamięć masowa, może o 10% wolniejsza, ale wystarczająco szybka, aby można było używać jej w czasie rzeczywistym, nawet gdy obraz wymaga przetworzenia, co w naszym przypadku jest bardzo zależne od php. Czas konserwacji i rozwoju również został skrócony:tak proste stało się usuwanie jednego lub wielu obrazów:wystarczy wysłać zapytanie do bazy danych za pomocą prostego polecenia usuwania. Kolejna ciekawa rzecz:kiedy zrestartowaliśmy nasz stary serwer, z lokalną pamięcią plików (tak milion plików w tysiącach folderów), czasami zawiesza się na wiele godzin, ponieważ system sprawdza integralność plików (to naprawdę zajęło wiele godzin...). Nie mamy już tego problemu z gridfs, nasze obrazy są teraz przechowywane w dużych porcjach mongodb (pliki 2gb)

Więc... myślę... Tak, Gridfs jest wystarczająco szybki i niezawodny, aby można go było używać do produkcji.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Agregat Mongodb (liczba) na wielu polach jednocześnie

  2. Dowiedz się, czy zapytanie używa indeksu w MongoDB

  3. Zapytanie z łańcuchowym formatem daty w mongodb

  4. Opcje konfiguracji środowiska wykonawczego ClusterControl

  5. Kolejność dokumentów zwrotnych Mongodb find