sql >> Databasteknik >  >> NoSQL >> Redis

Vilken är den mest effektiva dokumentorienterade databasmotorn för att lagra tusentals medelstora dokument?

Det beror väldigt mycket på det specifika användningsfallet. Om du vill kunna fråga dina dokument på något annat än deras ID ska du inte välja Redis. Med Redis skulle du behöva implementera ditt eget indexeringsschema, och det är bara onödigt.

Det finns faktiskt väldigt få fall där Redis skulle vara ett bättre alternativ för vad jag tror att ditt användningsfall är (inte för att det är något fel på Redis, jag använder ofta både Redis och Mongo, men för olika saker). Det låter för mig som att du har objekt som kan representeras som hash. Både Mongo och Redis kan lagra hash, men Mongo kan mycket mer. Med Mongo kan du söka efter ett dokument på vilket som helst av dess fält, du kan lägga till ett index för att snabba upp det, och fältet behöver inte ens vara en sträng, det kan vara ett nummer, datum, lista, till och med ett dokument (eller en lista över dokument), och alla dokument behöver inte få plats i RAM (även om det kommer att ändras när Redis diskbutiksfunktion är klar). Redis har inget av det. Du skulle behöva implementera index själv för att kunna söka, du kan inte lagra något annat än strängar (vilket är riktigt obekvämt ibland), och du kan inte lagra annat än platt hash (utan att tillgripa implementera eller använda någon form av mappning lager som Ohm).

Du nämner också hastighet. Redis är blixtsnabb, och Mongo är inte dåligt heller, men för ditt bruk kan det vara snabbare att använda Mongo. Lägg märke till att jag säger använder Mongo, inte för att Mongo själv skulle vara snabbare. Saken är den att om du går med Redis och fortfarande vill kunna söka efter ett dokument med ett fält som inte är primärnyckeln, måste du, som jag nämnde ovan, implementera detta själv. En sökning skulle då behöva göra minst två förfrågningar till Redis, en för att leta i indexet och en för att få dokumentet. Om en sökning resulterar i mer än ett dokument måste du göra en begäran för varje dokument individuellt. Omkostnaderna för att göra alla dessa förfrågningar skulle förmodligen göra det värre att använda Redis än att använda Mongo. Enligt min erfarenhet måste allt annat än den enklaste cachen, kön eller liknande göra mer än en begäran till Redis för att få allt det behöver.

Så med den begränsade informationen till mitt förfogande rekommenderar jag MongoDB.



  1. Hur använder man tredje parts bibliotek i glasfisk?

  2. hur läser man alla bytes som kommer på en tcp-anslutning?

  3. Hitta dubbletter av webbadresser i mongodb

  4. Mongodb-fråga med fält i samma dokument