2014-12-03 17 views
5

MongoDB'de ObjectIDs 12 bayt olduğunu biliyorum. Ve biliyorum ki numbers 64-bit. Ama nasıl http://bsonspec.org/spec.html bir kaydedilmiş stringMongoDB'de bir dize türünün boyutu

+0

db.test.findOne(). String_fielsd.length; – Disposer

+2

@Disposer: OP, * length * dizgesinin * size * boyutunu * soruyor. Birçok dize uygulaması ayrıca dizenin uzunluğunu saklar ve boş bir sonlandırıcı ekleyebilir veya eklemeyebilir. Üstelik, dizgenin * kendisi * uzunluğu ve boyutu ASCII'de aynı şey olsa da, kesinlikle UTF-8'de değildir, bkz. Http://en.wikipedia.org/wiki/UTF-8. Örneğin, "ä", 'length' 1 değerine sahiptir, ancak depolamak için iki bayt gerektirir (' 0xC3A4'). – mnemosyn

cevap

5

BSON şartnamenin boyutunu öğrenebilirim iyi bir başlangıç ​​noktasıdır. Özellikle

, bu BSON JavaScript 64 bit kayan noktalı sayılar kullanır olmasına rağmen, hatta varsayılan 32 bitlik tamsayılar olmak üzere sahip tamsayı tiplerini, yaptığı gerçekleştirmek için önemli - MongoDB JavaScript'i çok kullanır, ancak kodlu kodludur ve farklı türlerde vardır. Gerçek tamsayıların varlığı oldukça önemlidir, aksi halde çok sayıda $inc çalışmayacaktır.

Sorunuzu yanıtlamak için: dizeler, sıfır sonlandırıcı ve ön tarafında 32 bit uzunluğa sahip UTF-8 kodlanmış dizeler, artı 1 bayt tipi gösterge ve öğe adı olarak kaydedilir. Nesnelerin ek yükü olduğunu unutmayın.

+1

_- "Nesnelerin ek yüke sahip olduğunu unutmayın." _ ... Seni burada anladığımdan emin değilim. Bunu detaylandırır mısınız? =) –

+1

BSON spesifikasyonlarında görebildiğiniz gibi, belgenin kendisi, bayt cinsinden toplam uzunluk, bir e_list ve sıfır sonlandırıcıdan oluşur. “E_list”, her biri bir tip göstergesi, eleman adı ve gerçek verisi olan bir öğeye sahip olan elemanların listesidir. Gömülü bir belge, kendi başına bir öğe olacaktır, bu nedenle yuvalama, boyutu (doğal olarak) artıracaktır. Ayrıca, belgeler sadece doldurma faktörü tarafından değil, aynı zamanda bayt cinsinden büyüklüğünün 16 katı (sürüm ve işletim sistemine bağlı olabilir) olacak şekilde doldurulacaktır. – mnemosyn

İlgili konular