创建 mongodb collection 时牢记硬盘存储的最佳做法
Best practices for creating mongodb collection keeping hard disc storage in mind
我是 mongodb 的新手,想了解在创建任何 collection 之前要遵循的最佳做法,同时牢记硬盘存储。示例 - 我有一个名为 "users" 的 collection,它存储以下文档键,或者我可以存储像
这样的数据
users: {name: "abc", address: "xyz", isActive: true}
或
users: {n: "abc", add: "xyz", isa: true}
基本上在第二种情况下存储别名。
我的问题是:
- 存储别名是否有助于最小化数据库的硬盘存储?如果是,那么如何?
- isActive(或isa)的数据类型会不会影响数据库的硬盘存储,所以如果bool占用更大的大小,我可以选择string或int来存储isActive信息。
- 是的,使用别名有助于最小化数据库大小。
你可以很容易地看到这一点:
> db.lg.insert({name: "abc", address: "xyz", isActive: true})
> db.sm.insert({n: "abc", add: "xyz", isa: true})
> db.lg.stats()
{
"ns" : "test.lg",
"size" : 64,
"count" : 1,
"avgObjSize" : 64,
"storageSize" : 16384,
... }
> db.sm.stats()
"ns" : "test.sm",
"size" : 52,
"count" : 1,
"avgObjSize" : 52,
"storageSize" : 4096,
... }
如您所见,带别名的文档比带全密钥的文档小 12 位。
- 当然,数据类型会影响存储类型。 MongoDB 使用BSON 来存储数据。
例如:
- 将 isa 存储为布尔值:
{isa: true}
文档大小 = 28 位
- 将 isa 存储为字符串:
{isa: "true"}
文档大小 = 36 位
- 将 isa 存储为双精度:
{isa: 1 }
文档大小 = 35 位
此处提供数据类型大小列表http://bsonspec.org/spec.html
我是 mongodb 的新手,想了解在创建任何 collection 之前要遵循的最佳做法,同时牢记硬盘存储。示例 - 我有一个名为 "users" 的 collection,它存储以下文档键,或者我可以存储像
这样的数据users: {name: "abc", address: "xyz", isActive: true}
或
users: {n: "abc", add: "xyz", isa: true}
基本上在第二种情况下存储别名。
我的问题是:
- 存储别名是否有助于最小化数据库的硬盘存储?如果是,那么如何?
- isActive(或isa)的数据类型会不会影响数据库的硬盘存储,所以如果bool占用更大的大小,我可以选择string或int来存储isActive信息。
- 是的,使用别名有助于最小化数据库大小。
你可以很容易地看到这一点:
> db.lg.insert({name: "abc", address: "xyz", isActive: true})
> db.sm.insert({n: "abc", add: "xyz", isa: true})
> db.lg.stats()
{
"ns" : "test.lg",
"size" : 64,
"count" : 1,
"avgObjSize" : 64,
"storageSize" : 16384,
... }
> db.sm.stats()
"ns" : "test.sm",
"size" : 52,
"count" : 1,
"avgObjSize" : 52,
"storageSize" : 4096,
... }
如您所见,带别名的文档比带全密钥的文档小 12 位。
- 当然,数据类型会影响存储类型。 MongoDB 使用BSON 来存储数据。
例如:
- 将 isa 存储为布尔值:
{isa: true}
文档大小 = 28 位 - 将 isa 存储为字符串:
{isa: "true"}
文档大小 = 36 位 - 将 isa 存储为双精度:
{isa: 1 }
文档大小 = 35 位
此处提供数据类型大小列表http://bsonspec.org/spec.html