Поиск терракоты и гибернации - PullRequest
3 голосов
/ 20 мая 2009

Есть ли у кого-нибудь опыт использования Terracotta с Hibernate Search для удовлетворения запросов приложения?

Если так:

  1. Какая величина "объекта обновления "он может справиться? (Как производительность)

  2. Какую работу выполняют Запросы есть?

  3. Можно ли использовать терракоту Поиск в спящем режиме, даже не имея резервная база данных, чтобы удовлетворить все "запросы" в памяти?

Ответы [ 2 ]

4 голосов
/ 21 мая 2009

Я технический директор Терракоты. Я провел некоторое время в прошлом месяце, глядя на 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 в массив.

  1. Производительность запросов в обоих случаях очень высокая. Производительность локальной памяти в большинстве случаев. И если вам нужно выполнить постраничную загрузку с диска, то оказывается, что большинство операционных систем хорошо справляются со своей задачей и могут отвечать на запросы гораздо быстрее, чем любая сетевая кластеризация.

  2. Думаю, когда-нибудь мы заставим JBoss учесть их предположения относительно JMS и т. Д.

Приветствия

- Ari

2 голосов
/ 04 октября 2011

Поскольку люди на форумах Hibernate продолжают ссылаться на этот пост, я чувствую необходимость указать, что, хотя комментарии Ари были правильными в начале 2009 года, мы значительно развиваемся и совершенствуемся.

Hibernate Search предоставляет набор внутренних каналов из коробки, как уже упоминалось на основе JMS и более недавнее добавление с использованием JGroups, но мы также упростили добавление альтернативных реализаций или переопределение некоторых.

В дополнение к использованию пользовательского бэкэнда, начиная с версии 4, теперь возможно заменить всю стратегию, и вместо изменения только бэкэнд-реализации вы можете использовать IndexManager, который следует другому дизайну и совсем не использует бэкэнд; в настоящее время у нас есть только два IndexManager, но мы работаем над большим количеством альтернатив; Опять же, идея состоит в том, чтобы предоставить хорошие реализации для наиболее распространенных

Он имеет основанный на Infinispan бэкэнд для очень быстрого распределения индекса по разным узлам, и он должен быть прямым, чтобы добавить один из них, основанный на терракоте или любой другой технологии кластеризации. Будут и другие решения.

...