【发布时间】:2017-12-08 16:48:05
【问题描述】:
我对 Mongo 完全陌生,因此决定尝试使用我现在存储在 MySQL 中的日期集。我从一个表开始,现在结果是文档集合。
每个文档大约有 30 个属性,每个属性通常是一个短字符串。所以在 MySQL 中我有 varchar 字段,而在 Mongo 中它只是 BSON。
当我发现我在 Mongo 中获得的数据库大小几乎是 mysql innodb 的 7 倍时,我真的很惊讶。对于 1,500,000 条记录/文档,它在 MySQL 中约为 350 Mb,在 Monbo 中约为 2.3 Gb,因为它存储了每条数据的属性名称。
有没有办法提出“模式”并规范化数据以减小数据库大小?
更新:
我使用 MongoDB 3.4,由于 db.serverstatus().storageEngine.name 是 mmapv1,我想我使用 MMap。
示例文档:
{
"_id" : ObjectId("595c4f4342ce99299c19c379"),
"someNumber" : "11420",
"companyDataFromSource1" : {
"lolNumber" : "11420",
"businessName" : "Feather mighty shop Inc",
"businessOwner" : "",
"businessHealthCode" : "Q",
"realUpdateDate" : "13-OCt-16",
"someNumericInfo" : "10000",
"yearWhenItHappened" : "2014",
"moreDate" : "22-Jan-02",
"anotherStatus" : "DE",
"numValue1" : "1",
"numValue2" : "1",
"someProp" : "E",
"anotherProp" : "R",
"street" : "BB251 Database St",
"city" : "Denver",
"state" : "CO",
"zip" : "12345",
"country" : "US",
"anotherStreet" : "TT251 Server St",
"anotherCity" : "Sratford",
"anotherState" : "WI",
"anotherZip" : "54484",
"anotherCountry" : "US",
"telephone" : "(123) 481-2222",
"fax" : "",
"emailAddress" : "qwwqwwqeewe@hotmail.com",
}
}
db.collecion('collection').stats 结果:
{
"ns" : "db.collection",
"size" : 1507059792.0,
"count" : 1495099,
"avgObjSize" : 1008,
"numExtents" : 19,
"storageSize" : 1580150784.0,
"lastExtentSize" : 415174656.0,
"paddingFactor" : 1.0,
"paddingFactorNote" : "paddingFactor is unused and unmaintained in 3.0. It remains hard coded to 1.0 for compatibility only.",
"userFlags" : 1,
"capped" : false,
"nindexes" : 1,
"totalIndexSize" : 60518752,
"indexSizes" : {
"_id_" : 60518752
},
"ok" : 1.0
}
【问题讨论】:
-
你的 mongodb 版本是什么?您使用的是哪个引擎(WiredTiger、MMap、...?)压缩级别是多少?您能否提供您收藏的示例文档以及
db.collection.stats()命令的输出? -
@fellix 我已经更新了问题
标签: mongodb