Статьи

Новое на Neo4j: Выпуск Neo4j 2.3.0 Milestone 2 уже в продаже

Если вы еще не слышали, доступна версия Neo4j 2.3 Milestone 2 .

(Полное раскрытие: этот этап выпуска предназначен только для разработки и экспериментов, поскольку не все функции представлены в окончательном виде. Нажмите здесь, чтобы загрузить полностью стабильную версию Neo4j 2.2.2 .)

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

Не все эти функции, подробно описанные ниже, полностью доступны в Milestone 2, но вот ваш первый взгляд на будущее.

Высоко масштабируемый кэш графа вне кучи

Neo4j 2.3 завершает двухлетнее путешествие, начатое с Neo4j 2.1, чтобы полностью убрать кэш графов из кучи JVM. Одним из основных аспектов выпуска 2.3 является замена ненужного теперь кеша объектов второго уровня.

По мере того, как реализация Neo4j (особенно Cypher) приближается к металлу, она создает все меньше и меньше объектов, что создает меньшую нагрузку на сборщик мусора. Новый кеш страниц, представленный в Neo4j 2.2, позволил более эффективно отображать небольшие фрагменты файлов-хранилищ в память и уменьшил потребность в кеше более высокого уровня.

С этим изменением доступно гораздо больше памяти для отображения файлов вашего магазина в память. Кроме того, благодаря меньшей нагрузке на сборщик мусора, Neo4j и кластеры машин Neo4j работают более стабильно и с меньшими длительными паузами.

Новый кеш страниц также обеспечивает значительные (до 2-3х) улучшения в параллельном масштабировании чтения. Вы должны быть в состоянии уменьшить ваши настройки кучи и увеличить настройки кэша страниц на ту же величину.

Помогите нам протестировать это большое изменение (которое позволило нам удалить 13 000 строк кода), выполнив более интенсивные тестовые нагрузки на Neo4j 2.3.M02, и доложить, как Neo4j ведет себя для вас с точки зрения GC-пауз, производительности и стабильности кластера.

Установщик Mac

‘Достаточно.

Улучшения оптимизатора Cypher на основе затрат

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

Обратите внимание, что вы всегда можете заставить планировщика вернуться к предыдущему планировщику на основе правил с подсказкой: CYPHER planner=ruleи не забудьте проверять свои планы запросов визуально, добавляя префикс медленных запросов с помощью EXPLAINили PROFILE.

Скомпилированная среда выполнения

В рамках повышения эффективности работы с памятью и средой выполнения мы перемещаем механизм времени выполнения Cypher из его текущей формы, который использует Scala и интерпретированные планы выполнения, в новый и гораздо более эффективный механизм, который компилирует запросы вплоть до байт-кода. Этот байт-код затем выполняется и оптимизируется JVM Hotspot.

В настоящее время фаза компиляции работает только с очень простыми запросами, но со временем она охватит большую область с последующими выпусками. Если компилятор байт-кода не может скомпилировать запрос, он просто возвращается к существующей интерпретированной среде выполнения.

Вы увидите несколько новых подсказок Cypher для выбора времени выполнения наряду с существующими подсказками, которые можно использовать для указания планировщика:

CYPHER planner=cost|rule runtime=compiled|interpreted
MATCH (n) return n

Профиль еще не показывает, какая среда выполнения используется, но вы можете увидеть, какую среду он использует, проверив представление кода (подробнее ниже) выполнения PROFILE и проверив http-ответ.

Улучшения UX

У нас также есть ряд улучшений пользовательского опыта в этом выпуске. Одним из примеров является то, что теперь вы можете закрепить направляющие, особенно те, которые непрерывно выполняют зашифрованные запросы как часть руководства. К ним относятся такие примеры, как график фильма (: график воспроизведения фильма), импорт базы данных Northwind (: воспроизведение графика Northwind), шаблоны запросов (: шаблон запроса воспроизведения) и история (: история).

Еще одним ключевым улучшением UX является просмотр кода . Если вы когда-нибудь задумывались о том, что браузер выполняет скрытно, когда вы выполняете запрос, просмотр кода для вас. Это новый вид на панели результатов ваших действий, обозначенный значком </>.

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

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

Мы надеемся, что вам понравится выпуск Neo4j 2.3.0-M02 . Пожалуйста, присылайте нам свои отзывы , особенно когда речь идет о производительности и стабильности с удаленным кешем объектов Мы с нетерпением ждем следующей стабильной версии Neo4j 2.3, как только она выйдет.

Удачи в тестировании этого этапа,

Ура, Майкл

Загрузить: http://neo4j.com/download/#milestone

Документация: http://neo4j.com/docs/milestone/

Справочная карта Cypher: http://neo4j.com/docs/milestone/cypher-refcard

Обратная связь, пожалуйста, на: [email protected]

GitHub: http://github.com/neo4j/neo4j/issues