๐Ÿ’ป
ComputerScience
  • ๋ชฉ์ฐจ
  • Operating System
    • ์šด์˜์ฒด์ œ๋ž€
    • ํ”„๋กœ์„ธ์Šค vs ์Šค๋ ˆ๋“œ
    • ํ”„๋กœ์„ธ์Šค ์ฃผ์†Œ ๊ณต๊ฐ„
    • ์ธํ„ฐ๋ŸฝํŠธ(Interrupt)
    • ์‹œ์Šคํ…œ ์ฝœ(System Call)
    • PCB์™€ Context Switching
    • IPC(Inter Process Communication)
    • CPU ์Šค์ผ€์ค„๋ง
    • ๋ฐ๋“œ๋ฝ(DeadLock)
    • Race Condition
    • ์„ธ๋งˆํฌ์–ด(Semaphore) & ๋ฎคํ…์Šค(Mutex)
    • ํŽ˜์ด์ง• & ์„ธ๊ทธ๋จผํ…Œ์ด์…˜
    • ํŽ˜์ด์ง€ ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜
    • ๋ฉ”๋ชจ๋ฆฌ(Memory)
    • ํŒŒ์ผ ์‹œ์Šคํ…œ
  • Network
    • OSI 7 ๊ณ„์ธต
    • TCP 3 way handshake & 4 way handshake
    • TCP/IP ํ๋ฆ„์ œ์–ด & ํ˜ผ์žก์ œ์–ด
    • UDP
    • ๋Œ€์นญํ‚ค & ๊ณต๊ฐœํ‚ค
    • HTTP & HTTPS
    • TLS/SSL handshake
    • ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ(Load Balancing)
    • Blocking,Non-blocking & Synchronous,Asynchronous @LifesLike
    • Blocking & Non-Blocking I/O
  • Algorithm
    • ๊ฑฐํ’ˆ ์ •๋ ฌ(Bubble Sort)
    • ์„ ํƒ ์ •๋ ฌ(Selection Sort)
    • ์‚ฝ์ž… ์ •๋ ฌ(Insertion Sort)
    • ํ€ต ์ •๋ ฌ(Quick Sort) @mimwin
    • ๋ณ‘ํ•ฉ ์ •๋ ฌ(Merge Sort)
    • ํž™ ์ •๋ ฌ(Heap Sort)
    • ๊ธฐ์ˆ˜ ์ •๋ ฌ(Radix Sort)
    • ๊ณ„์ˆ˜ ์ •๋ ฌ(Count Sort)
    • ์ด๋ถ„ ํƒ์ƒ‰(Binary Search)
    • ํ•ด์‹œ ํ…Œ์ด๋ธ” ๊ตฌํ˜„
    • DFS & BFS @sujin-kk
    • ์ตœ์žฅ ์ฆ๊ฐ€ ์ˆ˜์—ด(LIS)
    • ์ตœ์†Œ ๊ณตํ†ต ์กฐ์ƒ(LCA)
    • ๋™์  ๊ณ„ํš๋ฒ•(Dynamic Programming)
    • ๋‹ค์ต์ŠคํŠธ๋ผ(Dijkstra) ์•Œ๊ณ ๋ฆฌ์ฆ˜
    • ๋น„ํŠธ๋งˆ์Šคํฌ(BitMask)
  • Database
    • ํ‚ค(Key) ์ •๋ฆฌ
    • SQL - JOIN
    • SQL Injection
    • SQL vs NoSQL
    • ์ •๊ทœํ™”(Nomalization)
    • ์ด์ƒ(Anomaly)
    • ์ธ๋ฑ์Šค(INDEX)
    • ํŠธ๋žœ์žญ์…˜(Transaction)
    • ํŠธ๋žœ์žญ์…˜ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€(Transaction Isolation Level)
    • ์ €์žฅ ํ”„๋กœ์‹œ์ €(Stored PROCEDURE)
    • ๋ ˆ๋””์Šค(Redis) @sujin-kk
  • Java
    • Java ์ปดํŒŒ์ผ ๊ณผ์ •
    • Call by Value vs Call by Reference
    • String & StringBuffer & StringBuilder
    • ์ž๋ฐ” ๊ฐ€์ƒ ๋จธ์‹ (Java Virtual Machine)
    • Casting(์—…์บ์ŠคํŒ… & ๋‹ค์šด์บ์ŠคํŒ…)
    • ์˜คํ†  ๋ฐ•์‹ฑ & ์˜คํ† ์–ธ๋ฐ•์‹ฑ
    • Thread ํ™œ์šฉ
    • ๊ณ ์œ  ๋ฝ(Intrinsic Lock)
    • ๋ฌธ์ž์—ด ํด๋ž˜์Šค
    • Garbage Collection
    • Promotion & Casting
    • Primitive type & Reference type
    • ์ง๋ ฌํ™”(Serialization)
    • Error & Exception
    • Stream API
    • Record
    • Composition
Powered by GitBook
On this page
  • What is NoSQL?
  • NoSQL์˜ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ ๋ฐฉ์‹
  • NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์œ ํ˜•
  • key-value
  • document
  • graph
  • Wide Column Store (Column Family)
  • ์–ธ์ œ NoSQL์„ ์‚ฌ์šฉํ• ๊นŒ?
  • NoSQL์ด ์ ํ•ฉํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ
  • SQL vs NoSQL
  • ์ฐจ์ด์ 
  • NoSQL๋งŒ์˜ ํŠน์ง•
  1. Database

SQL vs NoSQL

What is NoSQL?

๋ณดํ†ต "๋น„๊ด€๊ณ„ํ˜•" ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ผ๊ณ  ์ง€์นญ.
๋˜ SQL์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ผ๊ณ ๋„ ๋งํ•จ.(not only SQL Database)

๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€๋Š” ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

NoSQL์˜ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ ๋ฐฉ์‹

์˜ˆ) ๋„์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ตฌ์ถ•ํ•ด๋ณด์ž.
  • ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

    • ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ„๋„์˜ ํ…Œ์ด๋ธ”ํ™” ๋˜์–ด ๋ณด๊ด€๋œ๋‹ค.

    • pk, fk ๋“ฑ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”๊ณผ์˜ ๊ด€๊ณ„๋˜ํ•œ ์กด์žฌํ•  ๊ฒƒ์ด๋‹ค.

      • Book ํ…Œ์ด๋ธ”์—๋Š” id, title, author(id) ๋“ฑ์˜ ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

      • Author ํ…Œ์ด๋ธ”์—๋Š” id, ์ €์ž์ด๋ฆ„ ๋“ฑ ๊ฐ’์ด ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค.

    • ํ…Œ์ด๋ธ”๊ณผ ํ…Œ์ด๋ธ” ์‚ฌ์ด์˜ โ€˜์ฐธ์กฐ ๋ฌด๊ฒฐ์„ฑโ€™์„ ์ง€ํ‚ค๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค.

    • ์ €์žฅ๋˜๋Š” ๋ ˆ์ฝ”๋“œ๊ฐ€ (๋น„๊ต์ ) ๋ณ€๊ฒฝ์ด ์—†์ด ์œ ์ง€๋  ๊ฒƒ์ด๋ผ ์˜ˆ์ƒํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ตฌ์ถ•ํ•˜์˜€๋‹ค.

  • NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

    • ๋„์„œ ๋ฐ์ดํ„ฐ๊ฐ€ JSON ํ˜•์‹์œผ๋กœ ์ €์žฅ๋œ๋‹ค.

    {
    	id: 1,
    	title: "ํ•ด๋ฆฌํฌํ„ฐ์™€ ๋น„๋ฐ€์˜ ๋ฐฉ",
    	author_id: 14
    }
    • NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์ถ•์˜ ์‹œ์ž‘์€ โ€˜ํŠน์ •ํ•œ ์ƒํ™ฉโ€™์„ ์—ผ๋‘์— ๋‘๊ณ  ์„ค๊ณ„ํ•ด์•ผ ํ•œ๋‹ค๋Š” ์ ์ด๋‹ค.

    • ๊ธฐ๋ณธ์ ์ธ ๋„์„œ ๋ฐ์ดํ„ฐ ์ด์™ธ์—๋„ ํŠน์ •ํ•œ ๋„์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์–ธ์ œ๋“  ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.

      • ํŠน์ • ๋„์„œ ๋ฐ์ดํ„ฐ์—๋Š” series_number ๊ฐ’์ด ์กด์žฌํ•  ์ˆ˜ ์žˆ๋‹ค.

    {
    	id: 1,
    	title: "ํ•ด๋ฆฌํฌํ„ฐ์™€ ๋น„๋ฐ€์˜ ๋ฐฉ",
    	author_id: 14,
    	series_number: 2
    }

NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์œ ํ˜•

key-value

  • ๊ฐ ํ•ญ๋ชฉ์— key-value ์Œ์ด ํฌํ•จ๋˜์–ด ์žˆ๋Š” ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ์œ ํ˜•์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค.

    • ๋ณดํ†ต key๋ฅผ ์ฐธ์กฐํ•˜์—ฌ ๊ฒ€์ƒ‰์ด ๊ฐ€๋Šฅ โ†’ ์ฟผ๋ฆฌ ์ˆ˜ํ–‰์ด ๊ฐ„๋‹จํ•จ

  • ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ด์•ผํ•˜์ง€๋งŒ ๊ฒ€์ƒ‰์„ ์œ„ํ•ด ๋ณต์žกํ•œ ์ฟผ๋ฆฌ๊ฐ€ ํ•„์š” ์—†์„ ๋•Œ ์ ํ•ฉ.

  • ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๊ฐ™์€ ์ผ์‹œ์ ์ธ ๋ฐ์ดํ„ฐ ์ถ”์ , ์ด๋ฏธ์ง€๋‚˜ ์˜ค๋””์˜ค ํŒŒ์ผ

  • Redis, DynanoDB, Berkely

document

  • JSON๊ณผ ์œ ์‚ฌ ํ˜•์‹์˜ โ€˜๋ฌธ์„œโ€™์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ

    • key-value ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€์˜ ์ค‘์š”ํ•œ ์ฐจ์ด๋Š” ๊ฐ’์„ โ€˜๋ฌธ์„œโ€™๋กœ ์ €์žฅํ•œ๋‹ค๋Š” ๊ฒƒ

    • ๋ฌธ์„œ == semi-structured entity (Json, XML ๋“ฑ)

  • ๊ฐ ๋ฌธ์„œ๋งˆ๋‹ค ๋‹ค๋ฅธ field-value ์Œ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Œ

    • value๋Š” number, string, boolean, array, object ๋“ฑ ๋‹ค์–‘ํ•œ ์œ ํ˜•์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Œ.

  • document ๋ชจ๋ธ ํ˜•์‹์„ ์‚ฌ์šฉํ•˜๋ฉด RDBM ๋ณด๋‹ค ์‰ฝ๊ฒŒ ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ โ€˜์ˆ˜ํ‰์ โ€™์œผ๋กœ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Œ.

  • ๋‹ค์–‘ํ•œ ์†์„ฑ์ด ์žˆ๋Š” ๋ฐ์ดํ„ฐ, ๋น„์ •๊ทœํ™”๋œ ์ค‘์ฒฉ ๊ตฌ์กฐ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์งˆ ๋•Œ

  • MongoDB

    • ์•„๋ž˜ ์ฒ˜๋Ÿผ articles ๋ผ๋Š” db๊ฐ€ ์กด์žฌํ•œ๋‹ค๊ณ  ํ•ด๋ณด์ž

    • mongoDB์—์„œ ๋ชจ๋“  article์„ ์กฐํšŒํ•˜๊ธฐ โ†’ db.articles.find()

    • writer๊ฐ€ โ€œ๋ฐ•๋ช…์ˆ˜โ€์ธ article ์กฐํšŒ โ†’ db.articles.find( { โ€œwriterโ€: โ€œ๋ฐ•๋ช…์ˆ˜โ€ } )

[
  {
    "title": "article01",
    "content": "content01",
    "writer": "๋ฐ•๋ช…์ˆ˜",
    "likes": 0,
    "comments": []
  },
  {
    "title": "article02",
    "content": "content02",
    "writer": "์ •์ค€ํ•˜",
    "likes": 23,
    "comments": [
      {
        "name": "Bravo",
        "message": "Hey Man!"
      }
    ]
  }
]

graph

  • Node์™€ Edge์— ๋ฐ์ดํ„ฐ ์ €์žฅ.

    • Node : ์‚ฌ๋žŒ, ์žฅ์†Œ, ์‚ฌ๋ฌผ์— ๋Œ€ํ•œ ์ •๋ณด ๋“ฑ์ด ์ €์žฅ

    • Edge : ๋…ธ๋“œ ๊ฐ„์˜ ๊ด€๊ณ„์— ๋Œ€ํ•œ ์ •๋ณด ์ €์žฅ

  • SNS, ์ถ”์ฒœ ์„œ๋น„์Šค(์—”์ง„), ์‚ฌ๊ธฐ ํƒ์ง€ ๋“ฑ์˜ ์„œ๋น„์Šค โ†’ ๋งค์šฐ ๊ธด๋ฐ€ํ•˜๊ฒŒ ์—ฐ๊ฒฐ๋œ ๋ฐ์ดํ„ฐ์…‹์„ ๊ตฌ์ถ•ํ•ด์•ผ ํ• ๋•Œ ์ ํ•ฉ

  • Neo4j, Giraph, JanusGraph

Wide Column Store (Column Family)

  • Table, Row, Dynamic Column์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ

  • ์ปฌ๋Ÿผ์ˆ˜๊ฐ€ ๋งŽ๋‹ค๋ฉด ๊ด€๋ จ๋œ ์ปฌ๋Ÿผ์„ ์ปฌ๋ ‰์…˜์œผ๋กœ ๋ฌถ์„ ์ˆ˜ ์žˆ์Œ

  • ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๋•Œ ์ ํ•ฉํ•˜๋ฉฐ, join์„ ์ง€์›ํ•˜์ง€ ์•Š์•„์„œ ์ฟผ๋ฆฌ ํŒจํ„ด์„ ์˜ˆ์ธกํ•  ์ˆ˜ ์žˆ์Œ

  • IoT ๋ฐ์ดํ„ฐ(์ง€๋ฆฌ์ ์œผ๋กœ ๋ถ„์‚ฐ), ์‚ฌ์šฉ์ž ํ”„๋กœํ•„ ๋ฐ์ดํ„ฐ ๋“ฑ ๋™์  ์ปฌ๋Ÿผ์„ ์ฒ˜๋ฆฌํ•  ๋•Œ, ์ˆ˜๋ฐฑ๋งŒ ํ…Œ๋ผ๋ฐ”์ดํŠธ ์ •๋„์˜ ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ

  • Cassandra, HBase


์–ธ์ œ NoSQL์„ ์‚ฌ์šฉํ• ๊นŒ?

'๋†’์€ ํ™•์žฅ์„ฑ'๊ณผ '๊ฐ€์šฉ์„ฑ'์ด ์ฃผ์š” ์žฅ์ ์ธ NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š”
1. ์‹ค์‹œ๊ฐ„ ์„œ๋น„์Šค 2. ๋น… ๋ฐ์ดํ„ฐ 3. ์งง์€ ์ง€์—ฐ ๋ฐ ๋Œ€๊ธฐ์‹œ๊ฐ„์„ ์ œ๊ณตํ•ด์•ผ ํ•˜๋Š” ์„œ๋น„์Šค์— ๋„๋ฆฌ ์‚ฌ์šฉ๋œ๋‹ค.
ex) ๊ฒŒ์ž„, ์ „์ž์ƒ๊ฑฐ๋ž˜, SNS ์„œ๋น„์Šค ๋“ฑ,,
  • NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค โ†’ ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•œ๋‹ค.

    • (์š”๊ตฌ์‚ฌํ•ญ) ๋ณ€ํ™”์— ๋น ๋ฅด๊ฒŒ ์ ์‘

  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋ณด์ด๋Š” ๋ฐ์ดํ„ฐ์™€ ๋น„์Šทํ•œ ํ˜•์‹์œผ๋กœ ์ €์žฅ๋จ โ†’ ์ง๊ด€์ , ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์›€

    • API๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ ๋˜๋Š” ๊ฒ€์ƒ‰ ์‹œ์— ๋ฐ์ดํ„ฐ ๋ณ€ํ™˜์ด ์ค„์–ด๋“ฌโœจ

  • ์œ ์—ฐ์„ฑ: NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์œ ์—ฐํ•œ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์„ ์ œ๊ณตํ•˜์—ฌ ๋ณด๋‹ค ๋น ๋ฅด๊ณ  ๋ฐ˜๋ณต์ ์ธ ๊ฐœ๋ฐœ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด์คŒ โ†’ ์ž์œ ๋กœ์šด ํ˜•์‹์œผ๋กœ ์ €์žฅ (๊ตฌ์กฐ์ , ๋ฐ˜๊ตฌ์กฐ์ , ๋น„๊ตฌ์กฐ์  ๋ชจ๋“  ํ˜•์‹์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‰ฝ๊ฒŒ ์ฒ˜๋ฆฌ)

  • ํ™•์žฅ์„ฑ: NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๊ณ ๊ฐ€์˜ ๊ฐ•๋ ฅํ•œ ์„œ๋ฒ„๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋Œ€์‹ , ๋ถ„์‚ฐํ˜• ํ•˜๋“œ์›จ์–ด ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ด์šฉํ•ด ํ™•์žฅํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Œ. โ†’ ํŠธ๋ž˜ํ”ฝ ์ฆ๊ฐ€์— ๋Œ€์‘ํ•˜๊ณ  ์ง€์—ฐ์‹œ๊ฐ„์„ ์ค„์ผ ์ˆ˜ ์žˆ์Œ

  • ๊ณ ์„ฑ๋Šฅ: NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” โ€˜๋ฐ์ดํ„ฐ ์–‘์ด๋‚˜ ํŠธ๋ž˜ํ”ฝ์ด ์ฆ๊ฐ€ํ•  ๋•Œโ€™ ๋งค์šฐ ์ข‹์€ ์„ฑ๋Šฅ์„ ๋ณด์—ฌ์คŒ!

  • ๊ณ ๊ธฐ๋Šฅ์„ฑ: NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๊ฐ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์— ๋งž์ถฐ ํŠน๋ณ„ํžˆ ๊ตฌ์ถ•๋œ ๋›ฐ์–ด๋‚œ ๊ธฐ๋Šฅ์˜ API์™€ ๋ฐ์ดํ„ฐ ์œ ํ˜•์„ ์ œ๊ณต.

NoSQL์ด ์ ํ•ฉํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ

  • NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋น„์ •๊ทœํ™”๋œ ๋ฐ์ดํ„ฐ์— ์˜์กด

    • ๋ฐ์ดํ„ฐ ๋ณ€ํ˜• ๋ฐ ๋ฐ์ดํ„ฐ ์ค‘๋ณต์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๊ณ ๋„๋กœ ์ •๊ทœํ™”๋œ ๋ฐ์ดํ„ฐ์— ์˜์กดํ•˜๋Š” ์„œ๋น„์Šค(๋ฐ์ดํ„ฐ๊ฐ€ ๊ตฌ์กฐ์ ์ด๊ณ  ์ผ๊ด€์ ์ธ ๊ฒฝ์šฐ) โ†’ NoSQL์ด ์ ํ•ฉํ•˜์ง€ ์•Š์Œโ€ผ๏ธ ex) ๊ธˆ์œต, ํšŒ๊ณ„ ๋“ฑ ๋น„์ฆˆ๋‹ˆ์Šค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜

  • NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋‹จ์ผ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ์ฟผ๋ฆฌ ์ž‘์—…์— ๋งค์šฐ ๋น ๋ฅด๊ณ  ๊ฐ„๋‹จํ•˜๊ฒŒ ๋™์ž‘ํ•จ.

    • ๊ทธ๋Ÿฌ๋‚˜ ์ฟผ๋ฆฌ์˜ ๋ณต์žก์„ฑ์ด ๋†’์•„์ง€๋Š” ๊ฒฝ์šฐ, ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ๋” ์ข‹๋‹ค. โ€ผ๏ธ

    • NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋ณดํ†ต ๋ณต์žกํ•œ join, ํ•˜์œ„ ์ฟผ๋ฆฌ ๋ฐ WHERE ์ ˆ์—์„œ์˜ ์ค‘์ฒฉ ์งˆ์˜๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ.

  • ์ด ๋‘˜ ์ค‘์— ๊ผญ ์„ ํƒํ•  ํ•„์š” ์—†์ด ๋งŽ์€ ๊ฒฝ์šฐ์— ๊ด€๊ณ„ํ˜• ๋ฐ ๋น„๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์„ ๊ฒฐํ•ฉํ•ด ์‚ฌ์šฉํ•˜๋Š” โ€˜ํ•˜์ด๋ธŒ๋ฆฌ๋“œโ€™ ์ ‘๊ทผ ๋ฐฉ์‹ ์‚ฌ์šฉ

    • NoSQL๋กœ ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ์œ ํ˜•์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์œ ์—ฐ์„ฑ์„ ์–ป๊ณ , RDBMS๋กœ ์ผ๊ด€์ ์ธ ์ฝ๊ธฐ ๋ฐ ์“ฐ๊ธฐ๋ฅผ ๋ณด์žฅ ๊ฐ€๋Šฅ


SQL vs NoSQL

์ฐจ์ด์ 

RDBMS์˜ ๋ฐ์ดํ„ฐ๋Š” ํ…Œ์ด๋ธ”์— ์ €์žฅ๋˜์–ด ์žˆ์Œ.

  • ์Šคํ‚ค๋งˆ๋ฅผ ์‚ฌ์ „์— ์ •์˜ํ•ด์•ผํ•จ == ๋ชจ๋“  column๊ณผ ๋ฐ์ดํ„ฐ ํƒ€์ž…(number, string,,)์ด ์‚ฌ์ „์— ํŒŒ์•…๋˜์–ด์•ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋ง.

  • ๋˜ํ•œ key๋ฅผ ์‚ฌ์šฉํ•ด ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ”์„ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ •๋ณด๋ฅผ ์ €์žฅ โ†’ ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ” ๊ฐ„์˜ ๊ด€๊ณ„๊ฐ€ ํ˜•์„ฑ.

  • key๋ฅผ ํ†ตํ•ด ํŠน์ • row๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•  ์ˆ˜๋„ ์žˆ์Œ

๋ฐ˜๋Œ€๋กœ NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ฐ์ดํ„ฐ๋Š” ์‚ฌ์ „์— ์Šคํ‚ค๋งˆ๋ฅผ ์ •์˜ํ•˜์ง€ ์•Š์•„๋„ ์ €์žฅ๋  ์ˆ˜ ์žˆ์Œ. โœจ

  • ์ž‘์—…์„ ์ง„ํ–‰ํ•˜๋Š” ๋™์‹œ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ •์˜ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋น ๋ฅด๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ๋ฐ˜๋ณตํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋œป.

์ตœ๊ทผ๊นŒ์ง€๋„ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ๋ชจ๋ธ

  • ๊ทธ๋Ÿฌ๋‚˜ ๋ฐ์ดํ„ฐ์˜ ๋‹ค์–‘์„ฑ, ์†๋„, ์–‘์„ ๊ฐ๋‹นํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋ณด์™„ํ•  ์ „ํ˜€ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ํ•„์š”.

  • ์ด์™€ ๊ฐ™์€ ์ƒํ™ฉ ๋•Œ๋ฌธ์— ์ผ๋ถ€ ์˜์—ญ์—์„œ NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋„์ž… โ†’ '๋น„๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค'

  • ์‹ ์†ํ•œ ์ˆ˜ํ‰์  ํ™•์žฅ ๋Šฅ๋ ฅ ๋•๋ถ„์— ๋น„๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋†’์€ ํŠธ๋ž˜ํ”ฝ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ณ , ๊ณ ๋„์˜ ์ ์‘๋ ฅ์ด ํŠน์ง•

NoSQL๋งŒ์˜ ํŠน์ง•

  1. NoSQL์€ ๊ตฌ์กฐํ™”๋˜์ง€ ์•Š์€ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

  2. Sharding(์ƒค๋”ฉ) ์„ ๊ฑฐ์ณ์„œ โ€˜์ˆ˜ํ‰ํ™•์žฅโ€™์„ ์ง€์›ํ•œ๋‹ค. (์—ฌ๋Ÿฌ ๋…ธ๋“œ์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์‚ฐํ•˜์—ฌ ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹)

    • SQL์ด ํ…Œ์ด๋ธ”๊ฐ„์˜ ์ฐธ์กฐ๋ฅผ ํ†ตํ•ด ์ˆ˜์ง ํ™•์žฅํ•ด ๋‚˜๊ฐ„๋‹ค๋ฉด, NoSQL์€ ๋ฌธ์„œ ์˜†์— ๋ฌธ์„œ,, ๋˜ ๋ฌธ์„œ,, ๊ณ„์†ํ•ด์„œ ์ˆ˜ํ‰ ํ™•์žฅ์ด ๊ฐ€๋Šฅ

    • ์ˆ˜์ง ํ™•์žฅ = ์ง‘ ์•ˆ์— ์ƒˆ๋กœ์šด ๊ณ„๋‹จ์„ ์ถ”๊ฐ€, ์ˆ˜ํ‰ ํ™•์žฅ = ๊ฑด๋ฌผ ์˜†์— ์ƒˆ๋กœ์šด ๊ฑด๋ฌผ์„ ์ถ”๊ฐ€

  • ์šฉ์–ด

SQL
MongoDB
DynamoDB

table

collection

table

row (ํ–‰)

document

item

column (์—ด)

field

attribute

primary key

objectId

primary key

index

index

secondary index

view

view

global secondary index

Nested table or object

Embedded document

map

Array

Array

list


  • ์ฐธ๊ณ 

PreviousSQL InjectionNext์ •๊ทœํ™”(Nomalization)

Last updated 2 years ago

๊ฐœ๋ฐœ์ž๊ฐ€ NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์„ ํ˜ธํ•˜๋Š” ์ด์œ 
NoSQL์ด๋ž€? | ๋น„๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ์œ ์—ฐํ•œ ์Šคํ‚ค๋งˆ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ | AWS
Untitled 1
Untitled
Untitled 2