Я строю приложение для измерения баз данных NoSQL, и у меня есть проблема с вставкой большого количества данных в базу данных Cassandra.Cassanda пакетная вставка с использованием DataStax C# драйвера
Когда я пытаюсь вставить более 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();
}
Может кто-нибудь объяснить мне, что Я делаю не так? Спасибо, П.
Что находится внутри этого 'AggregateException'? И вы уверены, что хотите объединить> 1000 строк вместе? Это ваш реальный случай использования? Пакеты, как правило, медленные и лучше избегать, если это возможно, но это еще одна проблема. – kha
@kha Да, я уверен. Итак, какой способ вставить большую коллекцию (около 1000000 записей) в базу данных Cassandra так быстро, как это возможно? – Pointless
Пакет Cassandra не подразумевает многопоточность (или скорость). Вы сбиваете с толку инструкцию SQL вставки SQL с пакетом c *. Пакеты C * предназначены для воспроизведения «транзакций» (здесь слово здесь свободно, так как это не означает то же, что и SQL). Они определенно не то же самое. Если вы хотите вставить большие коллекции в cassandra, в вашем драйвере есть различные шаблоны асинхронного выполнения, которые вы могли бы использовать. – kha