Ja, Sie können SOLR als Datenbank verwenden, aber es gibt einige wirklich schwerwiegende Einschränkungen:
-
Das häufigste Zugriffsmuster von SOLR, das über http erfolgt, reagiert nicht besonders gut auf Stapelabfragen. Darüber hinaus streamt SOLR KEINE Daten – Sie können also nicht träge durch Millionen von Datensätzen gleichzeitig iterieren. Das bedeutet, dass Sie sehr sorgfältig vorgehen müssen, wenn Sie umfangreiche Datenzugriffsmuster mit SOLR entwerfen.
-
Obwohl die Leistung von SOLR sowohl horizontal (mehr Maschinen, mehr Kerne usw.) als auch vertikal (mehr RAM, bessere Maschinen usw.) skaliert, sind seine Abfragemöglichkeiten im Vergleich zu denen eines ausgereiften RDBMS stark eingeschränkt . Allerdings gibt es einige hervorragende Funktionen, wie die Feldstatistikabfragen, die sehr praktisch sind.
-
Entwickler, die an die Verwendung relationaler Datenbanken gewöhnt sind, werden aufgrund der Art und Weise, wie SOLR Filter in Abfragen verwendet, häufig auf Probleme stoßen, wenn sie dieselben DAO-Entwurfsmuster in einem SOLR-Paradigma verwenden. Es wird eine Lernkurve für die Entwicklung des richtigen Ansatzes zum Erstellen einer Anwendung geben, die SOLR für einen Teil ihrer großen Abfragen oder zustandsbehafteten Änderungen verwendet .
-
Die "Enterprise"-Tools, die ein erweitertes Sitzungsmanagement und zustandsbehaftete Einheiten ermöglichen, die viele fortschrittliche Web-Frameworks (Ruby, Hibernate, ...) bieten, müssen vollständig aus dem Fenster geworfen werden .
-
Relationale Datenbanken sollen mit komplexen Daten und Zusammenhängen umgehen – und werden daher von modernsten Metriken und automatisierten Analysewerkzeugen begleitet. In SOLR habe ich festgestellt, dass ich solche Tools schreibe und viel manuell Stresstests durchführe, was viel Zeit in Anspruch nehmen kann .
-
Beitreten:Das ist der große Mörder. Relationale Datenbanken unterstützen Methoden zum Erstellen und Optimieren von Ansichten und Abfragen, die Tupel basierend auf einfachen Prädikaten verbinden. In SOLR gibt es keine robusten Methoden zum Zusammenführen von Daten über Indizes hinweg.
-
Resilienz:Für Hochverfügbarkeit verwendet SolrCloud ein darunterliegendes verteiltes Dateisystem (z. B. HCFS). Dieses Modell unterscheidet sich deutlich von dem einer relationalen Datenbank, die normalerweise Resilienz mithilfe von Slaves und Mastern oder RAID usw. durchführt. Sie müssen also bereit sein, die Ausfallsicherheitsinfrastruktur bereitzustellen, die SOLR benötigt, wenn Sie möchten, dass sie Cloud-skalierbar und widerstandsfähig ist.
Abgesehen davon bietet SOLR für bestimmte Aufgaben viele offensichtliche Vorteile:(siehe http://wiki. apache.org/solr/WhyUseSolr ) - lose Abfragen sind viel einfacher auszuführen und liefern aussagekräftige Ergebnisse. Die Indizierung erfolgt standardmäßig, sodass die meisten beliebigen Abfragen ziemlich effektiv ausgeführt werden (im Gegensatz zu einem RDBMS, bei dem Sie häufig nachträglich optimieren und denormalisieren müssen).
Fazit: Auch wenn Sie SOLR als RDBMS verwenden KÖNNEN, stellen Sie (wie ich) vielleicht fest, dass es letztendlich "kein kostenloses Mittagessen" gibt - und die Kosteneinsparungen durch supercoole Lucene-Textsuchen und leistungsstarke In-Memory-Indizierung, werden oft durch weniger Flexibilität und die Einführung neuer Arbeitsabläufe für den Datenzugriff bezahlt.