Нужно ли bulkIndexOnStartup при использовании mirrorChanges = true в подключаемом модуле Grails? - PullRequest
0 голосов
/ 24 ноября 2010

Опция mirrorChanges будет отражать все изменения, сделанные с помощью GORM / Hibernate, поэтому, если я не делаю никаких внешних изменений в базе данных, тогда требуется massIndexOnStartup?

Проблема в том, что наш набор данных очень большой (> 1 млн строк), а массовый индексатор может занять более 30 минут.

При значении 'fork' lucene будет аварийно завершать работу, если какие-либо изменения будут сделаны через GORM, поскольку lucene не является поточно-ориентированным, и транзакция GORM будет пытаться обновить индекс во время работы разветвленного потока массового индекса.

Если установлено значение true, приложение завершит инициализацию в течение этих 30+ минут.

Ответы [ 2 ]

0 голосов
/ 19 января 2011

Если вы не изменяете данные из другого источника, вам не нужно устанавливать для параметру bulkIndexOnStartup значение true, особенно если для свойства mirrorChanges установлено значение true. Это в значительной степени то, как мы справляемся с этим в нашем приложении. У нас есть действие контроллера, которое вызывает индексированный разветвленный указатель для определенного класса, поэтому мы можем вызывать его по требованию в случае необходимости, например, если по какой-то причине нам нужно было обновить базу данных напрямую. Затем мы вызываем индексатор для определенного класса, а не для всего набора классов, таким образом, если нам нужно вызвать его, тогда это не займет много времени.

0 голосов
/ 25 ноября 2010

bulkIndexOnStartup не требуется, если вы зеркально отражаете изменения.

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

...