2016-04-13 5 views
1

Je construis une base de données principale pour stocker toutes les informations pertinentes sur nos clients. J'utilise Neo4j.Gestion des données de base à l'aide de la base de données graphique

Voici un échantillon de notre modèle. Nous avons Person, qui peut être enregistré dans 3 de nos applications mobiles. (App.01, App. 02, App. 03 - Nous utilisons la clé CPF, c'est comme un SSN). Dans ces applications, l'utilisateur peut être enregistré avec un email. Donc, il est représenté par Email entité. Ces utilisateurs peuvent avoir plusieurs adresses représentées par l'entité Address.

Master data from John user

La question est: Comme je suis la construction d'un Master Data, l'OMI, si quelqu'un interroge la base de données de mdm demander toutes les informations « meilleur » d'une personne, je reviendrais par exemple: Nom: John meilleur email: mail2 (parce qu'il a deux applications qui l'utilisent) d'adresse Best: addr1 (car il a des applications de remorquage à l'aide de celui-ci)

Je vais construire une heuristis pour définir ce qui est l'e-mail « meilleur » et adresse.

A cet effet, j'ai quelques options:

  1. je pourrais créer un bord John-email2 et addr1. Donc, il sera facile pour un utilisateur de MDM d'obtenir la "meilleure" adresse/email de John.

  2. Je pourrais créer un point de terminaison d'API de repos et créer cette heuristique dans le temps de la requête.

Est-ce que quelqu'un a de l'expérience en utilisant la base de données de graphes ou la base de données MDM de conception? Est-ce une bonne approche?

Cette question est un complément de la question: Using Neo4j to build a Master Data Management

+0

Si vous avez le contrôle des applications, alors pourquoi avoir différentes adresses e-mail? –

Répondre

0

approche 1 ajouterait beaucoup d'informations essentiellement redondantes (sur les relations 2N supplémentaires, où N est le nombre de personnes), et nécessitent également un codage plus complexe gérer les modifications apportées aux applications d'une personne. Et, comme toujours lorsque les informations sont stockées de manière redondante, vous devez veiller particulièrement à ce que les incohérences ne s'introduisent pas. Mais, cela devrait être plus rapide lorsque vous recherchez les «meilleures» informations de contact. L'approche 2 maintient le DB de la même taille, mais nécessite une requête plus complexe et plus lente pour obtenir les «meilleures» informations de contact. Toutefois, la modification des applications et des informations de contact d'une personne est simple.

Pour décider quelle approche utiliser, vous devez déterminer si la taille de la base de données est un problème, et également examiner vos cas d'utilisation et la fréquence à laquelle ils seront exécutés.

Voici une heuristique simple si la taille de la base de données n'est pas un problème. Supposons que G est la fréquence à laquelle vous devez obtenir les «meilleures» informations de contact d'une personne, et M est la fréquence à laquelle vous devez modifier les applications ou les informations de contact d'une personne. Vous devez choisir l'approche 1 si la valeur de G/M dépasse une certaine valeur de seuil, K, que vous devez prendre en compte, en tenant compte des considérations ci-dessus.