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

Bazy danych NoSQL — dobrzy kandydaci do przetwarzania/agregacji logów i rollupów?

Różne rozwiązania NoSQL rozwiązują różne problemy do różnych zastosowań - więc najpierw najlepiej przyjrzyj się problemowi i rozwiąż go

  • Piszesz mocno do przechowywania, dlatego szybkość zapisu jest dla Ciebie ważna
  • Chcesz wykonać operacje agregacji na tych danych i uzyskać wyniki, które można łatwo przeszukiwać
  • Szybkość odczytu nie jest tak ważna z dźwięku rzeczy, przynajmniej nie w stylu „aplikacja internetowa musi być naprawdę responsywna dla milionów ludzi”
  • Nie wiem, czy potrzebujesz dynamicznych zapytań, czy nie

Spójrzmy na Couch, Mongo i Raven w bardzo uogólniony sposób

Kruk

  • Szybkie zapisy
  • Szybkie zapytania (ewentualnie spójne, wstępnie obliczone, agregacja za pomocą mapy/redukcji)
  • Dynamiczne zapytania są możliwe, ale nie są tak naprawdę odpowiednie dla twojego przypadku użycia, ponieważ najprawdopodobniej będziesz wysyłać zapytania według daty itp.

Mongo

  • Oślepiająco szybko pisze (moim zdaniem niebezpiecznie, bo wyłączenie zasilania oznacza utratę danych;-))
  • Wolne odczyty (względnie), agregacja za pomocą mapy/redukcja, nie obliczone wstępnie
  • Kwerendy dynamiczne to po prostu to, co robisz, ale prawdopodobnie musisz zdefiniować indeksy w swoich kolumnach, jeśli chcesz uzyskać jakąkolwiek wydajność na tego rodzaju danych

Kanapa

  • Szybkie zapisy
  • Szybkie odczyty (wstępnie obliczone, ale aktualizowane tylko podczas czytania (IIRC)
  • Dynamiczne zapytania nie są możliwe, wszystkie wstępnie zdefiniowane za pomocą mapy lub funkcji map/redukcja

Tak więc, w zasadzie - czy potrzebujesz dynamicznych zapytań dotyczących tego rodzaju danych? Czy szybkość odczytu jest dla Ciebie niezwykle ważna? Jeśli potrzebujesz dynamicznych zapytań, będziesz potrzebować Raven lub Mongo (dla tego rodzaju rzeczy Couch i tak prawdopodobnie nie jest tym, czego szukasz).

FWIW, moim zdaniem jedynym przypadkiem użycia Mongo jest logowanie, więc możesz mieć tam odpowiedź.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak obsłużyć przecięcie tablicy w find({})?

  2. Co się stanie, gdy połączenia z MongoDB nie zostaną zamknięte?

  3. Ignorowanie właściwości wewnątrz właściwości złożonej za pomocą BsonIgnore

  4. Jak posortować tablicę w rekordzie kolekcji w MongoDB?

  5. Wsparcie geoprzestrzenne w MongoDB