Jein, das mit der Redundanz stimmt nur beschränkt. Die meisten Wrapper für die noSQL-Datenbanken erlauben auch wieder Referenzen direkt mit aus zu lesen was auch relativ schnell geht. Problematisch ist dabei eher, das praktisch keine JOINs bei Abfragen möglich sind, sprich nur innerhalb eines einzelnen Objekts gefiltert werden kann und nicht über eine Relation hinweg.
Allgemein muss man sich allerdings die Frage stellen, wie die Datenbank hauptsächlich genutzt wird.
Würde man auch in der relationalen Datenbank Datensätze IMMER nur direkt mit dem Pkey suchen und davon ausgehend über Referenzen, so ist eine noSQL-DB eigentlich perfekt geeignet, um so mehr je komplexer die zu speichernden, jedoch nicht die zu durchsuchenden Daten sind.
Hat man hingegen einen Anwendungsfall wo Range-Scans notwendig sind, ist eine noSQL- bzw. allgemein nicht-relationale Datenbank völlig ungeeignet. Selbst wenn das Datenbanksystem bei gleichnamigen Attributen verschiedener Objekte automatisch Indizes generiert (bzw. generieren würde). ist das doch keinesfalls für komplexere Abfragen geeignet.
Ein weiteres Problem ist die Laufzeitcharakteristik von relationalen gegenüber objektorientierten Datenbanken in charakteristischen Szenarien.
Klar, bei einzelnen Datensätzen welche direkt referenziert werden können, punktet die ODB da Zugriff in konstanter (bzw. eigentlich logarithmischer Zeit in Abhängigkeit der DB-Größe), keine Locks, keine "komplizierten" Indizes für den PKey etc. Ähnliches gilt bei der Auflösung von Referenzen auf einzelne Objekte, verglichen mit einem JOIN ist der Rechenaufwand immer noch messbar niedriger.
Bei Filterkriterien nach anderen Attributen (oder sogar das übliche SORT + LIMIT nach einem JOIN) schaut es hingegen fatal aus. Im Optimalfall existiert das Attribut nach dem gefiltert wird NUR bei Objekten des gesuchten Typs, sprich der Index ist sauber. In diesem unwahrscheinlichen Fall schafft die ODB immerhin noch die gleiche Charakteristik wie die RDB. Andernfalls geht die Performance allerdings in den Keller, da durch die fehlende Normalisierung und zusammengesetzte Indizes (aktuell) kein effizienter Zugriff möglich ist.
Dazu kommt dann natürlich noch ein statischer Overhead, relationale Datenbanken haben sich vor allem deshalb so lange gehalten, weil sehr effizient was den Speicher- und Arbeitspeicher-Bedarf angeht. Der Overhead bei der Rechenleistung hingegen ist zu vernachlässigen. Prinzipiell lassen sich mit objektorientierten Datenbanken bei äquivalenten Datenbeständen auch Laufzeitcharakteristiken wie mit einer relationalen Datenbank erreichen, das erfordert allerdings wie auch schon bei relationalen Datenbanken eine gewisse Normalisierung sowie spezifische Hinweise für das Datenbanksystem wie komplexere Indizes auf zu bauen sind, was dann allerdings auch schon nicht mehr ohne eine entsprechende (zu mindestens teilweise) Normalisierung funktioniert.
Wenn es nur um den Komfort geht, ein objektorientiertes Datenmodell in einer Datenbank zu speichern, ohne sich mit den Fallstricken einer relationalen Datenbank auseinander setzen zu müssen (konkret die Unterscheidung zwischen Aggregation und Komposition sowie n:n-Relationen), so rate ich dennoch eher zu Systemen wie einer der vielen ORM-Implemenationen, diese sind einfach deutlich ausgereifter als vollständig objektorientierte Datenbanken was sich dementsprechend auch in der Performance der Anwendung nieder schlägt.
Persönlich würde ich die aktuelle Generation der ODBs nur für einen einzigen Zweck einsetzen, und zwar für den für den sie gebaut wurden: Zum Speichern von komplett inhomogenen Daten welche sich nicht mit vertretbarem Aufwand normalisieren lassen würden und bei denen nur über sehr wenige Attribute gefiltert werden muss, wenn überhaupt. Sprich als reiner Dokumentenspeicher und/oder Cache.