gpt4 book ai didi

MongoDB:存储染色体/位置最有效的方法是什么

转载 作者:可可西里 更新时间:2023-11-01 09:47:22 24 4
gpt4 key购买 nike

我想使用 MongoDB 存储一些基因组位置(染色体、位置)。

类似于:

{
chrom:"chr2",
position:100,
name:"rs25"
}

我希望能够快速找到给定段(chrom,[posStart - posEnd])中的所有记录。最好使用什么 key/_id

一个 chrom ,位置对象?

db.snps.save({_id:{chrom:"chr2",position:100},name:"rs25"})

填充字符串 ?

db.snps.save({_id:"chr02:00000000100",chrom:"chr2",position:100,name:"rs25"})

在 chrom 和位置上带有索引的自动生成的 ID?

db.snps.save({chrom:"chr2",position:100,name:"rs25"})

其他 ?

???

感谢您的建议

皮埃尔

PS:(这个问题在 biostar 上交叉发布:http://biostar.stackexchange.com/questions/2519)

最佳答案

我相信双列索引将提供最快的访问路径,因为它将是最紧凑的索引。

但是,它将是一个额外的索引(因为您已经有了 _id 索引,但您没有使用它),所以前两个选项很好,因为它们消除了额外的索引。

填充的字符串比复杂对象的解决方案更短,更短意味着更少的内存使用,因此扫描速度更快。如果不可能进行展平/填充,我只会选择复杂的对象。此外,由于复杂的对象键需要编码到索引中(其他索引不是这种情况),因此请选择较短的键名(c 和 p)。

所以,我会选择两列索引(如果您不介意“浪费”id 索引)或填充字符串。你甚至可以去填充二进制(在编码整数时节省几个字节),但这可能不值得这么麻烦。

关于MongoDB:存储染色体/位置最有效的方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3740112/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com