sql >> Databáze >  >> NoSQL >> MongoDB

MongoDB + Elasticsearch nebo pouze Elasticsearch?

Hovoříme o argumentech, které použít Mongo místo/společně s ES:

  1. Správa uživatelů/rolí.

    • Vestavěno v MongoDB. Nemusí vyhovovat všem vašim potřebám, může být někde neohrabaný, ale existuje a byl implementován již před dlouhou dobou.
    • Jediná věc pro zabezpečení v ES je shield . Dodává se však pouze pro zlaté/platinové předplatné pro produkční použití.
  2. Schéma

    • ES je bez schématu, ale je postaven na Lucene a napsáno v Java . Základní myšlenkou tohoto nástroje je indexovat a vyhledávat dokumenty a práce tímto způsobem vyžaduje konzistenci indexů. Na zadní straně by měly být všechny dokumenty umístěny v plochém lucene index, což vyžaduje určité pochopení toho, jak by měl ES nakládat s vašimi vnořenými dokumenty a hodnotami a jak byste měli své indexy organizovat, abyste udrželi rovnováhu mezi rychlostí a úplností/konzistencí dat. Práce s ES vyžaduje, abyste měli neustále na paměti některé věci týkající se schématu. T.j.:protože můžete indexovat téměř cokoliv do ES, aniž byste předem zadali odpovídající mapování, ES může „uhodnout“ mapování za běhu, ale někdy to udělá špatně a někdy je implicitní mapování špatné, protože jakmile to jednou vložíte, nelze to změnit w /o přeindexování celého indexu. Takže je lepší nepovažovat ES za obchod bez schématu, protože můžete chvíli šlápnout na hrábě (a to bude bolest :) ), ale spíše to považujte za náročné na schéma, alespoň když pracujete s dokumenty, které lze rozdělit na konkrétní pole.
    • Mongo na druhou stranu dokáže „žvýkat a nenechat žádné drobky“ téměř ze všeho, co do něj vložíte. A většina vašich dotazů bude fungovat dobře, dokud si nevzpomenete, jak bude Mongo nakládat s vašimi daty z pohledu JavaScriptu. A jelikož je JS slabě napsaný, můžete pracovat s pracovním postupem bez schémat (určitě, pokud takové potřebujete)
  3. Zpracování dat, která nejsou podobná tabulkám.

    • ES je omezen na zpracování dat, aniž by je vkládal do vyhledávacího indexu. A toto řešení je dost dobré, když potřebujete uložit a načíst nějaká další data (ve srovnání s daty, podle kterých chcete vyhledávat).
    • MongoDB podporuje gridFS . To vám dává možnost zpracovávat velké kusy dat za stejným rozhraním. To znamená, že můžete ukládat binární data v Mongo a načítat je ve stejném rozhraní z pohledu vašeho kódu.


  1. pomocí klíče jako hodnoty v Mongoengine

  2. Meteor:neočekávaný výstupní kód mongo null. Restartování. co to je?

  3. Vrátí konkrétní pole z kolekce objektů

  4. Klonovat databázi v Mongodb mezi hostiteli pomocí ovladače uzlu