Neo4j Server vs. Embedded
Je suis un peu confus au sujet de ce qui est la meilleure solution pour mon application. Comme je l'ai vu jusqu'à présent, j'ai à choisir entre neo4j autonome (RestGraphDatabase) et un EmbeddedGraphDatabase (le RemoteGraphDatabase n'est pas pour une utilisation en production encore).
Pros de REPOS:
-> Différents services peuvent accéder à la neo4j DB (exemple: j'ai un service qui est responsable pour les Nœuds de type A,B et C. Le deuxième service est responsable pour les nœuds D et H et peut se connecter D-nœuds-nœuds). De cette façon j'ai nettoyer les structures de domaine. Chaque service est responsable que de son propre domaine de nœuds. Je peux mettre à jour chaque service et ne pas avoir à l'arrêt de toute mon application.
-> je peux accéder à la neo4j DB à partir de différents langages (PHP)
Contre:
- Le rendement n'est pas bon qu'une EmbeddedGraphDatabase (depuis le neo4j serveur et les services sont sur la même machine le temps de latence n'est pas très grand).
- Pas de transactions
Mes questions:
Est-ce une bonne décision pour aller avec le serveur autonome? Ou dois-je utiliser le imbriqués les uns et mélanger les services dans un big one? Est-il possible d'exécuter un grand (complexe) de l'application sans l'appui de transaction?
source d'informationauteur Alebon
Vous devez vous connecter pour publier un commentaire.
Vous avez raison que la performance avec le RESTE du serveur sera moins. Cependant, vous pouvez avoir quelque chose comme des transactions avec le RESTE du serveur à l'aide des opérations par lots; voir http://docs.neo4j.org/chunked/milestone/rest-api-batch-ops.html. Vous pouvez également créer de domaine spécifique plug-ins de serveur que d'effectuer votre transactionnelle logique côté serveur: http://docs.neo4j.org/chunked/milestone/server-extending.html.
Si votre système nécessite que vous soyez en mesure d'accéder à la base de données à partir de plusieurs ordinateurs clients, vos seules options sont le RESTE de serveur ou de Neo4j HA (Haute Disponibilité). HA est disponible uniquement avec un Neo4j licence d'Entreprise.
Laissez l'architecture de l'application en informer quels sont les outils utilisés, et non pas l'inverse. Si vous avez déjà décidé que votre application est le meilleur des services séparés, ne pas les combiner en un seul juste pour soutenir le sous-jacent de la persistance du modèle. Je ne sais rien au sujet de votre demande, mais à partir de votre description, je choisirais le RESTE de serveur et d'utiliser des lots ou des plug-ins de serveur.
Tout dépend de votre cas d'utilisation. Vous avez déjà une liste de certaines de le pro et con.
Un autre pro pour le serveur, c'est le web-admin /visualisation.
Vous avez quelques options. Vous pouvez avoir un intégré à graphdb pour la haute performance et de n'avoir que quelques services intégrés, et d'utiliser une personnalisée, centrée sur le domaine distant (REPOS ou autre) de l'API pour exposer le graphique de la base de données pour d'autres services.
Le même effet peut être obtenu en utilisant le Neo4j Serveur et ajouter quelques-uns des plus critiques pour les performances des services comme Serveur-Plugins ou Extensions qui sont également en mesure d'exposer une distance personnalisé API qui convient à votre cas d'utilisation probablement mieux.
Je voudrais commencer à utiliser le graphique incorporé db pour le développement de vos services, si vous souhaitez exposer certains points de terminaison à d'autres services plus tard, il est assez facile de passer à la Neo4j serveur.
Dans le RESTE de l'API, il est l'un de la transaction, conformément à la demande, pour des opérations plus importantes, il est un lot de fonctionnement dans l'API.