O que é BSON e exatamente como ele é diferente de JSON?

158

Estou apenas começando com o MongoDB e uma das coisas que notei é que ele usa o BSON para armazenar dados internamente. No entanto, a documentação não é exatamente clara sobre o que é o BSON e como é usado no MongoDB. Alguém pode me explicar, por favor?

Akshat Jiwan Sharma
fonte
Oi Ivan, consulte este link, ele contém uma comparação profunda entre JSON e BSON Referência: educba.com/json-vs-bson
Nuwa
@Nuwa Ivan não fez a pergunta, que era Akshat
UuDdLrLrSs 04/02

Respostas:

155

BSON é a codificação binária de documentos do tipo JSON que o MongoDB usa ao armazenar documentos em coleções. Ele adiciona suporte para tipos de dados como Data e binário que não são suportados no JSON.

Na prática, você não precisa saber muito sobre o BSON ao trabalhar com o MongoDB, basta usar os tipos nativos da sua linguagem e os tipos fornecidos (por exemplo, ObjectId) de seu driver ao construir documentos e eles serão mapeados no tipo BSON apropriado pelo driver.

JohnnyHK
fonte
2
Portanto, se o mongoDb armazena documentos como bson, qual é o tipo retornado quando consultamos o banco de dados? Eles são retornados como json? Ou bson é retornado como está?
Akshat Jiwan Sharma
13
Não, o driver MongoDB para o seu idioma cuida da conversão do documento em tipos de dados apropriados para o seu idioma. Os tipos de dados nativos são usados ​​o máximo possível.
JohnnyHK
2
Isso significa que, se eu recuperar dados do documento BSON usando Javascript , não obterá nenhuma diferença de tipo de dados como obterá quando recuperar usando C / C ++, ou seja, os números serão tratados como números inteiros se não tiverem decimal?
abhisekp
1
@abhisekp com base na explicação de JohnnyHK e na minha experiência recente, acho que o que você disse é verdade.
Nxmohamad 3/10
O BSON retornará o tipo de dados exato do campo da coluna? Ou devolvê-lo como String para todos os tipos?
MRhNs13
45
  • O que é o BSON ?

    BSON [bee · sahn], abreviação de JSON binário, é uma serialização codificada em binário de documentos semelhantes a JSON.

  • Qual a diferença do JSON ?

    O BSON foi projetado para ser eficiente no espaço, mas em alguns casos não é muito mais eficiente que o JSON. Em alguns casos, o BSON usa ainda mais espaço que o JSON. A razão para isso é outro dos objetivos do projeto BSON: capacidade de travessia. O BSON adiciona algumas informações "extras" aos documentos, como comprimento de strings e subobjetos. Isso torna a travessia mais rápida.

    O BSON também foi projetado para ser rápido na codificação e decodificação. Por exemplo, números inteiros são armazenados como números inteiros de 32 (ou 64) bits, portanto, eles não precisam ser analisados ​​para e do texto. Isso usa mais espaço que JSON para números inteiros pequenos, mas é muito mais rápido para analisar.

    Além da compacidade, o BSON adiciona tipos de dados adicionais indisponíveis no JSON, principalmente os tipos de dados BinData e Date .

Fonte: http://bsonspec.org/

Mehdi Raash
fonte
é o mesmo que o tipo de dados jsonb, que significa dados JSON binários, decompostos no postgresql?
PirateApp
13

O MongoDB representa documentos JSON em formato codificado em binário chamado BSON nos bastidores. O BSON estende o modelo JSON para fornecer tipos de dados adicionais e ser eficiente para codificação e decodificação em diferentes idiomas.

codergirl22
fonte
12

O MongoDB representa documentos JSON em formato codificado em binário, por isso chamamos de BSON nos bastidores .

O BSON estende o modelo JSON para fornecer tipos de dados adicionais, como Data e binário que não são suportados no JSON, também fornecem campos ordenados para que seja eficiente para codificação e decodificação em diferentes idiomas. 

Em outras palavras, podemos dizer que   BSON é apenas JSON binário  (um superconjunto de JSON com mais alguns tipos de dados, mais importante ainda, matriz de bytes binários).

O Mongodb usando como formato de serialização de JSON inclui com formato de codificação para armazenar e acessar documentos . simplesmente podemos dizer que o BSON é um formato codificado binário para dados JSON.

para obter mais artigos sobre o mongoDB: https://om9x.com/blog/bson-vs-json/

Avinash Maurya
fonte
a ligação é interrompida
PlsWork
5

Ao usar a codificação BSON no topo do JSON, o MongoDB obtém a capacidade de criar índices sobre os valores que residem dentro do documento JSON no formato bruto. Isso ajuda na execução de consultas analíticas eficientes, pois o sistema NoSQL era conhecido por não ter suporte para índices.

Anupam Mahapatra
fonte
1

Este artigo relativamente curto fornece uma boa explicação sobre o BSON e o JSON: ele fala sobre alguns dos problemas com o JSON, por que o BSON foi inventado, quais problemas ele resolve em comparação com o JSON e como isso pode beneficiá-lo.

https://www.compose.com/articles/from-json-to-bson-and-back/

No meu caso de uso, esse artigo me disse que serializar para JSON funcionaria para mim e eu não precisava serializar para BSON

Cabelo do cachorro
fonte