Redis
 sql >> Datenbank >  >> NoSQL >> Redis

Was ist die effizienteste dokumentenorientierte Datenbank-Engine zum Speichern von Tausenden von mittelgroßen Dokumenten?

Es kommt sehr auf den konkreten Anwendungsfall an. Wenn Sie in der Lage sein möchten, Ihre Dokumente nach etwas anderem als ihrer ID abzufragen, sollten Sie sich nicht für Redis entscheiden. Mit Redis müssten Sie Ihr eigenes Indizierungsschema implementieren, und das ist einfach unnötig.

Es gibt tatsächlich nur sehr wenige Fälle, in denen Redis eine bessere Option für das ist, was ich für Ihren Anwendungsfall halte (nicht, dass mit Redis etwas nicht stimmt, ich verwende häufig sowohl Redis als auch Mongo, aber für verschiedene Dinge). Es klingt für mich so, als hätten Sie Objekte, die als Hashes dargestellt werden können. Sowohl Mongo als auch Redis können Hashes speichern, aber Mongo kann noch viel mehr. Mit Mongo können Sie in jedem seiner Felder nach einem Dokument suchen, Sie können einen Index hinzufügen, um es zu beschleunigen, und das Feld muss nicht einmal eine Zeichenfolge sein, es kann eine Zahl, ein Datum, eine Liste oder sogar ein Dokument sein (oder eine Liste von Dokumenten), und alle Dokumente müssen nicht in den Arbeitsspeicher passen (obwohl sich das ändern wird, wenn die Diskstore-Funktion von Redis fertig ist). Redis hat nichts davon. Sie müssten Indizes selbst implementieren, um suchen zu können, Sie können nichts anderes als Zeichenfolgen speichern (was manchmal wirklich unpraktisch ist) und Sie können nichts anderes als flache Hashes speichern (ohne auf die Implementierung oder Verwendung einer Art von Zuordnung zurückzugreifen). Schicht wie Ohm).

Sie erwähnen auch die Geschwindigkeit. Redis ist blitzschnell und Mongo ist auch nicht schlecht, aber für Ihren Anwendungsfall kann die Verwendung von Mongo schneller sein. Beachten Sie, dass ich mit sage Mongo, nicht dass Mongo selbst schneller wäre. Die Sache ist die, wenn Sie sich für Redis entscheiden und trotzdem in der Lage sein möchten, ein Dokument mit einem Feld zu suchen, das nicht der Primärschlüssel ist, müssten Sie dies, wie oben erwähnt, selbst implementieren. Eine Suche müsste dann mindestens zwei Anfragen an Redis stellen, eine zum Suchen im Index und eine zum Abrufen des Dokuments. Wenn eine Suche mehr als ein Dokument ergibt, müssten Sie für jedes Dokument einzeln eine Anfrage stellen. Der Aufwand für all diese Anfragen würde die Verwendung von Redis wahrscheinlich schlechter machen als die Verwendung von Mongo. Meiner Erfahrung nach muss alles andere als der einfachste Cache, die einfachste Warteschlange oder ähnliches mehr als eine Anfrage an Redis stellen, um alles zu bekommen, was es braucht.

Daher empfehle ich mit den begrenzten Informationen, die mir zur Verfügung stehen, MongoDB.