J'ai utilisé un graphique de la base de données dans un emploi précédent. Nous n'étions pas à l'aide de neo4j, c'était une chose la maison construite sur le toit de Berkeley DB, mais il a été similaire. Il a été utilisé dans la production (c'est toujours).
La raison nous avons utilisé un graphique de la base de données a été que les données stockées par le système et les opérations que le système était en train de faire avec les données ont été exactement le point faible de bases de données relationnelles et ont exactement la forte place de graphique de bases de données. Le système a besoin de stocker des collections d'objets que l'absence d'un schéma fixe et sont liés par des relations. Pour raisonner sur les données, le système a besoin de faire beaucoup d'opérations qui seraient un couple de traversals dans un graphique de la base de données, mais qui serait assez complexe requêtes en SQL.
Les principaux avantages du modèle des graphes ont été le développement rapide de temps et de souplesse. Nous pourrions ajouter rapidement de nouvelles fonctionnalités sans impact sur les déploiements existants. Si un client potentiel voulu pour importer certains de leurs propres données et de la greffe sur le dessus de notre modèle, il peut généralement être effectué sur place par le représentant des ventes. La flexibilité a également aidé lors de la conception d'une nouvelle fonctionnalité, nous sauver de tenter de tirer de nouvelles données dans un modèle de données rigide.
Avoir un bizarre de la base de données permettez-nous de construire un grand nombre de nos étranges technologies, nous donnant beaucoup de secret de sauce de distinguer nos produits de ceux de nos concurrents.
Le principal inconvénient était que nous n'étions pas à l'aide de la base de données relationnelle standard de la technologie, qui peut être un problème lorsque vos clients sont enterprisey. Nos clients nous demandent pourquoi nous nous ne pouvions pas accueillir nos données sur leurs géant Oracle clusters (nos clients ont souvent eu de grands centres de données). L'un de l'équipe a en fait réécriture de la couche de base de données pour utiliser Oracle (ou PostgreSQL ou MySQL), mais il est un peu plus lent que l'original. Au moins une grande entreprise, même s'il avait un Oracle seulement politique, mais heureusement, Oracle a acheté Berkeley DB. Nous avons également eu à écrire beaucoup d'outils supplémentaires - nous ne pouvions pas utiliser Crystal Reports pour exemple.
L'autre inconvénient de notre graphe de la base de données a été que nous avons construit nous-mêmes, ce qui signifiait que lorsque nous sommes arrivés à un problème (en général avec de l'évolutivité) nous avons dû nous résoudre à nous-mêmes. Si nous avions utilisé une base de données relationnelle, le vendeur aurait déjà résolu le problème il y a dix ans.
Si vous êtes à la création d'un produit pour enterprisey clients et de vos données s'inscrit dans le modèle relationnel, l'utilisation d'une base de données relationnelle si vous le pouvez. Si votre demande ne correspond pas au modèle relationnel, mais il ne fit le modèle des graphes, un graphique de la base de données. Si elle ne correspond à quelque chose d'autre, utilisez-le.
Si votre application n'a pas besoin de s'insérer dans le courant blub de l'architecture, de l'utilisation d'un graphe de base de données, ou CouchDB, ou de BigTable, ou que ce soit adapté à votre application et vous pensez que c'est cool. Il peut vous donner un avantage, et son plaisir à essayer de nouvelles choses.
Tout ce que vous avez choisi, essayez de ne pas construire le moteur de base de données vous-même, sauf si vous avez vraiment comme la construction de moteurs de base de données.