Пакетная вставка 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 однозначно рекомендует иметь размер партии порядка десятков.
Если вы хотите вставить много данных в вашем случае, вы должны сделать это с помощью регулярных или асинхронных операторов.