我正在使用外部服务(服务)来处理某些特定类型的对象.如果我以10个批次发送对象,则服务运行得更快.我目前的架构如下.生产者一个接一个地广播对象,一群消费者从队列中拉出它们(一个接一个)并将它们发送给服务.这显然不是最理想的.
我不想修改生产者代码,因为它可以在不同的情况下使用.我可以修改消费者代码,但只能增加额外的复杂性.我也知道这个prefetch_count选项,但我认为它只适用于网络级别 - 客户端库(pika)不允许在消费者回调中同时获取多个消息.
那么,RabbitMQ可以在将消息发送给消费者之前创建批量消息吗?我正在寻找像"一次消费n条消息"这样的选项.
我有一个名为MongoDB的集合post与3500万级的对象.该集合有两个二级索引,定义如下.
> db.post.getIndexKeys()
[
{
"_id" : 1
},
{
"namespace" : 1,
"domain" : 1,
"post_id" : 1
},
{
"namespace" : 1,
"post_time" : 1,
"tags" : 1 // this is an array field
}
]
Run Code Online (Sandbox Code Playgroud)
我希望以下查询,只需过滤namespace和post_time,在合理的时间内运行而不扫描所有对象.
>db.post.find({post_time: {"$gte" : ISODate("2013-04-09T00:00:00Z"), "$lt" : ISODate("2013-04-09T01:00:00Z")}, namespace: "my_namespace"}).count()
7408
Run Code Online (Sandbox Code Playgroud)
然而,MongoDB需要至少十分钟来检索结果,奇怪的是,它设法根据功能扫描7000万个对象来完成工作explain.
> db.post.find({post_time: {"$gte" : ISODate("2013-04-09T00:00:00Z"), "$lt" : ISODate("2013-04-09T01:00:00Z")}, namespace: "my_namespace"}).explain()
{
"cursor" : "BtreeCursor namespace_1_post_time_1_tags_1",
"isMultiKey" : true, …Run Code Online (Sandbox Code Playgroud) 我知道Mrjob使用Hadoop Streaming.我也知道有一个插件可以将MongoDB与Hadoop Streaming一起使用.但是,我找不到任何将两者结合在一起的例子.
这(至少在理论上)是否可能?如果是这样,是否有相关的示例或教程?请注意,我愿意扩展Mrjob库甚至回到Boto.
是否有用于对齐任意大字母序列的工具/库?
市场上几乎所有的序列比对工具都集中在生物序列(核苷酸或肽)上.然而,在我的例子中,序列由数百个不同的元素组成,它们不能编码为ASCII字符串.所以,我需要一个工具或库,它可以简单地对齐两个(或更多)整数数组.