Pregunta

es codificado en Base64 BSON menor BSON entonces?

¿Fue útil?

Solución

derecho de Piskvor, codificado en base 64, cualquier cosa es más largo que en bruto. Usted base 64 a codificar algo para lo consigue por un canal con un repertorio limitado de caracteres, no como un medio para reducir el tamaño.

Tal vez la pregunta debería ser:? BSON codificado en base 64 es más pequeña entonces JSON

Si es así, JSON-vs-BSON es en gran medida depende del contenido. Por ejemplo arbitraria números de punto flotante como 1.2345678901234567 se almacenan de manera más eficiente en 8 bytes binarios en BSON que la versión JSON cadena de dígitos. Pero los números más comunes como, por ejemplo, 1, se almacenan mucho más eficiente como cadenas en JSON.

Para los valores de cadena, BSON pierde 4 bytes para una longitud de palabra, pero se pone un poco hacia atrás para cada " y \ JSON tiene que escapar, y más en cadenas con caracteres de control, donde JSON tiene que utilizar una secuencia hexadecimal. (Algunos codificadores JSON también \u-escapan cada carácter no ASCII para garantizar la transmisión segura sin tener en cuenta el conjunto de caracteres.)

IMO: BSON no tiene una gran ventaja sobre la compacidad JSON en general. Sus mentiras más fuerza en la simplicidad de la decodificación en un lenguaje de bajo nivel, además de los tipos de datos no tiene JavaScript. Puede tener ventajas marginales de cadenas binarias y algunos otros casos; es sin duda vale la pena mirar para una determinada carga de trabajo. Pero se dice que los ejemplos en la especificación BSON sí son considerablemente más pequeños en JSON.

En cuanto a codificación base64 BSON:. El mismo, excepto 33% peor

Otros consejos

No: con base64, 3 bytes de texto plano se convierten 4 bytes de texto codificada, por lo tanto, el resultado siempre será más grande, no importa lo que la carga útil de datos es. Véase también: http://en.wikipedia.org/wiki/Base64

acaba de escribir esto como mi soolution a BSON shortify Por favor, compruebe, que puede ayudarle a:

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;
  } 
}

TEST

//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);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top