ANNOUNCEMENTVoyage AI joins MongoDB to power more accurate and trustworthy AI applications on Atlas. Learn more >
NEWSLearn why MongoDB was named a leader in the 2024 Gartner® Magic Quadrant™ Read the report >
NEWMongoDB 8.0: Experience unmatched speed and performance. Check it out >

JSON é um formato de troca de dados amplamente utilizado e popular entre muitos aplicativos e pilhas de tecnologia. BSON, a representação binária do JSON, é usado principalmente internamente pelo MongoDB para armazenamento eficiente e passagem de dados.


Índice

O que é notação de objetos em JavaScript?

JSON, ou JavaScript Object Notação, é um formato legível por humanos para troca de dados, introduzida no início dos anos 2000. Embora o JSON seja baseado em um subconjunto do padrão da linguagem de programação JavaScript, ele é completamente independente de linguagem.

JSON JSON objects são contêineres associativos container, em que uma string chave de string é mapeada para um value (que pode ser um número, string string , boolean, matriz, um valor vazia — null, ou até mesmo outro objeto). Quase todas as linguagens de programação têm suporte para essa estrutura de dados abstrato — objetos em JavaScript, dicionários em Python, tabelas de hash em Java e C#, matrizes associativas em C++ e assim por diante.


Como são os dados JSON?

JSON Os objetos JSON são estruturados em formatos legíveis por humanos, que também são fáceis para as aplicações lerem.

{
  "_id": 1,
  "name": { "first" : "John", "last" : "Backus" },
  "contribs": [ "Fortran", "ALGOL", "Backus-Naur Form", "FP" ],
  "awards": [
    {
      "award": "W.W. McDowell Award",
      "year": 1967,
      "by": "IEEE Computer Society"
    }, {
      "award": "Draper Prize",
      "year": 1993,
      "by": "National Academy of Engineering"
    }
  ]
}

Observe que o JSON arquivo JSON consiste em pares de valores-chave separados por vírgula e os pares de chave e valor são indicadores de dois pontos (:). O objeto JSON (documento) começa e termina com chaves. Você pode usar qualquer um dos tipos de dados suportados. O exemplo acima mostra strings (entre double aspas), números e matrizes (dentro de colchetes).

À medida que JavaScript se tornou a linguagem principal para desenvolvimento Web, o JSON começou a ganhar vida própria. Por ser legível por humanos e por máquina, e relativamente simples de implementar suporte em outras linguagens, o JSON passou rapidamente para além da página da web e para o software em todos os lugares.

Hoje, o JSONJSON aparece em muitos casos diferentes:API - API - Arquivos de configuração - Mensagens de log - Armazenamento de banco de dados

A conexão MongoDB-JSON

O MongoDB foi projetado desde seu início para ser um banco de dados de dados focado em proporcionar uma ótima experiência de desenvolvimento. A onipresença do JSON tornou-o a escolha óbvia para representar estruturas de dados no modelo de dados de documento do MongoDB.

É mais fácil criar aplicativos usando pilhas de tecnologia como MEAN e MERN, como os desenvolvedores podem usar uma única linguagem de programação (JavaScript) de ponta a ponta.

No entanto, há vários problemas que tornam o JSON menos do que ideal para uso dentro de um banco de dados de dados .

  1. JSON oferece suporte apenas a um número limitado de tipos de dados básicos. O mais notável é que o JSON não tem suporte para dados de data e hora e binários.

  2. Os objetos e propriedades JSON não têm comprimento fixo, o que torna o trânsito mais lento.

  3. O JSON não fornece metadados e informações de tipo, demorando mais para recuperar documentos.

Para tornar o MongoDB JSON o MongoDB JSONprimeiro, mas ainda de alto desempenho e propósito geral, o BSON foi inventadoBSON The Gap para preencher The Gap : uma representação binária para armazenar dados como JSON documentos JSON, otimizados para velocidade, espaço e eficiência. Não é diferente de outros formatos de troca binária, como Protocol buffers, ou Thift, em termos de abordagem.

Documento JSON binário

BSON significa “JSON binário“ e é exatamente para isso que foi inventado. Um arquivo BSON é uma representação binária do arquivo JSON correspondente. O formato de serialização codificado em binário do BSON também codifica informações de tipo e comprimento, o que permite que eles sejam percorridas muito mais rapidamente em comparação com o JSON.

O BSON adiciona alguns tipos de dados adicionais (não nativos JSON), como datas e dados binários, sem os quais o MongoDB teria perdido um suporte valioso.


Arquivos BSON

A seguir estão alguns exemplo de objetos JSON e suas representações JSON binário correspondentes.

{"hello": "world"} →
\x16\x00\x00\x00           // total document size
\x02                       // 0x02 = type String
hello\x00                  // field name
\x06\x00\x00\x00world\x00  // field value
\x00                       // 0x00 = type EOO ('end of object')
 
{"BSON": ["awesome", 5.05, 1986]} →
\x31\x00\x00\x00
 \x04BSON\x00
 \x26\x00\x00\x00
 \x02\x30\x00\x08\x00\x00\x00awesome\x00
 \x01\x31\x00\x33\x33\x33\x33\x33\x33\x14\x40
 \x10\x32\x00\xc2\x07\x00\x00
 \x00
 \x00

você pode saber mais sobre a BSON gramática BSON na especificação doBSON BSON.

O MongoDB usa BSON ou JSON?

O MongoDB armazena dados no formato BSON internamente e pela rede. Qualquer coisa que você possa representar em JSON JSON pode ser armazenada nativamente MongoDB JSONno MongoDB e recuperado com a mesma facilidade em JSON .


An image describing how MongoDB converts json data to bson data.

Ao usar o driver do MongoDB para sua linguagem de programação favorita, você trabalha com as estruturas de dados nativas para essa linguagem. Seu aplicação precisa converter a estrutura de dados nativa (por exemplo, um objeto JavaScript ou PoJo) para JSON. O driver do MongoDB se encarrega de converter os dados de JSON para BSON e vice-versa ao consultar o banco de dados de dados .

Ao contrário dos sistemas que armazenam JSON como valores codificados por string ou blobs codificados em binário, o MongoDB usa BSON para oferecer recursos poderosos de indexação e consulta, no formato de dados mais popular da Web.

Por exemplo, o MongoDB permite que os desenvolvedores consultem e manipulem objetos por chaves específicas dentro do documento JSON/BSON , mesmo em documentos aninhados com muitas camadas de profundidade em um registro, e criem índices de alto desempenho sobre as mesmas chaves e valores.

Em primeiro lugar, os arquivos BSON podem conter objetos de data e hora ou binários que não são nativamente representativos em JSON puro.

Em segundo lugar, cada linguagem de programação tem sua própria semântica de objeto . JSON Os objetos JSON têm chaves ordenadas, por exemplo, enquanto os Python dicionários Python (a estrutura de dados nativa mais próxima que é análoga aos JavaScript objetos JavaScript) são não ordenados, enquanto diferenças nos tipos de dados numéricos e strings string também podem entrar em ação. Em terceiro lugar, o BSON oferece suporte a uma variedade de tipos numéricos que não são nativos do JSON e muitas linguagens os representam de forma diferente.


EJSON

EJSON ou JSON estendido é um JSON- maneira compatível de representar valores BSON no MongoDB. Como o JSON oferece suporte apenas a um subconjunto dos tipos suportados por BSON, o MongoDB adiciona determinadas extensões ao formato JSON, a saber, modo modo. O MongoDB fornece métodos como serialize, desserialize, análise e stringifique para EJSON.


Parse JSON

Quando um aplicação grava ou atualiza dados no MongoDB usando o shell, API ou MongoDB Atlas, os dados são analisados no formato BSON pelo driver do MongoDB . A análise envolve identificar e interpretar os objetos JavaScript ou estrutura JSON, mapear cada campo para o tipo de dados BSON correto e converter os valores. Quando um aplicação solicita dados do MongoDB, o driver converte os dados em string JSON antes de enviá-los através do servidor.

Consulte a documentação do driver para garantir que você entenda a melhor forma de acessar os dados do MongoDB BSON no seu idioma.

JSON x BSON

JSONBSON
EncodingUTF-8 stringBinary
Data SupportString, boolean, number, array, object, nullString, boolean, number (integer, float, long, decimal128...), array, null, date, BinData
ReadabilityHuman and machineMachine only

JSON BSON JSON e BSON são de fato primos próximos por design. O BSON foi projetado como uma representação binária de dados JSON, com extensões específicas para aplicações mais amplas e otimizadas para armazenamento e passagem de dados. Assim como o JSON, o BSON suporta a incorporação de objetos e matrizes.

Uma maneira específica na qual o BSON difere do JSON é no suporte para alguns tipos de dados mais avançados. O JSON não diferencia, por exemplo, entre números inteiros (que são números inteiros) e números de ponto flutuante (que têm precisão digital em vários níveis).

A maioria das linguagens de programação do lado do servidor tem tipos numéricos mais sofisticados (os padrões incluem número inteiro de ponto flutuante de precisão regular — também conhecido como “float” — ponto flutuante de precisão duas vezes — também conhecido como “double Double ” — e valores booleanos), cada um com seu próprio uso ideal para operações matemáticas eficientes.

Flexibilidade de esquema e governança de dados

Um dos grandes atrativos para desenvolvedores que utilizam bancos JSON BSON de dados com modelos de dados JSON e BSON é o esquema dinâmico e flexível que eles fornecem quando comparado com os modelos de dados rígidos e tabulares usados pelo relational banco de dados relational database.

Em primeiro lugar, osMongoDB documentos relational database do MongoDB são polimórficos — os campos podem variar de documento para documento dentro de uma única coleção (análogo às tabelas em um banco de banco de dados relacional ). Essa flexibilidade facilita modelar dados de qualquer estrutura e adaptar o modelo à medida que os requisitos mudam.

Em segundo lugar, não há necessidade de declarado a estrutura dos documentos para o banco de dados de dados — os documentos são autodescritos. Os desenvolvedores podem começar a gravar código e manter objetos à medida que são criados.

Em terceiro lugar, se um novo campo precisar ser adicionado a um documento, ele poderá ser criado sem afetar todos os outros documentos na coleção, sem atualizar um catálogo do sistema central e sem colocar o banco de dados de dados offline. Quando você precisa fazer alterações no modelo de dados, o banco de banco de dados de documento continua armazenando os objetos atualizados sem a necessidade de realizar operações Além disso, o esquema do zero.

Por meio dessas vantagens, a flexibilidade do modelo de dados de documento é adequada às demandas das práticas modernas de desenvolvimento de aplicação .

Embora um esquema flexível seja um recurso poderoso, há situações em que você pode querer mais controle sobre a estrutura de dados e o conteúdo de seus documentos. A maioria dos bancos de dados de documento envia a aplicação desses controles ao desenvolvedor para implementar no código do aplicação . No entanto, bancos de dados de documento mais avançados fornecem validação de esquema, utilizando abordagens como o JSON schema padrão de esquema IETF JSON adota do MongoDB MongoDB. Experimente o MongoDB Atlas Online agora mesmo!

Perguntas frequentes

Como converter BSON para JSON

Você pode usar as ferramentas JSON on-line para converter entre BSON e JSON. O MongoDB também fornece a bsondump ferramenta para converter BSON em JSON.

Por que usar BSON em vez de JSON?

BSON oferece as seguintes vantagens sobre JSON: - BSON suporta mais tipos de dados, como data, hora e dados binários.

  • A estrutura binária do BSON permite passagem e recuperação de dados mais rápidas.

  • O BSON fornece metadados adicionais, como informações de comprimento e tipo, tornando assim as pesquisas mais rápidas.

O que é o formato BSON JSON?

BSON é a serialização codificada em binário de dados JSON. Embora a string JSON seja legível por humanos, o BSON precisa ser analisado. O BSON oferece os benefícios adicionais de ter mais tipos de dados, ser leve e acionável e armazenar dados de forma mais eficiente. Também é eficiente para codificar e decodificar com muitas linguagens de programação.