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.
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.
Es wird, denke ich, sobald wir JBoss haben, ihre JMS-Annahmen usw. auszumachen.
Cheers,
--Ari