Статьи

Настройка разработки для Neo4j и PHP: Часть 1

Мне бы очень хотелось, чтобы больше моих коллег-разработчиков PHP говорили, играли и создавали потрясающие приложения поверх графовых баз данных. Они действительно являются мощным решением для хранения данных, которое хорошо вписывается в самые разные области.

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

Все описанные ниже шаги были выполнены в Ubuntu 10.10 Maverick, но их легко перенести на любую другую ОС.

Возьмите компоненты

Есть несколько библиотек и программных средств, необходимых для проекта. Прежде всего, нам нужно установить нашу среду программирования, в частности PHP, PHPUnit и Java. Как это сделать, зависит от вашей операционной системы. Моя установка — PHP 5.3, PHPUnit 3.6 и Sun Java 6.

Далее нам нужно получить Neo4j. Загрузите последний архив с http://neo4j.org/download . Я обычно иду с последней версией выпуска (1.5.M02 в это время).

> cd ~/Downloads
> wget http://dist.neo4j.org/neo4j-community-1.5.M02-unix.tar.gz

Рекомендуется сбрасывать базу данных вашего модульного тестирования перед каждым запуском теста. В SQL легко удалить все таблицы или удалить все данные. Эта возможность не встроена в Neo4j, поэтому нам нужно получить специальный плагин для сервера, который делает это:

> wget http://github.com/downloads/jexp/neo4j-clean-remote-db-addon/test-delete-db-extension-1.4.jar

Наконец, нам понадобится клиентская библиотека Neo4j PHP. Я рекомендую Neo4jPHP (отказ от ответственности: я автор), и все примеры кода в Части 2 используют его. Не стесняйтесь, чтобы найти другой или свернуть свой собственный.

>wget http://github.com/downloads/jadell/Neo4jPHP/neo4jphp.phar

 

Настройте экземпляр разработки

Можно поместить данные тестирования и разработки в один и тот же экземпляр базы данных, но я предпочитаю решение с двумя базами данных, даже при использовании базы данных SQL. Я делаю это потому, что 1) мне не нужно беспокоиться о случайном удалении любых данных разработки, которые меня интересуют, и 2) мне не нужно беспокоиться о запросах и обходах в моих модульных тестах, случайно получающих данные разработки, и т. Д. наоборот.

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

Сначала создайте точку для хранения обоих экземпляров neo4j и распакуйте экземпляр разработки:

> mkdir -p ~/neo4j
> cd ~/neo4j
> tar -xvzf ~/Downloads/neo4j-community-1.5.M02-unix.tar.gz
> mv neo4j-community-1.5.M02 dev

Затем настройте сервер, отредактировав файл «~ / neo4j / dev / conf / neo4j-server.properties». Убедитесь, что сервер находится на порту 7474

org.neo4j.server.webserver.port=7474

Если вы будете обращаться к экземпляру базы данных с хоста, отличного от localhost, раскомментируйте следующую строку:

org.neo4j.server.webserver.address=0.0.0.0

Сохраните конфиг и выйдите. Теперь пришло время запустить экземпляр.

> ~/neo4j/dev/bin/neo4j start

Вы должны быть в состоянии перейти к панели Neo4j Webadmin: http: // localhost: 7474 / webadmin / #

Настройте экземпляр тестирования

 

Распакуйте тестовый экземпляр:

> cd ~/neo4j
> tar -xvzf ~/Downloads/neo4j-community-1.5.M02-unix.tar.gz
> mv neo4j-community-1.5.M02 test

Затем настройте сервер, отредактировав файл «~ / neo4j / test / conf / neo4j-server.properties». Убедитесь, что сервер находится на порту 7475 (обратите внимание, что это порт, отличный от экземпляра разработки!)

org.neo4j.server.webserver.port=7475

Если вы будете обращаться к экземпляру базы данных с хоста, отличного от localhost, раскомментируйте следующую строку:

org.neo4j.server.webserver.address=0.0.0.0

Добавьте следующие строки в раздел JAXRS внизу файла:

org.neo4j.server.thirdparty_jaxrs_classes=org.neo4j.server.extension.test.delete=/db/data/cleandb
org.neo4j.server.thirdparty.delete.key=secret-key

Вы можете изменить «секретный ключ» на любой, какой пожелаете. Сохраните конфиг и выйдите.

Нам нужно еще одно изменение, чтобы отличить тестирование от экземпляра разработки. Отредактируйте файл «~ / neo4j / test / conf / neo4j-wrapper.properties» и измените строку имени экземпляра:

wrapper.name=neo4j-test

Сохранить и выйти. Теперь нам нужно установить плагин, который позволит нам сбросить базу данных через REST-клиент.

> cp ~/Downloads/test-delete-db-extension-1.4.jar ~/neo4j/test/plugins

Запустите экземпляр.

> ~/neo4j/test/bin/neo4j start

Вы должны иметь возможность перейти к панели Neo4j Webadmin: http: // localhost: 7475 / webadmin / #

Протестировать расширение удаленной очистки, перейдя на вкладку «Консоль» Webadmin, нажав «HTTP» и введя следующее:

DELETE /db/data/cleandb/secret-key

«Секретный ключ» должен быть тем, что вы ввели в конфигурационном файле сервера. Если все работает, вы должны увидеть ответ «200 OK».

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