sql >> Database teknologi >  >> NoSQL >> Redis

Hvad er den mest effektive dokumentorienterede databasemaskine til at gemme tusindvis af mellemstore dokumenter?

Det afhænger meget af den specifikke brugssag. Hvis du ønsker at kunne forespørge på dine dokumenter på noget andet end deres ID, skal du ikke vælge Redis. Med Redis skulle du implementere din egen indekseringsordning, og det er bare unødvendigt.

Der er faktisk meget få tilfælde, hvor Redis ville være en bedre mulighed for, hvad jeg tror, ​​din use case er (ikke at der er noget galt med Redis, jeg bruger ofte både Redis og Mongo, men til forskellige ting). Det lyder for mig, som om du har objekter, der kan repræsenteres som hashes. Både Mongo og Redis kan gemme hash, men Mongo kan meget mere. Med Mongo kan du søge efter et dokument på et hvilket som helst af dets felter, du kan tilføje et indeks for at fremskynde det, og feltet behøver ikke engang at være en streng, det kan være et tal, dato, liste, endda et dokument (eller en liste over dokumenter), og alle dokumenterne behøver ikke at passe i RAM (selvom det vil ændre sig, når Redis' diskstore-funktion er færdig). Det har Redis ikke noget af. Du skulle selv implementere indekser for at kunne søge, du kan ikke gemme andet end strenge (hvilket er virkelig ubelejligt nogle gange), og du kan ikke gemme andet end flade hashes (uden at ty til at implementere eller bruge en form for mapping). lag som Ohm).

Du nævner også hastighed. Redis er lynende hurtig, og Mongo er heller ikke dårligt, men til din brug kan det være hurtigere at bruge Mongo. Bemærk, at jeg siger bruger Mongo, ikke at Mongo i sig selv ville være hurtigere. Sagen er, at hvis du går med Redis og stadig vil være i stand til at søge efter et dokument ved hjælp af et felt, der ikke er den primære nøgle, ville du, som jeg nævnte ovenfor, selv skulle implementere dette. En søgning ville derefter skulle foretage mindst to anmodninger til Redis, en for at se i indekset og en for at få dokumentet. Hvis en søgning resulterer i mere end ét dokument, skal du anmode om hvert dokument individuelt. Overheaden ved at lave alle disse anmodninger ville sandsynligvis gøre brugen af ​​Redis værre end at bruge Mongo. Det er min erfaring, at alt andet end den enkleste cache, kø eller lignende skal sende mere end én anmodning til Redis for at få alt, hvad det har brug for.

Så med den begrænsede information til min rådighed, anbefaler jeg MongoDB.



  1. Tidspunkt for oprettelse af nøgle i redis

  2. bruger streng til mongodb _id

  3. Redis lua hvornår skal man virkelig bruge det?

  4. Mongoose dokumentreferencer med et en-til-mange forhold