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

MongoDB + Elasticsearch czy tylko Elasticsearch?

Mówiąc o argumentach do użycia Mongo zamiast/razem z ES:

  1. Zarządzanie użytkownikami/rolami.

    • Wbudowany w MongoDB. Może nie pasować do wszystkich Twoich potrzeb, może być gdzieś niezgrabny, ale istnieje i został zaimplementowany dość dawno temu.
    • Jedyną rzeczą dla bezpieczeństwa w ES jest shield . Ale jest dostarczany tylko w ramach subskrypcji Gold/Platinum do użytku produkcyjnego.
  2. Schemat

    • ES jest bez schematu, ale jest zbudowany na bazie Lucene i napisane w Java . Główna idea tego narzędzia - indeksuj i przeszukuj dokumenty, a praca w ten sposób wymaga spójności indeksów. Z tyłu wszystkie dokumenty powinny być zmieszczone w płaskiej lucene indeks, który wymaga zrozumienia, w jaki sposób ES powinien postępować z zagnieżdżonymi dokumentami i wartościami oraz jak należy organizować indeksy, aby zachować równowagę między szybkością a kompletnością/spójnością danych. Praca z ES wymaga ciągłego pamiętania o pewnych kwestiach dotyczących schematu. Np. ponieważ możesz indeksować prawie wszystko do ES bez wcześniejszego umieszczania odpowiedniego mapowania, ES może "zgadywać" mapowanie w locie, ale czasami robi to źle, a czasami niejawne mapowanie jest złe, ponieważ raz wstawione, nie można go zmienić w /o ponowne indeksowanie całego indeksu. Lepiej więc nie traktować ES jako sklepu bez schematu, bo na prowizję można nadepnąć jakiś czas (a to będzie ból :) ), ale raczej traktuj to jako intensywne w schemacie, przynajmniej gdy pracujesz z dokumentami, które można przyciąć do konkretnych pól.
    • Z drugiej strony Mongo może „żuć i nie zostawiać okruszków” z prawie wszystkiego, co do niego włożysz. I większość twoich zapytań będzie działać dobrze, dopóki nie przypomnisz sobie, jak Mongo poradzi sobie z twoimi danymi z perspektywy JavaScript. A ponieważ JS jest słabo napisany, możesz pracować z naprawdę nieschematycznym przepływem pracy (na pewno, jeśli tego potrzebujesz)
  3. Obsługa danych innych niż tabelaryczne.

    • ES ogranicza się do obsługi danych bez umieszczania ich w indeksie wyszukiwania. A to rozwiązanie jest wystarczająco dobre, gdy musisz przechowywać i pobierać dodatkowe dane (w porównaniu z danymi, które chcesz przeszukać).
    • MongoDB obsługuje gridFS . Daje to możliwość obsługi dużych porcji danych za tym samym interfejsem. Oznacza to, że możesz przechowywać dane binarne w Mongo i pobierać je w tym samym interfejsie, z perspektywy Twojego kodu.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak utworzyć kanał plików od osób, które obserwuje użytkownik?

  2. Czy w MongoDB jest coś innego do $cond podczas agregacji?

  3. otrzymuję następujący błąd podczas łączenia się z serwerem mongodb

  4. MongoDB C# driver 2.0 InsertManyAsync vs BulkWriteAsync

  5. Nie można połączyć się z mongo na zdalnym serwerze