Quantcast
Browsing latest articles
Browse All 10 View Live

来自:匿名

你这篇文章的标题应该叫<> $ node > var bson = require(“./bson.js”) undefined > bson.encode({a:12}) 7 <Buffer 0c 00 00 00 10 61 00 0c 00 00 00 00> > bson.encode({a:’12′}) 10 <Buffer 0f 00 00...

View Article


来自:Iammutex

我使用的是进入mongo客户端后的Object.bsonsize函数来计算bson对象长度。不清楚你的测试结果是使用的哪一个bson库。

View Article


来自:Zang MingJie

bson存储一个字符串需要 n+5 = 长度(4字节) + 字符串(n字节) + (1字节) mongo内部, 所有数字都是用long存储, 所以单个数字是8字节 你比较一下 {“a”:NumberInt(12)} 与 {“a”:”12″} 的大小试试

View Article

来自:Zang MingJie

关于第三部分, 数据变大后会不会移动, 是由Padding Factor控制的, 具体参考 http://www.mongodb.org/display/DOCS/Padding+Factor

View Article

来自:Iammutex

首先mongodb内部的数字分三种类型,int32,int64和double(也是64位的) 然后你这个比对是有问题的,计算{a:1}战用体积的时候,有两种计算情况。一种是它就是整个对象(比如单独计算{a:1}对象的大小)。另一种是它是多个属性中的一个属性(比如计算{b:1}对象变成{b:1,a:1}后增加的长度)。 比如整个对象就是{a:12},它占用长度应该是12字节,其bson结构如下:...

View Article


来自:Iammutex

嗯,padding factor的影响是大家都知道的,我这里说的是由于MongoDB内部的内存对齐导致的额外空间消耗,这块在文档里应该没有提及到。

View Article

来自:Zang MingJie

我用的是mingo 2.0.2 你错在这些地方: 1. mongo内部存储数字使用的都是long, 不会用int的 2. 除去通用的type使用的空间, string需要额外5字节, int, long都不需要额外的空间, 所以 int = 4 < 2字节string = 7 < long = 8 人人都会犯错误, 希望写文章之前能仔细研究一下, 尽量少犯错

View Article

来自:Iammutex

嗯,又仔细看了BSON的实现,确实当时没看全,string类型本身确实会在前面再存储一个4字节的string长度,加上最后一个,一共5字节开销。这个我确实整错了。 错的最主要的原因是在做测试的时候使用了mongo客户端去计算,mongo客户端使用的是int64类型做表示数字的。8字节大于5+2字节了。...

View Article


来自:Gemor Gemor

f5 已经关闭了。分享图表赶快去了吧。

View Article


来自:zabery

Mongo Shell 支持的javascript语言,js只支持double,但是MongoDB是支持int32,int64和double,所以如果使用其他驱动开发的话,存入的数据数字类型可以是int32,但是在Mongo Shell中都是double型的

View Article
Browsing latest articles
Browse All 10 View Live