并行数据库请求从Node.js SDK到Couchbase

我希望能够在短时间内向Couchbase商店发出几个Get请求,比如在半毫秒内。

我不能使用multiGet,因为我没有同时拥有所有的密钥。

但是,如果我很快发出了几个单独的获取请求,我相信他们将一次处理一个,如http://docs.couchbase.com/couchbase-devguide-2.5/index.html#retrieving-多键 。

我可能做的一件事情是在启动时为每个Get请求创build一个单独的Connection对象,但是我没有看到在任何地方推荐这个最佳实践。

这样的工作,即允许我快速并行获取并且是推荐的事情吗?

不要单独build立连接,我不build议。 它只会增加数据库的额外负载。 您可以为其他数据库添加连接,但不能为相同的数据库添加连接。

你有几个select:

  1. 多次请求你知道一些键。 正如你所说,这可能不能很好地扩展。 我build议你试试看,看看它是如何发展的,因为它是最容易实现的。 如果它匹配的要求,然后使用这个。 幸运的是,在Node.js中,请求实际上是asynchronous的,所以它们实际上是并行的,而且文档的重点是非asynchronous的编程语言,所以它可能不是那么糟糕。 但数据库将不得不做额外的工作。 有了这个解决scheme,您可以获得最短的延迟来获取单个关键值。

  2. 如果所有按键的时间间隔都是半毫秒(实际上是很短的时间!),那么等待他们都来了,并提出批量请求。 确保你的半个毫秒在重负载下不会变成200毫秒! 如果总是那么短,那么这将是一个更好的解决scheme。

  3. build立一个队列并使用混合方法。 如果上述build议在所有情况下都不能正常工作,您可以尝试:无论何时需要密钥,都可以推送到队列中。 按时间间隔检查队列并将队列中的密钥一起取出并清除队列。 时间间隔可以是5ms或10ms甚至更多。 取决于键速度有多快,你需要多快。 您已经在不同的设置下testing了这个重负载的解决scheme,以便很好地调整它。 有了这个,你可以得到一个单一的键值的结果,而且也不会给数据库带来额外的负担。