Spring Data Neo4j 5 и время запуска приложения

В моем проекте Spring Data Neo4j 5 у меня есть следующая конфигурация Java Neo4j:

@Bean
public org.neo4j.ogm.config.Configuration configuration() {

    // @formatter:off
    return new org.neo4j.ogm.config.Configuration.Builder()
            .autoIndex("assert")
            .credentials(username, password)
            .uri(serverDatabaseUri)
            .build();
    // @formatter:on

}

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

Я думаю, что одной из возможных причин этой проблемы может быть следующее свойство:

autoIndex("assert")

Как это проверить и прав ли я - как улучшить время запуска приложения без потери функционала, предоставляемого autoIndex("assert")?


person alexanoid    schedule 06.01.2018    source источник


Ответы (1)


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

Создание индекса — удобная функция SDN. Тем не менее, учитывая, что добавление или удаление индексов является довольно редким событием, обычно происходящим только тогда, когда вы добавляете или удаляете объект домена или начинаете с пустой базы данных, другой вариант — удалить аннотации @Index и создать Cypher. сценарий, который создает или удаляет индексы и выполняет сценарий Cypher только по мере необходимости. Такой подход позволяет приложению запускаться как можно быстрее, при этом приходится вручную запускать сценарий, когда это необходимо, что большинство считает разумным балансом.

person Eric Spiegelberg    schedule 08.01.2018
comment
При этом я просто хочу добавить, что всегда есть возможность использовать autoIndex("validate"), чтобы убедиться, что индексы существуют. Идея SDN/OGM @Index и (по крайней мере) assert сравнима с autoDDL Hibernate: она хороша для разработки, но не требует тяжелых операций в продакшене. - person meistermeier; 08.01.2018
comment
Спасибо за ваши ответы! Другими словами, я могу использовать, например, что-то вроде LiquiGraph github.com/liquigraph/liquigraph вместе с мое приложение Spring Boot, чтобы объявить любые изменения схемы и autoIndex (проверить), чтобы убедиться, что установлены правильные индексы? - person alexanoid; 08.01.2018
comment
Еще раз спасибо, я смог решить эту проблему с помощью LiquiGraph и autoIndex (проверить) - person alexanoid; 09.01.2018