使用 DataStax c# 驱动程序的 Cassandra 批量插入

Cassandra batch insert using DataStax c# driver

我正在构建应用程序来衡量 NoSQL 数据库的性能,但我在向 Cassandra 数据库中批量插入大量数据时遇到了问题。

当我尝试使用 DataStax C# 驱动程序批量插入超过 1000 条记录时,我收到 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();
}

有人可以向我解释我做错了什么吗?

在 Cassandra 中没有为批量加载创建批处理语句,在 C# faq Datastax 中明确建议将批处理大小设置为数十个。

如果您想在您的案例中插入大量数据,您应该regular or async statements这样做。