2009-05-20 9 views
3

Hat jemand Erfahrung mit der Verwendung von Terracotta mit Hibernate Search zur Befriedigung der Anwendung Abfragen?Teracotta und Hibernate Suche

Wenn ja:

  1. Welche Größe von "Objekt Updates" kann damit umgehen? (Wie ist die Leistung)

  2. Welche Art von Leistung haben die Abfragen?

  3. Ist es möglich, ohne Terracotta Hibernate Search zu verwenden, selbst eine Träger Datenbank mit allen „Abfragen“ in Speicher zu befriedigen?

Antwort

4

Ich bin Terracottas CTO. Ich habe letzten Monat einige Zeit mit der Suche nach Hibernate verbracht. Es ist nicht so gebaut, dass es von Terracotta transparent geclustert wird. Im Folgenden kurz zusammengefasst: Hibernate verfügt über eine benutzerdefinierte JMS-Replikation von Lucene-Indizes über JVMs hinweg. Die Grundidee in Search ist, dass das Sprechen mit lokalen Festplatten unter Lucene sehr gut funktioniert, während das Zerlegen oder Partitionieren von Lucene-Indizes über das Netzwerk so viel Latenz bringt, dass Lucene schlecht aussieht, wenn es nicht Lucenes Fehler ist. Zu diesem Zweck verlässt sich HIbernate Search nicht auf JBossCache oder beliebige In-Memory-Partitionierungs-/Caching-Schemata und stützt sich stattdessen auf JMS und jede lokale Festplatte der JVM, um eine aktuelle Indizierung über einen Cluster bei gleichzeitig geringer Latenz zu ermöglichen . Das Schöne an der Hibernate-Suche ist, dass standardmäßige Hibernate-Abfragen und mehr über Hibernate mit diesen natürlichsprachlichen Indizes auf jedem Computer gestartet werden können.

Bei Terracotta stellte sich heraus, dass wir eine ähnliche Idee wie Emmanuel hatten und ein SearchableMap-Produkt auf Compass bauten. Jeder Computer erhält seinen eigenen Compass-Speicher, und der Speicher ist so konfiguriert, dass er lokal auf den Datenträger ausgelaufen ist. Terracotta wird verwendet, um eine Multi-Master-Schreibfähigkeit zu schaffen, bei der jede JVM zum Index hinzugefügt werden kann und das Delta über Terracotta gesendet wird, um lokal auf jede Platte wiedergegeben zu werden. Es funktioniert genau wie Hibernate Search, aber mit DSO als Netzwerkprotokoll anstelle von JMS und ohne die schönen Hibernate-Schnittstellen, sondern mit Compass-Schnittstellen.

Ich denke, wir werden die Hibernate Search mit Hilfe von JBoss unterstützen (sie müssten das JMS impl als Pluggable ausgliedern) bis Ende des Jahres.

nun auf Ihre Fragen direkt an:

1. Gegenstand Aktuelles/sec in den Ruhezustand oder SearchableMap sollte recht hoch sein, weil beide nur Deltas sendet. Bei Hibernate handelt es sich um eine Funktion unseres JMS-Anbieters. In Terracotta ist es skalierbar, indem man dem Array mehr Terracotta-Server hinzufügt.

  1. Die Abfrage-Leistung in beiden ist sehr schnell. Lokale Speicherleistung in den meisten Fällen. Und wenn Sie von der Festplatte aus puffern müssen, stellt sich heraus, dass die meisten Betriebssysteme einen guten Job machen und viel schneller reagieren können als jedes Netzwerk-basierte Clustering auf Abfragen.

  2. Es wird, denke ich, sobald wir JBoss haben, ihre JMS-Annahmen usw. auszumachen.

Cheers,

--Ari

2

Da die Menschen auf den Hibernate-Foren zu diesem Beitrag immer Bezug ich in Bedürfnisse, darauf hinzuweisen, dass, während Ari Kommentare, wo richtig am Anfang des Jahres 2009, Wir haben viel entwickelt und verbessert.

Hibernate Search bietet eine Reihe von Backend-Kanälen, wie die bereits erwähnte JMS-basierte und eine neuere Ergänzung mit JGroups, aber wir haben es auch ziemlich einfach gemacht, alternative Implementierungen einzuschließen oder einige zu überschreiben.

Zusätzlich zur Verwendung eines benutzerdefinierten Backends ist es seit Version 4 möglich, die gesamte Strategie zu ersetzen. Statt die Backend-Implementierung zu ändern, können Sie einen IndexManager verwenden, der einem anderen Design folgt und überhaupt kein Backend verwendet ; Zu diesem Zeitpunkt haben wir nur zwei IndexManager, aber wir arbeiten an mehr Alternativen. wieder die Idee ist es, nette Implementierungen für die gängigsten

Es verfügt über ein Infinispan-basierte Backend für sehr schnelle Verteilung des Index über verschiedene Knoten, und es sollte einfach sein, um eine auf Terracotta oder einem anderen Clustering beizutragen Technologie. Weitere Lösungen kommen.