sql >> Databáze >  >> NoSQL >> Redis

Jaký je nejúčinnější databázový stroj orientovaný na dokumenty pro ukládání tisíců středně velkých dokumentů?

Velmi záleží na konkrétním případu použití. Pokud chcete mít možnost dotazovat se na své dokumenty na něco jiného, ​​než je jejich ID, neměli byste volit Redis. S Redis byste museli implementovat své vlastní schéma indexování, a to je prostě zbytečné.

Ve skutečnosti existuje jen velmi málo případů, kdy by byl Redis lepší volbou pro to, co si myslím, že je váš případ použití (ne že by s Redisem bylo něco špatného, ​​často používám Redis i Mongo, ale pro různé věci). Zní mi to, jako byste měli objekty, které lze reprezentovat jako hash. Mongo i Redis mohou ukládat hashe, ale Mongo toho umí mnohem víc. S Mongo můžete hledat dokument na kterémkoli z jeho polí, můžete přidat index pro urychlení a pole ani nemusí být řetězec, může to být číslo, datum, seznam, dokonce i dokument (nebo seznam dokumentů) a všechny dokumenty se nemusí vejít do paměti RAM (ačkoli se to změní, až bude funkce úložiště disků Redis dokončena). Redis nic z toho nemá. Abyste mohli vyhledávat, museli byste indexy implementovat sami, nemůžete ukládat nic jiného než řetězce (což je někdy opravdu nepohodlné) a nemůžete ukládat nic jiného než ploché hashe (aniž byste se uchýlili k implementaci nebo použití nějakého druhu mapování vrstva jako Ohm).

Zmiňujete také rychlost. Redis je neuvěřitelně rychlý a Mongo také není špatné, nicméně pro váš případ použití může být použití Mongo rychlejší. Všimněte si, že říkám používám Mongo, ne že by Mongo samo o sobě bylo rychlejší. Jde o to, že pokud používáte Redis a přesto chcete mít možnost vyhledávat dokument pomocí pole, které není primárním klíčem, museli byste to, jak jsem zmínil výše, implementovat sami. Hledání by pak muselo vznést alespoň dva požadavky na Redis, jeden na vyhledání v indexu a jeden na získání dokumentu. Pokud je výsledkem vyhledávání více než jeden dokument, budete muset požádat o každý dokument samostatně. Režie všech těchto požadavků by pravděpodobně zhoršila používání Redis než Mongo. Podle mých zkušeností, cokoli jiného než nejjednodušší mezipaměť, fronta nebo podobné, vyžaduje více než jeden požadavek na Redis, aby získal vše, co potřebuje.

Takže s omezenými informacemi, které mám k dispozici, doporučuji MongoDB.



  1. Mezipaměť Azure Redis – časové limity pro volání GET

  2. nelze se připojit k kontejneru redis z kontejneru aplikace

  3. Jak provedu ekvivalent SQL Join v MongoDB?

  4. Jaké bezpečnostní mechanismy má Meteor?