Мне бы очень хотелось, чтобы больше моих коллег-разработчиков 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».
Поздравляем! Все настроено и готово для создания нашего приложения. Во второй части этой серии я расскажу о настройке модульных тестов и создании базового приложения с использованием базы данных графов в качестве бэкэнда.