Я технический директор Терракоты. Я провел некоторое время в прошлом месяце, глядя на Hibernate Search. Он не построен таким образом, чтобы терракотовые кластеры были прозрачными. Вот почему в двух словах: Hibernate имеет собственную JMS-репликацию индексов Lucene для всех JVM.
Основная идея поиска заключается в том, что общение с локальным диском в lucene работает очень хорошо, тогда как фрагментация или разбиение индексов Lucene по сети вводит слишком большую задержку, из-за которой Lucene кажется плохим, когда он вообще не виноват. С этой целью HIbernate Search не полагается на JBossCache или любые схемы разделения / кэширования в памяти, а вместо этого полагается на JMS и локальный диск каждой JVM для обеспечения современной индексации в кластере. с одновременной низкой задержкой. Кроме того, прелесть Hibernate Search заключается в том, что стандартные запросы Hibernate и многие другие могут запускаться через Hibernate по этим индексам естественного языка на каждой машине.
Оказывается, в Terracotta у нас была идея, аналогичная Эммануэлю, и мы создали продукт SearchableMap поверх Compass. Каждая машина получает свое собственное хранилище Compass, и хранилище настроено для локального разлива на диск. Терракота используется для создания возможности записи с несколькими мастерами, когда любая JVM может добавить к индексу, а дельта отправляется через Терракоту для локального воспроизведения / повторного применения на каждом диске. Он работает так же, как Hibernate Search, но с DSO в качестве сетевого протокола вместо JMS и без приятных интерфейсов Hibernate, но вместо этого с интерфейсами Compass.
Я думаю, что к концу года мы поддержим Hibernate Search с помощью JBoss (им нужно будет выделить impl JMS как подключаемый).
Теперь на ваши вопросы напрямую:
1. Количество обновлений объекта / сек в Hibernate или SearchableMap должно быть достаточно высоким, поскольку оба посылают только дельты. В случае Hibernate это является функцией нашего провайдера JMS. В Terracotta это масштабируется, просто добавляя больше серверов Terracotta в массив.
Производительность запросов в обоих случаях очень высокая. Производительность локальной памяти в большинстве случаев. И если вам нужно выполнить постраничную загрузку с диска, то оказывается, что большинство операционных систем хорошо справляются со своей задачей и могут отвечать на запросы гораздо быстрее, чем любая сетевая кластеризация.
Думаю, когда-нибудь мы заставим JBoss учесть их предположения относительно JMS и т. Д.
Приветствия
- Ari