2017-08-29 115 views

回答

3

由于Aerospike具有创纪录的水平锁定,每个写入Aerospike的记录都将记录为单个记录。没有看到如何在一次操作中写入一百万条记录。基于其设置名称和记录密钥的散列,给定名称空间的记录均匀分布在整个Aerospike群集中。所以从客户端写入Aerospike集群必须是单独的记录写入。

+0

想要更深入地了解服务器端的并行性,请阅读Ronen的关于Aerospike内部结构的链接。 – pgupta

3

Aerospike是一个多节点,多核,多线程的分布式键值数据库。如果你想在尽可能短的时间内完成大量的写操作,你需要利用这个事实,并行写你的写操作。正如Piyush所指出的那样,每个对象本身都是作为一个单独写入的,所以你应该把你的工作分解到这些客户端中的多个客户端和多个线程。这就是如何工具如aerospike/aerospike-loaderasrestore工作。

我已经描述过它是如何在一个单独的帖子中的每个节点内工作的关于Aerospike internals

+0

谢谢@ronen,我只使用一个客户端连接,当我试图循环播放请求我得到下面的错误: {AerospikeError:最大节点/事件循环BB993AA892C9B0E异步连接将被超过:300 消息:'最大节点/事件循环BB993AA892C9B0E异步连接将被超过:300' , 代码:-7, FUNC: 'as_event_get_connection', 文件: 'SRC /主/塞/ as_event.c', 线:447} – Vikalp

+0

即300 number是并行异步操作的最大数量。它通过设置客户端的[Config.maxConnsPerNode](http://www.aerospike.com/apidocs/nodejs/Config.html)进行控制。如果你只使用一个客户端连接,你将在客户端而不是服务器端进行限制。与集群可用于执行这些写入操作的核心和线程数量相比,来自一个线程的异步仍然有限。 –