mongoDB는 Document로 데이터를 관리한다. BSON의 형태로 저장하고, 보통 읽기 쉬운 JSON의 형태로 출력된다.
{
"_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"
}
]
}
JSON의 형태는 일반적으로 key와 value의 값으로 채워져 있다.
직관적이고 간단한 특성으로 쉽게 이해할 수 있는 형태의 표현 방법이다.
JSON 형식으로 도큐먼트를 작성하기 위해서는 다음과 같은 조건을 만족해야 한다.
{}
로 도큐먼트가 시작하고 끝나야 한다.:
콜론으로 분리되어야 하고, 필드와 값을 포함하는 쌍은 쉼표로 나뉘어야 한다.""
쌍따옴표로 감싸준다.BSON은 JSON과 동일한 구조지만 Binary 형태로 변경된 구조를 말한다.
JSON Document를 Binary로 인코딩한 포맷.
JSON의 단점을 해결하기 위한 방안이다.
컴퓨터의 언어에 가까운 2진법에 기반을 둔 표현법이다.
JSON과 비교해서 BSON은 스토리지 공간과 스캔 속도 모두 효율적으로 설계되어 있다.
JSON이 있는데 왜 BSON이 등장한 것일까?
JSON구조의 좋은 점은 그대로 가져가면서 기계가 빠르게 읽을 수 있는 binary 형태로 변경하여 저장을 한 것이다.
JSON | BSON | |
---|---|---|
유형 | 표준 파일 형식 | 이진 파일 형식 |
속도 | 느림 | 빠름 |
공간 | 적은 공간 | 많은 공간 |
용도 | 데이터 전송 | 데이터 저장 |
인코딩&디코딩 기술 | X | 빠른 인코딩, 디코딩 기술 |
특성 | "키":"값" 쌍은 데이터 전송에만 사용됨 | 가볍고, 빠르고 순회 가능 |
구조 | 비동기 서버 브라우저 통신에 사용되는 언어 독립 형식 | 필드 이름, 유형 및 값을 포함하는 정렬된 요소의 목록으로 구성된 이진 JSON. 필드 이름 유형은 일반적으로 문자열. |
순회 | JSON은 모든 콘텐츠를 통해 skims를 건너뛰지 않습니다. | 반면에 BSON은 관련 콘텐츠에 대한 색인만 생성하고 사용하지 않아도 되는 콘텐츠는 모두 건너뜁니다. |
파싱 | JSON은 사람이 읽을 수 있는 형식이므로 파싱할 필요 없음 | BSON은 기계에서 구문 분석하고 생성하기 때문에 파싱이 필요합니다. |
생성 유형 | SON은 객체와 키-값 쌍의 모음인 배열로 구성되며 배열은 정렬된 값 목록입니다. | 이진 인코딩 기술은 문자열 길이 및 객체 하위 유형과 같은 추가 정보로 구성. 또한 BinData 및 Date 데이터 유형은 JSON에서 지원하지 않는 데이터 유형입니다. |