使用 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这样做。
我正在构建应用程序来衡量 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这样做。