Подтвердить что ты не робот

Сервер Neo4j против Embedded

Я немного смущен тем, что является лучшим решением для моего приложения. Как я уже видел, мне приходится выбирать между автономным автономным (restGraphDatabase) и встроеннойGraphDatabase (база RemoteGraphDatabase еще не используется для производства).

ПОВЫШАЕТСЯ:

- > Различные службы могут получить доступ к базе данных neo4j (пример: у меня есть одна служба, которая отвечает за узлы вида A, B и C. Вторая служба отвечает за узлы D и H и может подключать D-узлы к A -nodes). Таким образом, у меня есть чистые структуры домена. Каждая служба несет ответственность только за свои собственные узлы домена. Я могу обновить каждую службу и не закрывать все приложение.

- > Я могу получить доступ к базе данных neo4j с разных языков (PHP)

Против: - Производительность не так хороша, как EmbeddedGraphDatabase (так как сервер neo4j и службы находятся на одной машине, латентность не такая большая). - Без транзакций

Мои вопросы: Это хорошее решение для работы с автономным сервером? Или я должен использовать встроенный и переместить сервисы в большой? Возможно ли запустить большое (сложное) приложение без поддержки транзакций?

4b9b3361

Ответ 1

Вы правы, что производительность с сервером REST будет меньше. Однако вы можете иметь что-то вроде транзакций с сервером REST, используя пакетные операции; см. http://docs.neo4j.org/chunked/milestone/rest-api-batch-ops.html. Вы также можете создавать серверные плагины для домена, которые выполняют транзакционную логику на стороне сервера: http://docs.neo4j.org/chunked/milestone/server-extending.html.

Если ваша архитектура требует, чтобы вы имели доступ к базе данных с нескольких клиентских машин, вашими опциями являются только сервер REST или Neo4j HA (высокая доступность). HA доступен только с лицензией Neo4j Enterprise.

Пусть архитектура приложения сообщает, какие инструменты используются, а не наоборот. Если вы уже решили, что ваше приложение лучше всего как отдельные службы, не объединяйте их в один, чтобы поддерживать базовую модель сохранения. Я ничего не знаю о вашем приложении, но из вашего описания я бы выбрал сервер REST и использовал пакеты или серверные плагины.

Ответ 2

Все зависит от вашего прецедента. Вы уже указали некоторые из профи и con.

Другим профи для сервера является веб-админ/визуализация.

У вас есть еще несколько вариантов. Вы можете иметь встроенный графический интерфейс для высокой производительности и иметь только некоторые сервисы, внедренные, и использовать настраиваемый, удаленный центр (REST или иначе) API для предоставления базы данных графиков для других служб.

То же самое можно достичь с помощью сервера Neo4j и добавить некоторые из наиболее важных для производительности сервисов как Server-Plugins или Extensions, которые также могут предоставить пользовательский удаленный API, который лучше подходит для ваших прецедентов.

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

В REST-API есть одна транзакция за запрос, для более крупных операций в API существует