2016-05-17 10 views
1

Wir verwenden Postgresql für Persistenz, ehcache als unseren Cache. Wir haben kürzlich Solr eingeführt, um schnellere Suchen zu ermöglichen (für unscharfe und exakte Suchen).Kann Can Solr als Alternative zum Cache verwendet werden?

Also meine Frage ist: Kann Solr so eingestellt sein, dass es ehcache ersetzen kann? (Sagen wir von in Cloud-Modus ausgeführt wird oder so)

Nur einige Kontext auf die Frage hinzuzufügen:

Wir haben eine Reihe von Tabellen Kontaktinformationen zu speichern. Ehcache wird derzeit verwendet, um diese Kontakte für eine bestimmte ID zu erhalten. Solr wird ausgiebig für Suchvorgänge verwendet. Da Solr bereits die Suche macht ... warum sollte man nicht Ehcache ersetzen (wie es in gewisser Weise heißt: Suchen mit einer gegebenen ID), vorausgesetzt, die Leistung wird nicht beeinträchtigt.

Antwort

1

In Ergänzung zu anderen Gründen warum Nein wäre eine Antwort, ist auch die Granularität der Änderungen. Lucene (zugrunde liegende Bibliothek) speichert Daten in einer schreibgeschützten Form. Solr fügt darüber hinaus aktualisierbare Dokumente hinzu, aber sie sichtbar zu machen, ist immer noch eine schwere Operation. Neuere Versionen von Solr haben es mit Soft-Commits einfacher und schneller gemacht, aber der Preis, eine Änderung sichtbar zu machen, ist immer noch nicht trivial.

Also ist es wirklich nicht für die Aktualisierung/Caching eines einzelnen Wertes optimiert. Die Datenstrukturen sind für eine Mehrfachdokumentaktualisierung und dann für eine schnelle Suche mit Zwischenspeichern über diesen temporär schreibgeschützten Zustand optimiert.

+0

Ich bin mit Ihrer Schlussfolgerung nicht einverstanden, weil ich Solr nicht als Dokumentenspeicher verwenden möchte (gegenüber einem Suchindex), aber wenn der Anwendungsfall "letzte Version eines Dokuments nach ID" ist, dann ist Realtime Get für: https : //cwiki.apache.org/confluence/display/solr/RealTime+Get – randomstatistic

+0

Sicher, Echtzeit Get verbessert die Zugriffsgeschwindigkeit, aber beim Verlust der Suchfunktionen und es ist immer noch nicht dafür optimiert. Also, möglich, aber nicht empfohlen für den Wechsel von etwas speziell für solche Operationen ausgelegt. –

1

Ich werde eine Aufnahme machen, aber es ist unwahrscheinlich, dass jemand eine definitive Antwort auf solch eine vage Frage haben wird. https://lucidworks.com/blog/2012/07/23/sizing-hardware-in-the-abstract-why-we-dont-have-a-definitive-answer/ ist jetzt vier Jahre alt, aber immer noch relevant. Die Antworten hängen ganz davon ab, was Sie tun müssen.

Also, einige allgemeine Aussagen:

  • SolrCloud oder nicht, ist unwahrscheinlich, ein Problem sein, dass Ihre Entscheidung bewirkt. Verwenden Sie diese Option, wenn Solr Replikations- und Indexverwaltung verwalten soll. Tun Sie es nicht, wenn Sie es lieber selbst machen würden.
  • Solr ist schnell, (genügend Speicher gegeben), so ist es sicherlich möglich Sie könnten eine Cache-Schicht loswerden. Nur Sie kennen Ihre Anforderungen.
  • Lesen Sie https://wiki.apache.org/solr/SolrCaching, besonders interessiert Sie vielleicht der QueryResultCache.
+0

Zuerst danke für die nette Erklärung.Ich habe die Frage bearbeitet, um einen Kontext bereitzustellen. Bitte lassen Sie mich Ihre Meinung wissen. – iwekesi

+0

Ok, Solr ist besonders nützlich für zwei Dinge, unscharfe Sucheigenschaften und relevanzbasierte Sortierung. Die ID-Suche in Solr ist ziemlich schnell, aber wie in anderen Antworten erwähnt, wird es schwierig sein, einen In-Memory-Cache zu übertreffen, auch wenn Ihr gesamter Solr-Index sowieso im Speicher zwischengespeichert wird. Es ist ein ziemlich übliches Muster, Solr nur zu verwenden, um die Liste passender, bestellter IDs zu erhalten und diese zu verwenden, um den tatsächlichen Dokumenteninhalt aus einem dauerhaften Speicher wie Postgres zu holen. Wenn Sie aus Speedgründen bereits einen Cache vor Postgres haben, sehe ich keinen Grund, das zu ändern. – randomstatistic

1

Die einfache Antwort lautet: Kein

Grund:

cache im Speicher, aber der Index der solr ist auf der Festplatte (mit Ausnahme der Teil zwischengespeichert wurde).

Das Lesen von Speicher ist über tausendmal schneller als das Lesen von Datenträgern.

So solr kann nicht als Cache allgemeinen Zweck verwendet werden, in diesem Fall ehcache oder memcached oder redis wäre eine bessere Wahl sein.

Was solr gut ist, ist seine Suchfähigkeit, analyzer & tokenizer & filter, aber nicht Cache.