В этом мире есть два типа людей: те, которые говорят, что множественное число «индекса» — это «индексы», и те, кто говорит, что это «индексы». Но этот пост не о такой дискуссии (хотя …).
(Также обратите внимание: в этом мире на самом деле существует 10 типов людей: те, которые понимают двоичный код, и те, которые не понимают.)
Сожалею.
Независимо от ваших мыслей о синтаксисе и лексикографии, мы завершим эту серию миграции Spring Data Neo4j с версии 3.x на 4.0, подчеркнув некоторые важные различия с точки зрения индексации через SDN. После этого я быстро расскажу о том, что упустил из предыдущего поста, связанном с отложенной загрузкой.
индексы
Индексирование является ключевой задачей для любого разработчика или администратора баз данных, поэтому важно знать, как в этом отношении работает ваше конкретное хранилище постоянных данных; и хотя подробное описание индексации в Neo4j выходит за рамки этой статьи, я предлагаю пойти сюда и сюда, чтобы узнать больше об индексировании в Neo4j.
Ранее в SDN мы использовали аннотацию @Indexed как для индексов схемы (например, индексирование свойства «username» узла / класса «Person»), так и для устаревших индексов (например, индексы FULLTEXT на основе Lucene).
Использование индексов
Начиная с SDN 4.0 аннотация @Indexed больше не поддерживается. Spring Data Neo4j автоматически использует все имеющиеся индексы схемы. Чтобы использовать устаревшие индексы, мы должны использовать предложение START в запросах Cypher. Обратите внимание, что автоматические индексы также доступны через методы запросов в шаблонах и репозиториях.
Управление индексами
Одно серьезное отклонение от предыдущих версий SDN — это изменение в философии, когда речь идет о ведении индексов, а именно о том, что « ведение индексов не должно быть частью кода вашего приложения. По этой причине оно не предоставляет каких-либо явных функций, связанных с индексами. «
Итак, вам придется свернуть свой собственный код, чтобы создать, обновить и удалить индексы.
К счастью, при работе с индексами схемы можно использовать простые команды Cypher для создания / удаления таких вещей, а Neo4j автоматически добавляет / удаляет узлы из индексов по мере необходимости.
Когда дело доходит до устаревших индексов, все немного сложнее.
Для полнотекстовых и пространственных индексов мы можем рассмотреть следующее.
Из документации SDN:
«Чтобы создать полнотекстовые записи для сущности, вы можете добавить обновленные узлы в AfterSaveEvents
удаленный полнотекстовый индекс с помощью REST API Neo4j. Если вы DefaultRequest
используете OGM, используемую в OGM, то также будет выполняться проверка подлинности».
Пример, также из документов SDN:
final CloseableHttpClient httpClient = HttpClients.createDefault();
@Bean
ApplicationListener<AfterSaveEvent> afterSaveEventApplicationListener() {
return new ApplicationListener<AfterSaveEvent>() {
@Override
public void onApplicationEvent(AfterSaveEvent event) {
Neo4jRequest<String> neo4jRequest = new DefaultRequest(httpClient);
if(event.getEntity() instanceof Person) {
Person person = (Person) event.getEntity();
//Construct the JSON statements
neo4jRequest.execute(endpoint,json);
}
}
};
}
В любом случае, если вы хотите выйти за рамки среды SDN, вы всегда можете использовать API-интерфейсы REST Neo4j для управления индексами.
Примечание о @Fetch
Он больше не поддерживается или не нужен!
НЕ ТАКОЙ!
(Предоставлено andreaarden.com)
Как вы, вероятно, уже поняли, благодаря реализации SDN 4, ленивая загрузка и выборка обрабатываются с помощью настраиваемых сеансов, которые позволяют задавать глубину выборки. С таким интеллектуальным поведением, @Fetch ушел! Woohoo!
Связывая свободные концы
В этой серии мы рассмотрели некоторые из многих изменений и улучшений, которые произошли с выпуском Spring Data Neo4j 4.0. Чем больше вы используете среду, тем больше вы будете сталкиваться с улучшениями производительности и другими удобствами, которые будут иметь большое значение для повышения вашей производительности с Neo4j в среде на основе Spring.
Мигрирующие версии, особенно крупные, всегда ставят некоторые проблемы, но путь, который здесь выбран, очень прост.
Тем не менее, определенно стоит просмотреть документацию Spring Data Neo4j ( см. Здесь ), чтобы узнать, что еще ждет вас. Особо следует обратить внимание на предоставленное подробное руководство по миграции .
Вывод
Интеграция Neo4j как в корпоративной, так и в не корпоративной среде через Spring никогда не была такой простой. Проблемы с производительностью, которые существовали в предыдущих версиях Spring Data Neo4j, были в значительной степени решены эффективным образом. Ранее болтливый SDN был прерван для целевого, сфокусированного потока, который улучшил эффективность при общении с Neo4j по проводной связи.
Мы рассмотрели темы, начиная от основных отличий этой последней версии SDN до новых концепций, которые она вводит, и до того, как обрабатываются графические объекты и индексы. Эта серия предназначена для ознакомления с переходом с 3.x на 4.0 (так как название явно напомнило вам) и потратит время, чтобы немного глубже изучить существующую документацию.
Если вы похожи на меня и уже некоторое время используете Spring Data Neo4j, вы определенно приветствуете внесенные изменения, а также усилия и усилия, направленные на то, чтобы сделать переход с SDN 3.x на 4.0 прямым. Честно говоря, покупка магазина Фон Неймана и его работа с последней версией SDN заняла не более пары часов!
Итак, посмотрите на новые Spring Data Neo4j и погрузитесь прямо в! Ознакомьтесь с функциями и ознакомьтесь с тем, что доступно.
Спасибо за просмотр этой серии, и я надеюсь, что вы нашли ее полезной! Приятного графика!
(Веселая Графика?)
Все еще не график.