2016-04-23 4 views
0

УчитываяBest Practices при вставке ребра и вершины

Я вставить Hughe набор данных в Neo4j. В настоящее время я создал методы

а) Вставьте партию узлов

public Task AddNodesAsync<T>(List<T> nodes) 
     { 
      return client.Cypher.Create("(n:" + typeof(T).Name + " {nodes})").WithParams(new 
      { 
       nodes 
      }).ExecuteWithoutResultsAsync(); 
     } 

б) относящиеся 2 Kind узлов

public async Task LinkVertices<TSource, TTarget>(Expression<Func<TSource, TTarget, bool>> join, string relationName) 
    { 
     string sourceName = typeof(TSource).Name; 
     string targetName = typeof(TTarget).Name; 


      await client.Cypher 
       .Match(string.Format("({0}:{0})", sourceName), string.Format("({0}:{0})", targetName)) 
       .Where(join) 
       .Create(string.Format("{0}-[:{2}]->{1}", sourceName, targetName, relationName)) 
       .ExecuteWithoutResultsAsync(); 

    } 

Теперь я называю AddNodesAsync<T> 2 раз, и после этого я называю второй метод для их связывания. Likethis:

AddNodesAsync(Projects); 
AddNodesAsync(myCustomers); 

LinkVertices<Projects,Customer>((project,customer) => project.customerId == customer.id,"projectsOfCustomer"); 

Это прекрасно работает, но я спрашиваю себя, если это хорошее решение. Я вижу, что процесс компоновки очень медленный.

Так что мой вопрос

Что такое рекомендуемый способ для инициализации Neo4j?

Показать Я использую C# Api? Остальные api? Или событие импортера csv? И второй вопрос: есть ли способ вставить обе партии со ссылками за один шаг? Я ожидал, что это будет быстрее.

+1

Объединение обновлений в одну транзакцию приведет к значительному повышению производительности, а также к созданию индексов: Ярлык (свойство) также помогает, когда необходимо найти узел для создания отношения. –

+0

Так что мне просто нужно начать транзакцию? Если я правильно помню, у меня было исключение, что нет разрешения на создание. Хм, может быть, я worng? Можете ли вы привести пример, чтобы я мог проверить, что я сделал по-другому? –

+0

И еще больше нет синтаксиса t ocreate 2 узла со ссылкой в ​​одном commant это? –

ответ

1

Вы должны изучить использование Import tool, если вы хотите быстро импортировать огромное количество данных в новую базу данных neo4j.