Development

[2020 ์—ฌ๋ฆ„ ํšจ์ฐฝ๊ณต์› ์Šคํ„ฐ๋””]DBMS

morijwana 2020. 9. 6. 21:57

DBMS

๐Ÿฆ‹ ์ฐธ๊ณ ํ•œ ๋ฌธ์„œ


DataBase Management System. ์ค„์—ฌ์„œ DBMS. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์กฐ์ž‘ํ•˜๋Š” ๋ณ„๋„์˜ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋ฉฐ, ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ๋“ค์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ณต์œ ํ•˜๋ฉฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•œ๋‹ค. SQL๊ณผ CLI, GUI ๋“ฑ ๋‹ค์–‘ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋„ ์ œ๊ณตํ•œ๋‹ค.

DBMS ๋ถ„๋ฅ˜

DBMS๋Š” ํฌ๊ฒŒ ๊ณ„์ธตํ˜•(Hierachical), ๋งํ˜•(Network), ๊ด€๊ณ„ํ˜•(Relational) DBMS ๋“ฑ์œผ๋กœ ๋ถ„๋ฅ˜๋œ๋‹ค.

  1. ๊ณ„์ธตํ˜• DBMSimg
  2. 1960๋…„๋Œ€์— ์ฒ˜์Œ์œผ๋กœ ๋‚˜์˜จ DBMS ๊ฐœ๋…์œผ๋กœ, ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ๋ฐ์ดํ„ฐ์˜ ๋…ผ๋ฆฌ์  ๊ตฌ์กฐ๊ฐ€ ํŠธ๋ฆฌ ํ˜•ํƒœ์ด๋ฉฐ, 1:N ๊ด€๊ณ„๋ฅผ ๊ฐ–๋Š”๋‹ค. ์ฆ‰, ์ž์‹ ํ…Œ์ด๋ธ”์€ ์˜ค์ง ํ•˜๋‚˜์˜ ๋ถ€๋ชจ ํ…Œ์ด๋ธ”์— ํ•œํ•ด ๊ด€๊ณ„๋ฅผ ๋งบ์„ ์ˆ˜ ์žˆ๋‹ค.

์ด๋ฏธ์ง€ ์ถœ์ฒ˜: https://excelsior-cjh.tistory.com/173

  1. ๋งํ˜• DBMSimg
  2. ๋งํ˜• DBMS๋Š” ๊ณ„์ธตํ˜• DBMS์˜ ๋‹จ์ ์„ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด 1970๋…„๋Œ€์— ๋“ฑ์žฅํ–ˆ์œผ๋ฉฐ, 1:1, 1:N, N:N ๊ด€๊ณ„๊ฐ€ ์ง€์›๋˜์–ด ํšจ๊ณผ์ ์ด๊ณ  ๋น ๋ฅด๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•ด์กŒ๋‹ค. ํ•˜์ง€๋งŒ ์ง‘ํ•ฉ ๊ตฌ์กฐ๋ฅผ ๋”ฐ๋ผ๊ฐ€๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉ์ž๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ตฌ์กฐ๋ฅผ ์ž˜ ์•Œ์•„์•ผ ํ•œ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.

์ด๋ฏธ์ง€ ์ถœ์ฒ˜: https://excelsior-cjh.tistory.com/173

  1. ๊ด€๊ณ„ํ˜• DBMSimg
  2. *๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ํ…Œ์ด๋ธ”์ด๋ผ ๋ถˆ๋ฆฌ๋Š” ์ตœ์†Œ ๋‹จ์œ„๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์œผ๋ฉฐ, ์ด ํ…Œ์ด๋ธ”์€ ํ•˜๋‚˜ ์ด์ƒ์˜ ์—ด๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค. RDBMS์—์„œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋Š” ํ…Œ์ด๋ธ”์— ์ €์žฅ๋œ๋‹ค.

์ด๋ฏธ์ง€ ์ถœ์ฒ˜: https://excelsior-cjh.tistory.com/173

DBMS ์ข…๋ฅ˜ ๋ฐ ์žฅ๋‹จ์  ๋ถ„์„

์„ธ๊ณ„ DB ์—”์ง„ ๋žญํ‚น

![แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2020-07-28 แ„‹แ…ฉแ„Œแ…ฅแ†ซ 12.21.52](/Users/soo/Library/Application Support/typora-user-images/แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2020-07-28 แ„‹แ…ฉแ„Œแ…ฅแ†ซ 12.21.52.png)

Oracle Database

Oracle์—์„œ ํŒ๋งคํ•˜๋Š” ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ. ๋งŽ์€ ๋Œ€๊ธฐ์—…์—์„œ ์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉ ์ค‘์ด๋‹ค. ๊ธฐ์—…์‹œ์žฅ๊ณผ ์˜คํ”ˆ์†Œ์Šค ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ(๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์ฑ…์ž„์†Œ์žฌ..)์—์„œ๋Š” ๋Œ€๋ถ€๋ถ„ ์˜ค๋ผํด์ด ์“ฐ์ธ๋‹ค.

๋น„์‹ผ ๊ฐ€๊ฒฉ์ด ๋‹จ์ .

MySQL

์˜คํ”ˆ ์†Œ์Šค DBMS. ์ œ์ž‘์‚ฌ์ธ MySQLAB์ด ์ฌ ๋งˆ์ดํฌ๋กœ์‹œ์Šคํ…œ์ฆˆ์— ์ธ์ˆ˜๋˜๊ณ , ์ฌ์ด ์˜ค๋ผํด์„ ์ธ์ˆ˜ํ•˜๋ฉด์„œ ๊ฐ™์ด ๋„˜์–ด๊ฐ”๋‹ค.

MariaDB

MySQL์ด ์˜ค๋ผํด๋กœ ๋„˜์–ด๊ฐ„ ๋’ค ๋ถˆํ™•์‹คํ•œ ๋ผ์ด์„ ์Šค ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋“ฑ์žฅํ•œ ์˜คํ”ˆ ์†Œ์Šค DBMS. MySQLAB ์ถœ์‹  ๊ฐœ๋ฐœ์ž๋“ค์ด MariaDB ์žฌ๋‹จ์„ ์„ธ์›Œ์„œ ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ๋‹ค. ๊ธฐ๋Šฅ์ ์œผ๋กœ๋Š” MySQL๊ณผ ๋™์ผํ•˜๋ฉฐ ์„ฑ๋Šฅ์€ ๋” ์ข‹๋‹ค๊ณ  ํ•œ๋‹ค.

Microsoft SQL Server

๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ์—์„œ ๋งŒ๋“  DBMS. ์œˆ๋„์šฐ ์„œ๋ฒ„์™€ ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š”๋‹ค.

Microsoft Access

MS Office์— ํฌํ•จ๋œ ๊ฐœ๋ณ„ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ํ˜•ํƒœ์˜ DBMS. SQL ์–ธ์–ด๋ฅผ ์ง€์›ํ•˜๊ธด ํ•˜์ง€๋งŒ GUL ํ™˜๊ฒฝ์œผ๋กœ ๋ชจ๋“  SQL ์„ค์ •์„ ํด๋ฆญ ๋ช‡ ๋ฒˆ์œผ๋กœ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ๋‹ค.

MongoDB

๋ฌธ์„œ์ง€ํ–ฅ์  NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค. ์˜คํ”ˆ์†Œ์Šค๋‹ค.

{
  _id: ObjectId("5099803df3f4948bd2f98391"),
  name: { first: "Alan", last: "Turing" },
  birth: new Date('Jun 23, 1912'),
  death: new Date('Jun 07, 1954'),
  contribs: [ "Turing machine", "Turing test", "Turingery" ],
  views : NumberLong(1250000)
}

JSON Objects ํ˜•ํƒœ์˜ key-value ์Œ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ Document๋กœ ๊ฐ’์„ ์ €์žฅํ•œ๋‹ค. ๊ฐ Document๋Š” _id๋ผ๋Š” ๊ณ ์œ ํ•œ ๊ฐ’์„ ๊ฐ–๋Š”๋ฐ, ์ด ๊ฐ’์€ ์‹œ๊ฐ„/๋จธ์‹ ID/ํ”„๋กœ์„ธ์ŠคID/์ˆœ์ฐจ๋ฒˆํ˜ธ๋กœ ๊ตฌ์„ฑ๋˜๋ฉฐ ๊ฐ’์˜ ๊ณ ์œ ์„ฑ์„ ๋ณด์žฅํ•œ๋‹ค.

mongodb

์ด๋ฏธ์ง€ ์ถœ์ฒ˜: https://poiemaweb.com/mongdb-basics

MongoDB์˜ ๊ตฌ์กฐ๋ฅผ ๊ทธ๋ฆผ์œผ๋กœ ๋‚˜ํƒ€๋‚ธ ๊ฒƒ์ด๋ฉฐ, Collection์€ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ table๊ณผ ์œ ์‚ฌํ•œ ๊ฐœ๋…์œผ๋กœ Document๋“ค์˜ ์ง‘ํ•ฉ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. Database๋Š” Collection์˜ ๋ฌผ๋ฆฌ์ ์ธ ์ปจํ…Œ์ด๋„ˆ์ด๋‹ค.

SQL vs. NoSQL

SQL

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ž๋ฃŒ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์šฉ๋„๋กœ ์“ฐ์ด๋Š” ์–ธ์–ด.

์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฉฐ, ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋Š” ๋ฐ์ดํ„ฐ ๋ชจ์Œ์ธ ํ…Œ์ด๋ธ” ์„ ๊ธฐ์ค€์œผ๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค.

NoSQL

"๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐ์—๋Š” SQL ์™ธ์˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•๋„ ์žˆ๋‹ค!"

NO SQL์ด ์•„๋‹ˆ๋ผ Not Only SQL...

๋Œ€ํ‘œ์ ์ธ NoSQL์—๋Š” MongoDB์™€ CouchDB๊ฐ€ ์žˆ๋Š”๋ฐ, ์ด ๋‘ DB์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์ฟผ๋ฆฌ ์–ธ์–ด๋Š” ์„œ๋กœ ์ „ํ˜€ ๋‹ค๋ฅด๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ NoSQL์€ ํ…Œ์ด๋ธ”์„ ์‚ฌ์šฉํ•˜๋Š” ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์•„๋‹ˆ์ง€๋งŒ, BerkleyDB๊ฐ™์€ ๊ฒฝ์šฐ๋Š” NoSQL์ด๋ฉด์„œ ๊ด€๊ณ„ํ˜• ํ…Œ์ดํ„ฐ๋ฒ ์ด์Šค์ด๋‹ค. ์ด ์• ๋งคํ•œ ๋ฌธ์žฅ์—์„œ ๋А๊ปด์ง€๋‹ค์‹œํ”ผ, ์•„์ง๊นŒ์ง€ NoSQL์— ๋‚ด๋ ค์ง„ ์ •ํ™•ํ•œ ์ •์˜๋Š” ์—†๋‹ค. ํ•˜์ง€๋งŒ NoSQL์ด๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋“ค์€ ๋Œ€์ฒด๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ณตํ†ต์ ์ธ ์„ฑํ–ฅ์„ ๋ณด์ธ๋‹ค.

  • ๋Œ€๋ถ€๋ถ„ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์‹คํ–‰ํ•  ๋ชฉ์ ์œผ๋กœ ๋งŒ๋“ค์–ด์กŒ๊ธฐ ๋•Œ๋ฌธ์— ๊ด€๊ณ„ํ˜• ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ชจ๋“  NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์‹คํ–‰๋˜๋„๋ก ๋งž์ถฐ์ง„ ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด NoSQL ๋ฐ์ดํ„ฐ ๋ชจ๋ธ ์ค‘ ํ•˜๋‚˜์ธ ๊ทธ๋ž˜ํ”„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ๋น„์Šทํ•œ ๋ถ„์‚ฐ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•œ๋‹ค.
  • ์˜คํ”ˆ ์†Œ์Šค์ด๋‹ค. ๋น„์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ๋„ ์žˆ๊ธด ํ•˜์ง€๋งŒ, ๋Œ€๋ถ€๋ถ„ ๊ทธ๋ ‡๋‹ค.
  • ๋ณดํ†ต 21์„ธ๊ธฐ ์ดˆ๋ฐ˜ ์›น ํ™˜๊ฒฝ์˜ ํ•„์š”์— ๊ธฐ์ดˆ๋ฅผ ๋‘๊ณ  ์žˆ์–ด์„œ, ์ด ์‹œ๊ธฐ์— ๊ฐœ๋ฐœ๋œ ์‹œ์Šคํ…œ๋งŒ์„ NoSQL์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ๋”ฐ๋ผ์„œ ๊ทธ ์ด์ „์— ๋งŒ๋“ค์–ด์ง„ ODBMS(Objective Database Management System)์€ NoSQL์— ํ•ด๋‹นํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ์Šคํ‚ค๋งˆ ์—†์ด ๋™์ž‘ํ•˜๋ฉฐ, ๊ตฌ์กฐ์— ๋Œ€ํ•œ ์ •์˜๋ฅผ ๋ณ€๊ฒฝํ•  ํ•„์š” ์—†์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ ˆ์ฝ”๋“œ์— ์ž์œ ๋กญ๊ฒŒ ํ•„๋“œ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.

์Šคํ‚ค๋งˆ(schema): ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ž๋ฃŒ์˜ ๊ตฌ์กฐ, ์ž๋ฃŒ์˜ ํ‘œํ˜„ ๋ฐฉ๋ฒ•, ์ž๋ฃŒ ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ํ˜•์‹ ์–ธ์–ด๋กœ ์ •์˜ํ•œ ๊ตฌ์กฐ