c#如何在cassandra表中插入大量数据

tkqqtvp1  于 2021-06-10  发布在  Cassandra
关注(0)|答案(1)|浏览(428)

亲爱的,
我正在尝试使用c#应用程序将大约100000行插入cassandra数据库。
为了实现这一点,我使用了nuget:
https://www.nuget.org/packages/cassandracsharpdriver/
我在笔记本电脑(i5,32gbram,windows10)上安装了cassandra。
我的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变量包含在3秒内插入的2000个事件。

var tasks = events.Select(async @event =>
            {
                await mapper.InsertAsync(@event);
            });

            await Task.WhenAll(tasks);

目前,对于2000个事件,此解决方案的性能约为3秒。有没有可能更快地插入数据??

tvokkenx

tvokkenx1#

有几种技术可以用来发送稳定的执行流,同时还可以限制并发级别。
驱动程序存储库中有一个示例:https://github.com/datastax/csharp-driver/blob/master/examples/concurrentexecutions/executeinloop/program.cs
datastax drivers的开发者指南中还有一个主题:https://docs.datastax.com/en/devapp/doc/devapp/drivermanagingconcurrency.html
当并行提交多个请求时,请求将在三个级别之一排队:驱动程序端、网络堆栈或服务器端。任何级别上的过度排队都会影响每个操作完成所需的总时间。调整并发级别或同时请求的数量,以减少排队量并获得高吞吐量和低延迟。

相关问题