Quels sont les cas d'utilisation de Graphique de Bases de données sur l'http://neo4j.org/)?
J'ai utilisé Relationnel est beaucoup et a décidé de s'aventurer sur d'autres types disponibles.
Ce produit semble bon et prometteur: http://neo4j.org/
Quelqu'un a utilisé graphique, les bases de données? Quels sont les avantages et les inconvénients d'une convivialité prespective?
Avez-vous utilisé dans un environnement de production? Quelle est la condition qui vous a incité à utiliser?
- Neo4j est différente utilise aujourd'hui dans des entreprises internationales. Neo Technology a plusieurs livres blancs de l'analyse de chacun de ces usages: 1. De détection de la fraude 2. Recommandations en temps réel et les réseaux sociaux 3. Gestion de centre de données de Plus de détails : bbvaopen4u.com/en/actualidad/...
Vous devez vous connecter pour publier un commentaire.
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.
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.
Nous avons travaillé avec les Néo de l'équipe depuis plus d'un an maintenant et ont été très heureux. Nous avons modèle d'érudition d'artefacts et de leurs relations, qui est sur place pour un graphe db, et d'exécuter des algorithmes de recommandation sur le réseau.
Si vous travaillez déjà en Java, je pense que la modélisation à l'aide de Neo4j est très simple et il a le plus plat /performance la plus rapide pour R/W de toutes les autres solutions que nous avons essayé.
Pour être honnête, j'ai du mal à pas penser en termes de Graphe/Réseau, car il est beaucoup plus simple que la conception de alambiqué structures de la table pour tenir les propriétés des objets et les relations.
Cela étant dit, nous ne stocker de l'information dans MySQL tout simplement parce qu'il est plus facile pour l'Entreprise de côté à l'exécution rapide des requêtes SQL. Pour effectuer les mêmes fonctions avec Neo, nous aurions besoin d'écrire du code que nous n'avons tout simplement pas la bande passante pour l'instant. Dès que l'on ne bien que, je me déplace toutes les données vers le Néo!
Bonne chance.
Deux points:
D'abord, sur les données que j'ai travaillé avec les 5 dernières années dans SQL Server, j'ai récemment frappé l'extensibilité de la paroi avec SQL pour le type de questions que nous devons exécuter (nested relationhsips...vous savez...les graphiques). J'ai été jouer avec neo4j, et mon temps de recherche sont de plusieurs ordres de grandeur plus rapide quand j'ai besoin de ce type de recherche.
Seconde, au point que le graphique de bases de données sont obsolètes. Euh...non. Dès le début, que les gens ont été à essayer de comprendre comment stocker et de recherche de données de manière efficace, ils ont créé et joué avec le graphique de réseau et le style de modèles de base de données. Ces ont été conçus de sorte que le modèle physique reflète la logique du modèle, de sorte que leur efficacité n'était pas si grande. Ce type de structure de données a été bonne pour les données semi-structurées, mais pas aussi bien structuré dense de données. Donc, ce IBM mec nommé Codd a été la recherche de moyens efficaces pour organiser et stocker des données structurées et est venu avec l'idée pour le modèle de base de données relationnelle. Et c'était bon, et les gens étaient heureux.
Qu'avons-nous ici? Deux outils pour deux raisons différentes. Graphique de la base de données de modèles sont de très bonne qualité pour représenter les données semi-structurées et les relations entre les entités (qui peut ou peut ne pas exister). Les bases de données relationnelles sont bons pour les données structurées qui a un très statique schéma, et où rejoindre les profondeurs de ne pas aller très profond. On est bon pour un type de données, l'autre est bon pour les autres types de données.
De pièce de monnaie de la phrase, il n'y a pas de solution miracle. Son très myope-à-dire que le graphe de modèles de base de données de la date et de l'utilisation d'un donne à 40 ans de progrès. C'est comme dire à l'aide de C est de donner à tous les progrès technologiques que nous avons traversé pour obtenir des choses comme Java et C#. Ce n'est pas vrai que l'. C est un outil qui est nécessaire pour certaines tâches. Et Java est un outil pour d'autres tâches.
J'ai été en utilisant MySQL pour les années à gérer les données d'ingénierie, et il a bien fonctionné, mais l'un des problèmes que nous avions (mais ne savais pas que nous avions) est que nous avons toujours eu à planifier le schéma initial. Un autre problème que nous savions que nous avions était de cartographie des données jusqu'à des objets du domaine et à l'arrière.
Maintenant nous avons juste commencé à essayer de neo4j et il semble que c'est la résolution de ces deux problèmes pour nous. La possibilité d'ajouter des propriétés différentes à chaque nœud (et lien) nous a permis de repenser l'ensemble de notre approche à des données. C'est comme dynamique versus statique langages (Ruby rapport à Java), mais pour les bases de données. La construction du modèle de données dans la base de données peut être fait d'une manière beaucoup plus agile et dynamique, et qui est considérablement simplifier notre code.
Et depuis le modèle d'objet du code est généralement une structure graphique, la cartographie de la base de données est également plus simple, avec moins de code et, par conséquent, de moins en moins de bugs.
Et comme un bonus supplémentaire, de notre premier prototype de code pour le chargement de nos données dans neo4j est effectivement plus rapide que la précédente version de MySQL. Je n'ai pas de solides chiffres sur cette (encore), mais c'était une belle fonctionnalité supplémentaire.
Mais à la fin de la journée, le choix devrait probablement être basé principalement sur la nature de votre modèle de domaine. Est-il mieux les cartes de tableaux ou de graphiques? Décider en faisant quelques prototypes, charger les données et de jouer avec elle. Utilisation neoclipse de regarder les différentes vues de données. Une fois que vous avez fait cela, nous espérons que vous connaissez si vous êtes sur une bonne chose ou pas.
Je suis la construction d'un intranet dans mon entreprise.
Je cherche à comprendre comment charger des données qui ont été stockées dans des tables (Oracle, MySQL, SQL Server, Excel, Access, différents des listes aléatoires) et de les charger dans Neo4J, ou un autre graphique de la base de données. Spécialement, ce qui se passe lorsque des données communes chevauchements de données existant déjà dans le système.
Oui, je sais que certaines données sont mieux modélisées dans les SGBDR, mais j'ai cette idée démangeaisons moi, que lorsque vous avez besoin de superposer plusieurs tables distinctes, le modèle des graphes est mieux que la structure de la table.
Par exemple, je travaille dans un environnement de fabrication. Il est un grand projet, nous travaillons sur et en raison de la complexité, chaque ministère a créé une autre feuille de calcul Excel qui a un BOM (Bill Of materials) hiérarchie dans une colonne sur la gauche, puis à plusieurs colonnes de notes et les vérifications effectuées par des personnes qui ont fait de ces feuilles.
Donc l'un des problèmes est la fusion de tous ces notes dans une "vue" de sorte que quelqu'un peut voir de toutes les questions qui doivent être abordées dans une quelconque partie.
Le deuxième problème est que une feuille de calcul Excel aspire à représenter un hierarchial NOMENCLATURE lorsqu'un élément commun est utilisé dans plus d'un sous-ensemble. Ce qui signifie que, si quelqu'un écrit une note au sujet de la P34 relais dans l'inflammation sous-ensemble, la même observation doit être associé à la P34 relais utilisés dans les moteurs de sous-assemblage. Cela ne se produit pas dans la feuille de calcul excel.
Pour l'intranet de l'entreprise, je veux être en mesure de rechercher facilement. Comme les données relatives à un numéro de pièce, une structure de NOMENCLATURE, un numéro de téléphone, une adresse email, une politique de l'entreprise ou de la procédure. Je tiens à même d'étendre cette mesure à gérer le matériel informatique de l'actif, et des logiciels installés.
J'imagine qu'une fois le réseau d'information commence à être rempli, vous pouvez commencer à faire les frais traversals tels que "je veux écrire un e-mail à toutes les personnes travaillant sur le projet XYZ". Les gens auront été associés au projet, parce qu'ils seront étiquetés comme la création et la modification des données au sein du projet XYZ. Ainsi en utilisant le XYZ projet en tant que clé de recherche, un vaste ensemble de tout ce qui concerne le XYZ projet sera créé. Y compris des liens vers les gens qui ont construit le projet XYZ. Les liens de personnes se connectent à leurs adresses e-mail. Par leur implication dans le projet XYZ, ils seront inclus dans mon e-mail. Ceci est en contraste à certaines secrétaire d'essayer de maintenir une liste de personnes à travailler sur le projet. Nous produisons beaucoup de listes. Nous passons beaucoup de temps à maintenir des listes et de s'assurer qu'ils sont à jour. Et surtout ne pas ajouter de la valeur à nos produits.
Un autre cool traversée pourrait faire un rapport tous les ordinateurs qui ont un certain morceau de logiciel installé, en version. Ce rapport pourrait être utilisé pour générer des tâches pour supprimer les copies supplémentaires de l'ancien logiciel et mettre à jour les personnes qui ont besoin de disposer de la dernière copie. Il serait également utile pour la licence de suivi.
Voici un bon article qui parle des besoins non relationnelles, bases de données de remplissage: http://www.readwriteweb.com/enterprise/2009/02/is-the-relational-database-doomed.php
Il fait un bon travail de montrer (à part le nom) que les bases de données relationnelles ne sont pas défectueux ou de mauvaise, c'est juste que ces jours, les gens commencent de plus en plus de données dans le courant dominant de logiciels et de sites web, et que les bases de données relationnelles simplement pas à l'échelle de ces besoins.
peut-être un peu tard, mais il y a un nombre croissant de projets à l'aide de Neo4j, les plus connus, répertoriés à l' Neo4j . Aussi NeoTechnology, la société derrière Neo4j, a quelques références à leurs clients page
Note: je suis partie de la Neo4j de l'équipe