2015-06-04 2 views
1

Я закончил создание моей базы данных Mongo. Он сделан на двух сборниках:Преобразование MongoDB с двумя коллекциями в графике neo4j

1. team 
2. coach 

Я приведу вам пример из документов, содержащихся в этих коллекциях:

Вот команда документ:

{ 
    "_id" : "Mil.74", 
    "official_name" : "Associazione Calcio Milan S.p.A", 
    "common_name" : "Milan", 
    "country" : "Italy", 
    "started_by" : { 
     "day" : 16, 
     "month" : 12, 
     "year" : 1899 
    }, 
    "stadium" : { 
     "name" : "Giuseppe Meazza", 
     "capacity" : 81277 
    }, 
    "palmarès" : { 
     "Serie A" : 18, 
     "Serie B" : 2, 
     "Coppa Italia" : 5, 
     "Supercoppa Italiana" : 6, 
     "UEFA Champions League" : 7, 
     "UEFA Super Cup" : 5, 
     "Cup Winners cup" : 2, 
     "UEFA Intercontinental cup" : 4 
    }, 
    "uniform" : "black and red" 
} 

Это тренер документ:

{ 
    "_id" : ObjectId("556cec3b9262ab4f14165fcd"), 
    "name" : "Carlo", 
    "surname" : "Ancelotti", 
    "age" : 55, 
    "date_Of_birth" : { 
     "day" : 10, 
     "month" : 6, 
     "year" : 1959 
    }, 
    "place_Of_birth" : "Reggiolo", 
    "nationality" : "Italian", 
    "preferred_formation" : "4-2-3-1", 
    "coached_Team" : [ 
     { 
      "team_id" : "RMa.103", 
      "in_charge" : { 
       "from" : "26/june/2013", 
       "to" : "25/may/2015" 
      }, 
      "matches" : 119 
     }, 
     { 
      "team_id" : "PSG.00", 
      "in_charge" : { 
       "from" : "30/dec/2011", 
       "to" : "24/june/2013" 
      }, 
      "matches" : 77 
     }, 
     { 
      "team_id" : "Che.11", 
      "in_charge" : { 
       "from" : "01/july/2009", 
       "to" : "22/may/2011" 
      }, 
      "matches" : 109 
     }, 
     { 
      "team_id" : "Mil.74", 
      "in_charge" : { 
       "from" : "07/nov/2001", 
       "to" : "31/may/2009" 
      }, 
      "matches" : 420 
     } 
    ] 

Как вы можете видеть, я использовал стандартизованную модель: каждый тренер имеет множество тренированных команд. Я хочу, чтобы преобразовать эту базу данных Mongo в базу данных графа, в частности Neo4j; моя цель - показать, что в этих высокосвязных областях neo4j имеет лучшую производительность, чем Mongo (Например, запрос: «Найти palmarès всех команд, тренированных Carlo Ancelotti, в mongo требует два запроса, вместо этого в neo4j достаточно следовать отношениям).
Я нашел this guide на форуме, который использует Gremlin преобразовать коллекцию Монго документов в Neo4j графа автоматически.
проблема заключается в том, что руководство говорит о только одной коллекции.
Итак, можно генерировать автоматически диаграмму neo4j, начиная с моей базы данных mongo (с двумя коллекциями), или мне нужно создать график «вручную»?

ответ

1

Gremlin - это язык, специфичный для домена, для работы с графиками, но он основан на Groovy, поэтому вы эффективно получаете всю гибкость, которую хотите действительно делать независимо от того, что хотите. Другими словами, что вы можете сделать с одной коллекцией MongoDB, которую вы можете легко сделать с двумя (или сколько у вас много коллекций). Это была точка блога ссылка в одном из других answers:

http://thinkaurelius.com/2013/02/04/polyglot-persistence-and-query-with-gremlin/

Gremlin является отличным языком для преобразования данных в виде графиков, независимо от его формата источника. Я бы подумал, что вы сначала загрузите все свои команды в виде вершин, а затем перейдете через своих тренеров, создав вершины тренера и края к своим родственным командам по ходу.

Я бы также добавил, что ничего не происходит «автоматически» о Гремлине. Не похоже, чтобы вы сказали Гремлину, что у вас есть данные в MongoDB, и он превращает его в график. Вы должны написать Gremlin, чтобы рассказать, как вы хотите, чтобы ваши данные MongoDB превратились в график.

+0

Хорошо, спасибо за ваш ответ. Я думал, что Гремлин создает график из mongo -.- Итак, если я создаю график, используя neo4j v2.2.2 или используя Gremlin, каковы различия? – DistribuzioneGaussiana

+0

Ну, я думаю, вы понимаете на этом этапе, что в любом случае вам придется написать код для построения своего графика независимо от того, какой инструмент вы используете для этого. Я не знаю никаких специальных инструментов для Neo4j, которые упрощают чтение данных из mongodb. Так что в значительной степени вам придется писать код java против API-интерфейса neo4j или, возможно, массировать ваши данные mongo во что-то, что может импортировать cypher (т. Е. Csv). С помощью gremlin вы делаете то же самое (например, пишите программу), но из сообщения в блоге я надеюсь, что вы можете увидеть интуитивно понятный шаблон разработки. –

+0

Вы правы. Хорошо, я постараюсь использовать Гремлина. У меня была проблема, и я открыл новую тему. Вы можете взглянуть? Благодарю. – DistribuzioneGaussiana

 Смежные вопросы

  • Нет связанных вопросов^_^