Пакетная вставка Cassandra с использованием драйвера DataStax C#

Я создаю приложение для измерения производительности баз данных NoSQL, и у меня проблема с пакетной вставкой большого объема данных в базу данных Cassandra.

Когда я пытаюсь пакетно вставить более 1000 записей, используя драйвер DataStax C#, я получаю AggregateException.

Это моя модель данных:

    public Guid Id { get; set; }
    public string Title { get; set; }
    public string Description { get; set; }
    public int Year { get; set; }
    public string Genres { get; set; }
    public int Rating { get; set; }
    public string OriginalLanguage { get; set; }
    public string ProductionCountry { get; set; }
    public int VotingsNumber { get; set; }

И это мой код:

private string InsertData(ISession session, List<Movie> moviesList)
{
        var table = session.GetTable<Movie>();
        table.CreateIfNotExists();

        var batch = session.CreateBatch();
        foreach (var record in moviesList) 
        {
            batch.Append(table.Insert(record)); 
        }

        Stopwatch watch = new Stopwatch();

        watch.Start();
        batch.Execute();
        watch.Stop();

        return watch.ElapsedMilliseconds.ToString();
}

Может кто-нибудь объяснить мне, что я делаю не так?

1 ответ

Решение

Пакетные операторы не предназначены для массовой загрузки в Cassandra, в C# faq Datastax однозначно рекомендует иметь размер партии порядка десятков.

Если вы хотите вставить много данных в вашем случае, вы должны сделать это с помощью регулярных или асинхронных операторов.

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