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

Poi*_*ess 2 c# cassandra batch-insert datastax

我正在构建应用程序以测量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; }
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

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();
}
Run Code Online (Sandbox Code Playgroud)

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

Wil*_*ill 8

批处理语句不用于Cassandra中的批量加载,在C#faq中,数据表明确建议批量大小为数十.

如果要在您的情况下插入大量数据,应该使用常规语句或异步语句来执行此操作.

  • 加上我的一份。使用批处理语句背后的“原因”是使用 Cassandra 的新开发人员最常见的困惑点之一。它是为了原子性,*不是*性能。 (2认同)