Уважаемые,
Я пытаюсь вставить около 100 000 строк в базу данных Cassandra с помощью приложения C #.
Для достижения этой цели я использую nuget:
https://www.nuget.org/packages/CassandraCSharpDriver/
Я установил Cassandra локально на моем ноутбуке (i5, 32 ГБ ОЗУ, Windows 10).
Настройки моего Cassandra по умолчанию:
var cluster = Cluster.Builder()
.AddContactPoints(CassandraContactPoint)
.WithPort(CassandraPort)
.WithLoadBalancingPolicy(new DCAwareRoundRobinPolicy("datacenter1"))
.WithAuthProvider(new PlainTextAuthProvider(UserName, Password))
.Build();
Таблица Cassandraвыглядит следующим образом:
session.Execute("DROP KEYSPACE IF EXISTS eventstore");
session.Execute("CREATE KEYSPACE eventstoreWITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', 'datacenter1' : 1 };");
session.Execute(@"
CREATE TABLE IF NOT EXISTS eventstore.Event(
Id uuid,
Data text,
Version int,
AgregateId uuid,
EventIdentity uuid,
Date timestamp,
PRIMARY KEY (AgregateId,Version)
) WITH CLUSTERING ORDER BY (Version ASC)");
Для вставки событий я использую следующий код:
переменная events содержит 2000 событий, которые вставляются за 3 секунды.
var tasks = events.Select(async @event =>
{
await mapper.InsertAsync(@event);
});
await Task.WhenAll(tasks);
На данный момент производительность этого решения составляет около 3 секунд для 2000 событий. Можно быстрее вставить данные ??