我有一个用Scala编写的小脚本,用于加载具有100,000,000个样本记录的MongoDB实例.我们的想法是让数据库全部加载,然后进行一些性能测试(并在必要时调整/重新加载).
问题是每100,000个记录的加载时间相当线性增加.在我的加载过程开始时,只需4秒即可加载这些记录.现在,在接近6,000,000条记录中,加载相同数量(100,000)需要300到400秒!那要慢两个数量级!查询仍然很快,但按照这个速度,我永远无法加载我想要的数据量.
如果我用我的所有记录(全部100,000,000!)编写一个文件,然后使用mongoimport导入整个文件,这会更快吗?或者我的期望是否过高而且我使用的数据库超出了应该处理的范围?
有什么想法吗?谢谢!
这是我的脚本:
import java.util.Date
import com.mongodb.casbah.Imports._
import com.mongodb.casbah.commons.MongoDBObject
object MongoPopulateTest {
val ONE_HUNDRED_THOUSAND = 100000
val ONE_MILLION = ONE_HUNDRED_THOUSAND * 10
val random = new scala.util.Random(12345)
val connection = MongoConnection()
val db = connection("mongoVolumeTest")
val collection = db("testData")
val INDEX_KEYS = List("A", "G", "E", "F")
def main(args: Array[String]) {
populateCoacs(ONE_MILLION * 100)
}
def populateCoacs(count: Int) {
println("Creating indexes: " + INDEX_KEYS.mkString(", "))
INDEX_KEYS.map(key => collection.ensureIndex(MongoDBObject(key -> 1)))
println("Adding " + count + " records …Run Code Online (Sandbox Code Playgroud) 过去几个月我一直在学习和工作 MongoDB,现在我对每个文档 16 MB 的最大大小限制感到非常困惑。我只是想知道,这个 16 MB 大小限制是否适用于集合内的单个文档,或者此限制也适用于单个集合。
由于我有一个包含酒店架构的集合,因此我将在其中添加超过 5,00,000 个文档作为酒店信息。
我试图找出每个集合的最大限制,但没有找到一些信息。我真的很欣赏这里的一些亮点。