๋ณธ๋ฌธ์œผ๋กœ ๋ฐ”๋กœ๊ฐ€๊ธฐ

 

JavaScript Object Notation

  • ๋ฐ์ดํ„ฐ ํ‘œํ˜„ ๋ฐฉ๋ฒ•, ๋ฐ์ดํ„ฐ ๊ตํ™˜ ํฌ๋งท์ด๋‹ค. ์ฃผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
  • ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๊ฐ„ ๋น„๋™๊ธฐ ํ†ต์‹ ์— ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค.
  • ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ์ „์†กํ•  ๋•Œ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค.
  • key, value ์Œ์œผ๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค.
  • ํŠน์ • ์–ธ์–ด์— ์ข…์†๋˜์ง€ ์•Š๋Š”๋‹ค.
  • XML์˜ ๋ถˆํ•„์š”ํ•œ ํƒœ๊ทธ, ๋งŽ์€ ์šฉ๋Ÿ‰, ๋‚˜์œ ๊ฐ€๋…์„ฑ ๋•Œ๋ฌธ์— JSON์ด ๋Œ€๋ถ€๋ถ„ ๋Œ€์ฒด๋˜์—ˆ๋‹ค.
    • eXtensible Markup Language: ๋ฐ์ดํ„ฐ๋ฅผ ์„ค๋ช…ํ•˜๋Š” ํƒœ๊ทธ๋ฅผ ๋งˆ์Œ๋Œ€๋กœ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • data ํ‘œํ˜„์— ์ง‘์ค‘ํ•œ HTML๊ณผ ๋‹ฌ๋ฆฌ, data ์ „๋‹ฌ์— ์ง‘์ค‘ํ•œ ์–ธ์–ด๋‹ค.

 

 

JSON ๊ตฌ์กฐ

{
  "squadName": "Super hero squad",
  "homeTown": "Metro City",
  "formed": 2016,
  "active": true,
  "members": [
    {
      "name": "Molecule Man",
      "age": 29
      "powers": [
        "Radiation resistance",
        "Turning tiny",
        "Radiation blast"
      ]
    },
    {
      "name": "Madame Uppercut",
      "age": 39,
      "powers": [
        "Million tonne punch",
        "Damage resistance",
        "Superhuman reflexes"
      ]
    }
 }
  • key๊ฐ’๊ณผ ๋ฌธ์ž์—ด์€ ์Œ๋”ฐ์˜ดํ‘œ๋ฅผ ์ด์šฉํ•˜์—ฌ ํ‘œ๊ธฐํ•ด์•ผํ•œ๋‹ค.
  • ์›ํ•˜๋Š” ๋งŒํผ ๊ฐ์ฒด์™€ ๋ฐฐ์—ด์„ ์ค‘์ฒฉ์‹œ์ผœ์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • null, number, string, array, object, boolean์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

Handling JSON in Javascript

const jsonText = '{ "age": "27", "gender": "male" }';

const obj = JSON.parse(jsonText);
// Object {age: '27', gender: 'male'}

JSON.stringify(obj);
// String '{"age":"27","gender":"male"}'

 

 

 

 

BSON (Binary JSON)

BSON์€ Binary JSON์˜ ์•ฝ์ž๋กœ, MongoDB์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ์ „์†กํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ์ด์ง„ ํ˜•์‹์ด๋‹ค.

ํŠน์ง•

  • JSON์˜ ์ง๊ด€์ ์ธ ๊ตฌ์กฐ๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ ๋ฐ”์ด๋„ˆ๋ฆฌ ํ˜•์‹์˜ ์žฅ์ ์„ ๊ฒฐํ•ฉ
  • ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ๋” ์„ธ๋ฐ€ํ•˜๊ฒŒ ์ง€์› (JSON๋ณด๋‹ค ํ’๋ถ€ํ•œ ๋ฐ์ดํ„ฐ ํƒ€์ž…)
  • ๋น ๋ฅธ ํŒŒ์‹ฑ๊ณผ ํšจ์œจ์ ์ธ ์ €์žฅ ๊ณต๊ฐ„ ํ™œ์šฉ
  • ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์™€์˜ ๋” ๋‚˜์€ ํ˜ธํ™˜์„ฑ

 

JSON vs BSON ๋ฐ์ดํ„ฐ ํƒ€์ž… ๋น„๊ต

JSON BSON
String String
Number Integer (32bit, 64bit)
  Double
  Decimal128
Boolean Boolean
Array Array
Object Object
null null
  Date
  Binary data
  ObjectId
  Regular Expression

 

์‚ฌ์šฉ ์˜ˆ์‹œ

JSON:

{
  "name": "John Doe",
  "age": 30,
  "birth": "1993-01-15",
  "scores": [85.5, 90.0, 92.5]
}

BSON (16์ง„์ˆ˜๋กœ ํ‘œํ˜„):

\x31\x00\x00\x00                    // ๋ฌธ์„œ ์ „์ฒด ํฌ๊ธฐ (49 bytes)
\x02                                // String ํƒ€์ž…
name\x00                            // ํ•„๋“œ๋ช…
\x09\x00\x00\x00John Doe\x00        // ๋ฌธ์ž์—ด ๊ฐ’
\x10                                // Int32 ํƒ€์ž…
age\x00                             // ํ•„๋“œ๋ช…
\x1e\x00\x00\x00                    // ์ •์ˆ˜๊ฐ’ 30
\x09                                // Date ํƒ€์ž…
birth\x00                           // ํ•„๋“œ๋ช…
\x00\x40\x23\x01\x00\x00\x00\x00    // ๋‚ ์งœ๊ฐ’
\x04                                // Array ํƒ€์ž…
scores\x00                          // ํ•„๋“œ๋ช…
[...]                               // ๋ฐฐ์—ด ๋ฐ์ดํ„ฐ
\x00                                // ๋ฌธ์„œ ์ข…๋ฃŒ

 

BSON์˜ ์žฅ์ 

  1. ์„ฑ๋Šฅ ์ตœ์ ํ™”
    • ๋ฐ”์ด๋„ˆ๋ฆฌ ํ˜•์‹์œผ๋กœ ์ธํ•œ ๋น ๋ฅธ ํŒŒ์‹ฑ
    • ํšจ์œจ์ ์ธ ๋ฐ์ดํ„ฐ ์ˆœํšŒ
    • ๋„คํŠธ์›Œํฌ ์ „์†ก ์‹œ ๋” ์ž‘์€ ํฌ๊ธฐ
  2. ํ’๋ถ€ํ•œ ๋ฐ์ดํ„ฐ ํƒ€์ž…
    • ๋‚ ์งœ, ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฐ์ดํ„ฐ ๋“ฑ ๊ธฐ๋ณธ ์ง€์›
    • ์ˆซ์ž ํƒ€์ž…์˜ ์ •๋ฐ€ํ•œ ๊ตฌ๋ถ„ (Int32, Int64, Double, Decimal128)
    • ObjectId๋ฅผ ํ†ตํ•œ ํšจ์œจ์ ์ธ ๋ฌธ์„œ ์‹๋ณ„
  3. MongoDB ์ตœ์ ํ™”
    • ์ธ๋ฑ์‹ฑ๊ณผ ์ฟผ๋ฆฌ ์ฒ˜๋ฆฌ์˜ ํšจ์œจ์„ฑ
    • ์ €์žฅ์†Œ ์—”์ง„๊ณผ์˜ ์ตœ์ ํ™”๋œ ํ†ตํ•ฉ
    • ์ƒค๋”ฉ๊ณผ ๋ณต์ œ์— ์ตœ์ ํ™”๋œ ๊ตฌ์กฐ

 

์‹ค์ œ ํ™œ์šฉ

  • ๋ฐ์ดํ„ฐ ์ €์žฅ: MongoDB๊ฐ€ ๋‚ด๋ถ€์ ์œผ๋กœ ๋ชจ๋“  ๋ฌธ์„œ๋ฅผ BSON์œผ๋กœ ์ €์žฅ
  • ๋„คํŠธ์›Œํฌ ์ „์†ก: MongoDB ๋“œ๋ผ์ด๋ฒ„์™€ ์„œ๋ฒ„ ๊ฐ„ ํ†ต์‹ 
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ: MongoDB ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ์ž๋™์œผ๋กœ JSON๊ณผ BSON ๊ฐ„ ๋ณ€ํ™˜ ์ฒ˜๋ฆฌ
๋ฐ˜์‘ํ˜•