sql >> Database >  >> NoSQL >> Redis

Wat is de meest efficiënte documentgeoriënteerde database-engine om duizenden middelgrote documenten op te slaan?

Het hangt sterk af van de specifieke use-case. Als u uw documenten op iets anders dan hun ID wilt kunnen opvragen, moet u Redis niet kiezen. Met Redis zou u uw eigen indexeringsschema moeten implementeren, en dat is gewoon niet nodig.

Er zijn eigenlijk maar heel weinig gevallen waarin Redis een betere optie zou zijn voor wat ik denk dat je gebruik is (niet dat er iets mis is met Redis, ik gebruik vaak zowel Redis als Mongo, maar voor verschillende dingen). Het klinkt voor mij alsof je objecten hebt die kunnen worden weergegeven als hashes. Zowel Mongo als Redis kunnen hashes opslaan, maar Mongo kan veel meer. Met Mongo kun je naar een document zoeken in elk van zijn velden, je kunt een index toevoegen om het te versnellen, en het veld hoeft niet eens een string te zijn, het kan een nummer, datum, lijst, zelfs een document zijn (of een lijst met documenten), en niet alle documenten hoeven in het RAM-geheugen te passen (hoewel dat zal veranderen wanneer de diskstore-functie van Redis klaar is). Redis heeft dat allemaal niet. Je zou zelf indexen moeten implementeren om te kunnen zoeken, je kunt niets anders opslaan dan strings (wat soms erg onhandig is), en je kunt niets anders opslaan dan platte hashes (zonder toevlucht te nemen tot het implementeren of gebruiken van een soort mapping laag zoals Ohm).

Je noemt ook snelheid. Redis is razendsnel en Mongo is ook niet slecht, maar voor jouw gebruik kan het gebruik van Mongo sneller zijn. Merk op dat ik zeg met Mongo, niet dat Mongo zelf sneller zou zijn. Het punt is, als je met Redis gaat en toch naar een document wilt kunnen zoeken met een veld dat niet de primaire sleutel is, zou je, zoals ik hierboven al zei, dit zelf moeten implementeren. Een zoekopdracht zou dan ten minste twee verzoeken aan Redis moeten doen, één om in de index te kijken en één om het document op te halen. Als een zoekopdracht meer dan één document oplevert, moet u voor elk document afzonderlijk een verzoek indienen. De overhead van het maken van al deze verzoeken zou het gebruik van Redis waarschijnlijk slechter maken dan het gebruik van Mongo. In mijn ervaring moet iets anders dan de eenvoudigste cache, wachtrij of iets dergelijks meer dan één verzoek aan Redis doen om alles te krijgen wat het nodig heeft.

Dus, met de beperkte informatie die ik tot mijn beschikking heb, raad ik MongoDB aan.



  1. Rolgebaseerde toegangscontrole afdwingen met ClusterControl

  2. Hoe gebruik je ongeordende bulk insertie met Mongoskin?

  3. MongoDB $pull

  4. Mongodb kan niet starten