Лучшие практики при вставке ребер и вершин

Дано

Я должен вставить огромный набор данных в neo4j. В настоящее время я создал методы для

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

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

б) Родственные 2 Вид узлов

 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 раза и после этого я вызываю второй метод, чтобы связать их. Как это:

AddNodesAsync(Projects);
AddNodesAsync(myCustomers);

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

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

Итак, мой вопрос

Каков рекомендуемый способ инициализации neo4j?

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

1 ответ

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

Другие вопросы по тегам