Я пытаюсь использовать Neo4j для построения MDM. Я просто пытаюсь смоделировать нашу клиентскую базу данных с некоторыми свойствами, такими как электронная почта, номер документа, адрес, телефон, мобильный телефон и так далее.Использование Neo4j для создания главного управления данными
Проблема в том, что наша база данных слишком грязная. Например, у меня есть пользователи с таким же номером documentNumber (это похоже на ssn.). И когда я смотрю на эти реестры, я вижу, что они на самом деле одни и те же люди.
Для поиска картины через отношения мне нужно дедуплировать/очистить записи. Но я боюсь потерять информацию, когда делюдирую записи.
Первый подход:
<customer>
<name>Maria da Silva</name>
<document>108518037-92</document>
<phone>
<areaCode>21</areaCode>
<number>2247223A<number>
<phone>
</customer>
<customer>
<name>Maria da S.</name>
<document>10851803792</document>
<phone>
<areaCode>21</areaCode>
<number>2247-2236<number>
<phone>
</customer>
Так я мог бы хранить график (с помощью "шифровать" язык)
person1:Person {name:"Maria da Silva", document:"108518037-92"}
phone1:Phone {areaCode:"21", number:"2247223A"}
person1-[owns]->phone1
person2:Person {name:"Maria da S", document:"10851803792"}
phone2:Phone {areaCode:"21", number:"2247-2236"}
person2-[owns]->phone2
И тогда я мог бы создать нормированные/очищенные узлы:
person_mdm:PersonMdm {name:"MARIA DA SILVA", document:"10851803792"} // now i have to choose a name
phone_mdm:PhoneMdm {areaCode:"21", number:"22472236"} // and choose a phone too
, а затем связать исходные узлы с нормализованным узлы:
person_mdm-[references]->person1
person_mdm-[references]->person2
phone_mdm-[references]->phone1
phone_mdm-[references]->phone2
person_mdm-[owns]->phone_mdm
Второй подход
магазин котрой узлы со списком свойств, проведение хэшей. Эти хэши ссылается на запись в другой базе данных (MongoDB, например):
person_mdm:PersonMdm {name:"MARIA DA SILVA", document:"10851803792", hash:[XXX, YYY]}
phone_mdm:PhoneMdm {areaCode:"21", number:"22472236", hash: [ZZZ, KKK]}
person_mdm-[owns]->phone_mdm
Первый подход:
(+) Его простой в реализации по сравнению второго подхода
(+) Я буду иметь все узлы в одной базе данных
(-) Число узлов взрыва
(-) Запрашивает более сложный
Второй подход:
(+) Это чистый и простой запрос
(-) Информация MDM хранятся в двух различных баз данных (техническое обслуживание)
(-) Необходимо поддерживать две отдельные базы данных