質問

base64はbsonよりも小さいbsonですか?

役に立ちましたか?

解決

Piskvorの右、base64エンコードされたanyは生より長いものです。あなたは、サイズを縮小する手段としてではなく、限られたキャラクターのレパートリーでチャンネルを下ろすために何かをベースでエンコードします。

おそらく問題は次のとおりです。 JSON?

もしそうなら、JSON-VS-BSONはコンテンツに大きく依存しています。たとえば、任意の浮動小数点数 1.2345678901234567 JSON String Digitバージョンよりも、BSONの8バイナリバイトでより効率的に保存されます。しかし、たとえばのようなより一般的な数字 1, 、JSONの文字列としてはるかに効率的に保存されています。

文字列値の場合、BSONは長さの単語に対して4バイトを失いますが、すべてを取り戻す "\ JSONは逃げなければならず、さらに、JSONが16進シーケンスを使用する必要があるコントロール文字を含む文字列でさらに多くを使用する必要があります。 (一部のJSONエンコーダーも \u-ASCII以外のすべてのキャラクターを設立して、文字セットに関係なく安全な伝送を確保しています。)

IMO:BSONは、一般的にJSONよりも大きなコンパクトさの利点を持っていません。その強さは、低レベルの言語でのデコードのシンプルさに加えて、JavaScriptが持っていないデータ型にあります。バイナリ文字列や他のいくつかのケースに限界的な利点があります。確かに特定のワークロードをチェックする価値があります。しかし、BSON仕様自体の例はJSONではかなり小さくなっていることを示しています。

Base64エンコードBSONについて:同じですが、33%が悪いことを除きます。

他のヒント

いいえ:base64では、3バイトのプレーンテキストがエンコードされたテキストの4バイトになるため、データペイロードが何であれ、結果は常に大きくなります。参照: http://en.wikipedia.org/wiki/base64

BSONを略奪するための私のSOOLUTIONとしてこれを書いただけで、チェックしてください、それはあなたを助けることができます:

var bsonShortify = {
  encode:function(bson){
    return this._hex2urlBase(bson.substr(0,bson.length/2))+this._hex2urlBase(bson.substr(bson.length/2,bson.length/2));
  },
  decode:function(token){
    return this._urlBase2hex(token.substr(0,token.length/2))+this._urlBase2hex(token.substr(token.length/2,token.length/2));
  },
  _base:62,
  _baseChars:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",
  _urlBase2hex:function(token){
    var s = 0, n, l = (n = token.split("")).length, i = 0;
    while(l--) s += this._baseChars.indexOf(n[i++]) * Math.pow(this._base, l);
    return s.toString(16);
  },
  _hex2urlBase:function(bson){
    var s = "", n = parseInt(bson,16);
    while(n) s = this._baseChars[n % this._base] + s, n = Math.floor(n / this._base);
    return s;
  } 
}

テスト

//we have bson
var bson = '4f907f7e53a58f4313000028';
//let's encode it
var urlstring = bsonShortify.encode(bson) // = OqAYQdCHijCDMbRg
//let's decode urlstring
var decoded_bson = bsonShortify.decode(urlstring); // = 4f907f7e53a58f4313000028

console.log('bson',bson);
console.log('urlstring',urlstring);
console.log('decoded_bson',decoded_bson);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top