๐Ÿ’ป IT

์˜์‚ฌ๊ฒฐ์ •(Decision Making)

  • ํ•˜๋‚˜ ์ด์ƒ์˜ ์กฐ๊ฑด์„ ํ‰๊ฐ€ํ•˜์—ฌ ๊ทธ ๊ฒฐ๊ณผ์— ๋”ฐ๋ผ ๋‹ค์–‘ํ•œ ํ๋ฆ„์œผ๋กœ ๋ช…๋ น๋ฌธ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ตฌ์กฐ
  • R์—์„œ๋Š” if๋ฌธ, if~else๋ฌธ, switch๋ฌธ์„ ์ œ๊ณต
  • ์˜์‚ฌ๊ฒฐ์ • ๊ตฌ์กฐ์˜ ์šฉ๋„

if๋ฌธ : ์กฐ๊ฑด์ด ์ฐธ์ผ ๋•Œ๋งŒ ๋ช…๋ น๋ฌธ์„ ์ˆ˜ํ–‰

  • ์กฐ๊ฑด์ด ์ฐธ(TRUE)์ธ ๊ฒฝ์šฐ์—๋งŒ ๋ช…๋ น์–ด ์ˆ˜ํ–‰
  • ๊ฐ€์žฅ ๋‹จ์ˆœํ•œ ์˜์‚ฌ๊ฒฐ์ • ๊ตฌ์กฐ
x<-36L
if(is.integer(x)){
	print("x๋Š” ์ •์ˆ˜")
}

[1] "x๋Š” ์ •์ˆ˜"

 

 

if~esle๋ฌธ : ์กฐ๊ฑด์— ๋”ฐ๋ผ ๋ณ„๊ฐœ์˜ ๋ช…๋ น๋ฌธ์„ ์ˆ˜ํ–‰

  • ์กฐ๊ฑด์ด ์ฐธ(TRUE)์ธ ๊ฒฝ์šฐ์™€ ๊ฑฐ์ง“(FALSE)์ธ ๊ฒฝ์šฐ ์„œ๋กœ ๋‹ค๋ฅธ ๋ช…๋ น๋ฌธ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์˜์‚ฌ๊ฒฐ์ • ๊ตฌ์กฐ
x<-3.14
if(is.integer(x)){
	print("์ •์ˆ˜์ž…๋‹ˆ๋‹ค")
}else{
	print("์ •์ˆ˜๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค")
}

[1] "์ •์ˆ˜๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค"

 

 

switch๋ฌธ : ๋‹ค์–‘ํ•œ ๊ฐ’์˜ ์กฐ๊ฑด์— ๋”ฐ๋ผ ๋ณ„๊ฐœ์˜ ๋ช…๋ น๋ฌธ์„ ์ˆ˜ํ–‰

  • ์กฐ๊ฑด์ด ์ผ์น˜ํ•˜๋Š” ๊ฒฝ์šฐ(case)์˜ ๋ช…๋ น๋ฌธ์„ ์‹คํ–‰
  • ์กฐ๊ฑด์ด ๋‹ค์ˆ˜๋กœ์˜ ๋ถ„๊ธฐ๋ฅผ ๊ฐ€์งˆ ๋•Œ ์œ ๋ฆฌ
  • ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์™€ ๋‹ฌ๋ฆฌ ๊ธฐ๋ณธ๊ฐ’(default)์ด ์—†์Œ
x<-"han"
switch(x, "kim"="๊น€", "lee"="์ด", "han"="ํ•œ")

[1] "ํ•œ"

 

 

 

๋ฃจํ”„(Loop)

  • ํŠน์ •ํ•œ ๋ช…๋ น๋ฌธ์„ ์กฐ๊ฑด์— ๋”ฐ๋ผ ์—ฌ๋Ÿฌ๋ฒˆ ์‹คํ–‰ํ•˜๊ณ ์ž ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ตฌ์กฐ
  • ์ข…๋ฅ˜ : repeat ๋ฃจํ”„, while ๋ฃจํ”„, for ๋ฃจํ”„

repeat ๋ฃจํ”„

  • ๋ฌดํ•œํžˆ ๋ฐ˜๋ณตํ•˜์—ฌ ๋ช…๋ น๋ฌธ์„ ์‹คํ–‰ํ•˜๋Š” ๊ตฌ์กฐ
  • if๋ฌธ๊ณผ break๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ˜๋ณต์—์„œ ํƒˆ์ถœํ•  ์ˆ˜ ์žˆ์Œ
i<-1
repeat {
	i<-i+1
    if(i==3) {	#๋ฐ˜๋ณตํ•˜๋‹ค i๊ฐ€ 3์ด ๋˜๋ฉด ์•„๋ž˜ ์‹คํ–‰ํ›„ break
    	print(i)
        break
    }
}

[1] 3

 

 

while ๋ฃจํ”„

  • ์กฐ๊ฑด์ด ์ฐธ์ด๋ฉด ๋™์ผํ•œ ๋ช…๋ น๋ฌธ์„ ๋‹ค์‹œ ์‹คํ–‰ํ•˜๋Š” ๋ฃจํ”„
  • ๋ช…๋ น๋ฌธ์˜ ์‹คํ–‰ ๊ฒฐ๊ณผ์— ๋”ฐ๋ผ ์กฐ๊ฑด์ด ๊ฑฐ์ง“์ด ๋˜๋ฉด ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ๋ถ€ํ„ฐ ํƒˆ์ถœํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅ
i<-1
while(i<3) {	#i๊ฐ€ 3๋ฏธ๋งŒ์ธ ๊ฒฝ์šฐ ๊ณ„์† ๋ฐ˜๋ณต
	i<-i+1
}

i
[1] 3

 

 

for ๋ฃจํ”„

  • ๋ฒกํ„ฐ์˜ ๊ฐ ์„ฑ๋ถ„์— ๋”ฐ๋ผ ๋ฐ˜๋ณตํ•˜๋Š” ๋ฃจํ”„ ๊ตฌ์กฐ
  • ๋ฒกํ„ฐ ์„ฑ๋ถ„์˜ ์œ„์น˜(index)์— ์ผ์ผํžˆ ์ ‘๊ทผํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๋ฒกํ„ฐ ์„ฑ๋ถ„๋ณ„ ๋ช…๋ น๋ฌธ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ตฌ์กฐ์ผ๋•Œ ์œ ๋ฆฌ
  • ๋ฒกํ„ฐ ์„ฑ๋ถ„์˜ ๊ฐ’์„ ๋Œ€์ž…ํ•˜๊ธฐ ์œ„ํ•œ ๋ณ€์ˆ˜ ์ง€์ • ํ•„์š”
v<-c(2,3,5,7,10)
s<-0	#s๋ณ€์ˆ˜ 0์œผ๋กœ ์ดˆ๊ธฐํ™”
for(ve in v) {		#v์•ˆ์— ๋“ค์–ด์žˆ๋Š” ๋ณ€์ˆ˜๋“ค์„ ve์•ˆ์— ๋„ฃ๋Š”๋‹ค
	s<-s+ve		#s๋ณ€์ˆ˜ ์•ˆ์— s+ve๊ฐ’์„ ๋„ฃ์–ด๋ผ
}
print(s)

[1] 27

 

 

 

๋ฃจํ”„ ์ œ์–ด ๋ช…๋ น๋ฌธ

 

break๋ฌธ :  ํ˜„์žฌ ์‹คํ–‰์ค‘์ธ ๋ฃจํ”„๋ฌธ์„ ์ค‘๋‹จํ•˜๊ณ , ๋ฃจํ”„๋ฌธ ์ดํ›„ ๋ช…๋ น๋ฌธ๋ถ€ํ„ฐ ์‹คํ–‰ํ•œ๋‹ค.

next๋ฌธ : ํ˜„์žฌ ์‹คํ–‰์ค‘์ธ ๋ฃจํ”„๋ฌธ์„ ์ค‘๋‹จํ•˜๊ณ , ๋ฃจํ”„๋ฌธ์˜ ์ฒ˜์Œ์œผ๋กœ ๋˜๋Œ์•„๊ฐ€ ๋ช…๋ น๋ฌธ์„ ์‹คํ–‰ํ•œ๋‹ค.

next์˜ˆ์‹œ

v<-1:10
for(ve in v) {
	if(ve%%2 != 0) {	# %%:๋‚˜๋จธ์ง€ ์—ฐ์‚ฐ์ž
    	next
    }
    print(ve)
}

[1] 2
[1] 4
[1] 6
[1] 8
[1] 10

# ve๋ฅผ 2๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€ ๊ฐ’์ด 1์ด๋ฉด next(์ฒ˜์Œ for๋ฌธ)์œผ๋กœ ๋˜๋Œ์•„๊ฐ„๋‹ค
# ์ฆ‰, 1~10์ˆซ์ž ์ค‘ ์ง์ˆ˜๋งŒ print๋กœ ๋„˜์–ด๊ฐ

 

 

 

ํ•จ์ˆ˜(Functions)

  • ํŠน์ •ํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ช…๋ น๋ฌธ๊ณผ ๊ตฌ์กฐ๋ฅผ ๋‚˜์—ดํ•œ ์ง‘ํ•ฉ

 

๊ธฐ๋ณธ ํ•จ์ˆ˜(built-in functions) : R์—์„œ ๊ธฐ๋ณธ์œผ๋กœ ์ •์˜๋˜์–ด ์žˆ๋Š” ํ•จ์ˆ˜

#์‚ฌ์šฉ ๋ฐฉ๋ฒ•
<ํ•จ์ˆ˜๋ช…>(<์ž…๋ ฅ์ธ์ž1>,<์ž…๋ ฅ์ธ์ž2>,...)
<ํ•จ์ˆ˜๋ช…>(์ž…๋ ฅ์ธ์ž๋ช…1=<์ž…๋ ฅ์ธ์ž1>,์ž…๋ ฅ์ธ์ž๋ช…2=<์ž…๋ ฅ์ธ์ž2>,...)

#์˜ˆ์‹œ
mean(c(88,96,92))	#mean(ํ‰๊ท ์„ ๋‚ด๋Š” ํ•จ์ˆ˜)๊ณผ cํ•จ์ˆ˜์˜ ํ˜ธ์ถœ
png(file="result.png")	#์ž…๋ ฅ์ธ์ž๋ช…์„ ์ง€์ •ํ•˜์—ฌ ํ˜ธ์ถœ

 

 

์‚ฌ์šฉ์ž ์ •์˜ ํ•จ์ˆ˜(user-defined functions) : ์‚ฌ์šฉ์ž๊ฐ€ ์ž์‹ ์˜ ๋ชฉ์ ์— ๋งž๊ฒŒ๋” ํ•จ์ˆ˜๋ช…, ๋ช…๋ น๋ฌธ, ์‹คํ–‰๊ตฌ์กฐ, ์ž…๋ ฅ์ธ์ž, ์ถœ๋ ฅ์ธ์ž๋ฅผ ์ง€์ •ํ•œ ํ•จ์ˆ˜

  • ํ•„์ˆ˜ ์š”์†Œ : ํ•จ์ˆ˜๋ช…, function ํ‚ค์›Œ๋“œ, ์ค‘๊ด„ํ˜ธ ๋“ฑ
  • ์„ ํƒ ์š”์†Œ : ์ž…๋ ฅ์ธ์ž, ์ถœ๋ ฅ์ธ์ž, ์ž…๋ ฅ์ธ์ž๋ช… ๋“ฑ
# ์‚ฌ์šฉ์ž ์ •์˜ ํ•จ์ˆ˜ ์ƒ์„ฑ ๋ฌธ๋ฒ•
<ํ•จ์ˆ˜๋ช…><-function((์ž…๋ ฅ์ธ์ž๋ช…1=)<์ž…๋ ฅ์ธ์ž1>,...) {
	... #ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜๋ฉด ์‹คํ–‰ํ•  ๋ช…๋ น๋ฌธ ๋ฐ ๊ตฌ์กฐ
}

#์˜ˆ์‹œ
myFunc<-function(v) {	#์‚ฌ์šฉ์ž ์ •์˜ ํ•จ์ˆ˜ myFunc()
	s<-0
    for(ve in v) {
    	s<-s+v
    }
    return(s)
}
myFunc(c(2,3,7)	#์‚ฌ์šฉ์ž ์ •์˜ ํ•จ์ˆ˜ ํ˜ธ์ถœ

[1] 6 9 21

 

 

 

 

 

๋ฐ์ดํ„ฐํ˜•์˜ ์ข…๋ฅ˜

 

๋…ผ๋ฆฌํ˜•(Logical):True(์ฐธ), False(๊ฑฐ์ง“)์˜ ๊ฐ’์„ ๊ฐ€์ง

1 <- TRUE
class(1)

[1] "logical"
# ๋ณ€์ˆ˜ 1์— TRUE๊ฐ’์„ ๋Œ€์ž… ํ›„ ๋ฐ์ดํ„ฐ ํ˜•์„ ์ถœ๋ ฅ์‹œ "locial"์ถœ๋ ฅ

 

 

์ˆซ์žํ˜•(numeric): ์‹ค์ˆ˜๋ฅผ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐ์ดํ„ฐํ˜•

n<-3.1415
class(n)

[1] "numeric"

 

 

์ •์ˆ˜ํ˜•(integer): ์†Œ์ˆ˜์ ์ด ์—†๋Š” ์ •์ˆ˜๋ฅผ ํ‘œํ˜„

i<-1147L
class(i)

[1] "integer"
# ์†Œ์ˆ˜์ ์ด ์—†๋Š” ์ •์ˆ˜ ํ‘œํ˜„์‹œ ๋์— 'L'์„ ์ ๋Š”๋‹ค

 

 

๋ณต์†Œ์ˆ˜ํ˜•(complex): ๋ณต์†Œ์ˆ˜๋ฅผ ํ‘œํ˜„ํ•˜๊ณ ์ž ํ•  ๋•Œ ์‚ฌ์šฉ

c<-3+5i
class(c)

[1] "complex"
# '3'์€ ์‹ค์ˆ˜, '5i'๋Š” ํ—ˆ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค

 

 

๋ฌธ์žํ˜•(character):๋ฌธ์ž ๋˜๋Š” ๋ฌธ์ž์—ด์„ ํ‘œํ˜„ํ•  ๋•Œ ์‚ฌ์šฉ

s<-"hello"
class(s)

[1] "character"

 

 

์›ํ˜•(raw): ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์—์„œ ํ‘œํ˜„ํ•˜๋Š” ๊ธฐ๋ณธ ํ˜•ํƒœ

r<-charRoRaw("hello")
r

[1] 68 65 6c 6c 6f
# charToRaw = ๋ฌธ์ž๋ฅผ ์›ํ˜•์œผ๋กœ ๋ฐ”๊ฟ”์ฃผ๋Š” ํ•จ์ˆ˜

 

 

R๊ฐ์ฒด

 

๋ฐฑํ„ฐ(Vectors)

  • ๋‹ค์ˆ˜์˜ ๊ฐ’์„ ๋‹ด๊ณ  ์žˆ๋Š” R๊ฐ์ฒด
  • ๋‚ด๋ถ€ ๋ฐ์ดํ„ฐ๋Š” ํ•œ ๊ฐ€์ง€ ๋ฐ์ดํ„ฐํ˜•์œผ๋กœ ํ†ต์ผ
v<-c("hello",3.14)	#๋ฌธ์žํ˜•๊ณผ ์ˆซ์žํ˜• ํ˜ผ์šฉ
class(v)

[1] "character"		#๋ฌธ์žํ˜•์œผ๋กœ ๋ณ€ํ™”
v
[1] "hello" "3.14"

# c๋Š” ๋ฐฑํ„ฐ๋ฅผ ์ƒ์„ฑํ•ด์ฃผ๋Š” ํ•จ์ˆ˜์ด๋‹ค

 

 

๋ฆฌ์ŠคํŠธ(lists) :์„œ๋กœ ๋‹ค๋ฅธ ์œ ํ˜•์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” ๊ฐ์ฒด

l<-list("hello", 3.14)	#๋ฌธ์žํ˜•๊ณผ ์ˆซ์žํ˜• ํ˜ผ์šฉ
class(l)

[1] "list"		#๋ฆฌ์ŠคํŠธํ˜•์œผ๋กœ ์ถœ๋ ฅ
v
[[1]]
[1] "hello"		#๋ฌธ์žํ˜•์œผ๋กœ ์ถœ๋ ฅ
[[2]]
[1] 3.14		#์ˆซ์žํ˜•์œผ๋กœ ์ถœ๋ ฅ

 

 

ํ–‰๋ ฌ(matrices): ํ–‰๊ณผ ์—ด๋กœ ์ด๋ฃจ์–ด์ง„ 2์ฐจ์› ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ

m<-matrix(c(2,3,1,5),nrow=2,ncol=2)
class(m)

[1] "matrix"
m
    [,1][,2]
[1,]  2   1
[2,]  3   5

 

 

๋ฐฐ์—ด(arrays): ๋‹ค์ฐจ์›์œผ๋กœ ๊ตฌ์„ฑ๋œ ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ

  • ์ฐจ์›์˜ ์„ค์ •์— ๋”ฐ๋ฅธ ๋ฐฐ์—ด์˜ ๋ณ€ํ™”
    • 1์ฐจ์›์œผ๋กœ ์„ค์ • -> ๋ฐฐ์—ด(Arrays)๋กœ ์ทจ๊ธ‰
    • 2์ฐจ์›์œผ๋กœ ์„ค์ • -> ํ–‰๋ ฌ(Matrix)๋กœ ์ทจ๊ธ‰
    • 3์ฐจ์› ์ด์ƒ์œผ๋กœ ์„ค์ • -> ๋ฐฐ์—ด(Arrays)๋กœ ์ทจ๊ธ‰
ar1<-array(c(2,3,1,5),dim=c(4))
ar2<-array(c(2,3,1,5),dim=c(2,2))
ar3<-array(c(2,3,1,5),dim=c(1,2,2))

class(ar1)
[1] "array"

class(ar2)
[1] "matrix"

class(ar3)
[1] "array"

ar1	#1์ฐจ์›
[1] 2 3 1 5

ar2	#2์ฐจ์›
    [,1][,2]
[1,]  2   1
[2,]  3   5

ar3	#3์ฐจ์›
, , 1
    [,1][,2]
[1,]  2   3

, , 2
    [,1][,2]
[1,]  1   5

 

 

์š”์ธ(factors)

  • "๋ฒ”์ฃผ"๋ผ๊ณ ๋„ ๋ถ€๋ฆ„
  • ๋ฐ์ดํ„ฐ์˜ ๊ฐ’(value)๊ณผ ๋ ˆ๋ฒจ(lavel)์„ ํ•จ๊ป˜ ํ‘œํ˜„
  • ๊ฐ์ฒด๊ฐ€ ๊ตฌ์ถ•๋˜๋ฉฐ ๋ฐ์ดํ„ฐ๊ฐ€ ์ž๋™์œผ๋กœ ๋ถ„์„๋˜๋ฏ€๋กœ ํ†ต๊ณ„์  ๋ชจ๋ธ๋ง๊ณผ ๋ถ„์„์— ์œ ์šฉ
v<-c("kim","kim","han","lee","lee","kim")
vf<-factor(v)
vf

[1] kim kim han lee lee kim
Levels: han kim lee

class(vf)
[1] "factor"

 

 

๋ฐ์ดํ„ฐ ํ”„๋ ˆ์ž„(data frames)

  • ํ‘œ์˜ ํ˜•ํƒœ๋กœ ์ •๋ฆฌ๋œ ๋ฐ์ดํ„ฐ ๊ฐ์ฒด์˜ ์ผ์ข…
  • ์—ด(column)๊ณผ ํ–‰(row)์˜ ์ด๋ฆ„(name)์„ ์ง€์ • ๊ฐ€๋Šฅ
  • ์—ด๋งˆ๋‹ค ์„œ๋กœ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐํ˜•์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Œ
  • ์ˆซ์žํ˜•(numeric), ์š”์ธ(factor), ๋ฌธ์žํ˜•(character)์™ธ์˜ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์—†์Œ
  • ์—ด๋งˆ๋‹ค ๊ฐ™์€ ์ˆ˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•˜์—ฌ์•ผ ํ•จ
v<-c("kim","kim","han","lee","lee","kim")
vf<-factor(v)
vf

[1] kim kim han lee lee kim
Levels: han kim lee

class(vf)
[1] "factor"

summary(df)
gender		height		weight		age
femail :2	Min, :159.0	Min. :49	Min. :25.00
mail   :1
...

 

 

 

์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž(Arithmetic Operators)

 

a<-c(6,7)
b<-c(4,3)

a+b
[1] 10 10	# 6+4 7+3

a-b
[1] 2 4		# 6-4 7-3
...

 

 

๊ด€๊ณ„ ์—ฐ์‚ฐ์ž(Relational Operators)

 

a<-c(2,3,4)
b<-c(3,3,3)

a>b
[1] FALSE FALSE TRUE	#2>3 3>3 4>3

a<b
[1] TRUE FALSE FALSE	#2<3 3<3 4<3
...

 

 

๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž(Logical Operators)

a<-c(TRUE, FALSE, FALSE)
b<-c(TRUE, TRUE, FALSE)

a&b
[1] TRUE FALSE FALSE	#TRUE&TRUE FALSE&TRUE FALSE&FALSE

a|b
[1] TRUE TRUE FALSE

a&&b
[1] TRUE	#๋ฐฑํ„ฐ์˜ ์ฒซ๋ฒˆ์งธ๋งŒ ๋น„๊ต

a||b
[1] TRUE	#๋ฐฑํ„ฐ์˜ ์ฒซ๋ฒˆ์งธ๋งŒ ๋น„๊ต

 

 

๋Œ€์ž…(ํ• ๋‹น)์—ฐ์‚ฐ์ž(Assignment Operators)

 

 

๊ธฐํƒ€ ์—ฐ์‚ฐ์ž(Miscellaneous Operators

3:8
[1] 3 4 5 6 7 8

"pizza"%in%c("pizza","chicken")	#๋ฌธ์ž์—ด ํฌํ•จ ์—ฌ๋ถ€๋ฅผ ๊ฒ€์ •
[1] TRUE

"icecream"%in%c("pizza","chicken")	#๋ฌธ์ž์—ด ํฌํ•จ ์—ฌ๋ถ€๋ฅผ ๊ฒ€์ •
[1] FALSE

a<-matrix(c(1,2,3,4),nrow=2,n=col=2)	#ํ–‰๋ ฌ a์ƒ์„ฑ
b<-matrix(c(4,3,2,1),nrow=2,n=col=2)	#ํ–‰๋ ฌ b์ƒ์„ฑ

a*b
    [,1][,2]
[1,]  4   6
[2,]  6   4

a%*%b
    [,1][,2]
[1,]  13  5
[2,]  20  8

 

 

 

 

๋กฌ๋ถ์„ ๋‹ค์šด ๋ฐ›๊ณ  ํŒŒ์ผ์„ ์—ด๋ ค๊ณ  ํ•˜๋‹ˆ๊นŒ

๋งฅ๋ถ์ด ๊ฑฐ์ ˆํ–ˆ๋‹ค.

 

 

 

 

์‹œ์Šคํ…œ ์„ค์ • - ๊ฐœ์ธ์ •๋ณด ๋ณดํ˜ธ ๋ฐ ๋ณด์•ˆ์— ๋“ค์–ด๊ฐ€์„œ ์Šคํฌ๋กค์„ ์ข€ ๋‚ด๋ฆฌ๋ฉด ๋ณด์ธ๋‹ค.

๊ทธ๋ž˜๋„ ์—ด๊ธฐ ํด๋ฆญ

 

 

 

์—ด๊ธฐ ํด๋ฆญ

 

 

ํ•œ๋ฒˆ ๋” ๋ฌธ๊ตฌ ๋œจ๋ฉด ํ™•์ธ ํ•˜๋ฉด

 

 

์ž˜ ๋œน๋‹ˆ๋‹ค

 

 

 

jdk๋ฅผ ๋‹ค ์ง€์šฐ๊ณ  ์ƒˆ๋กœ ๊น”๊ณ  ์‹ถ์–ด์„œ

 

/Library/Java/JavaVirtualMachines/ ์— ๋“ค์–ด๊ฐ€์„œ ์ง€์› ๋‹ค.

 

์‚ญ์ œ ๋ช…๋ น์–ด

sudo rm -rf openjdk-8.jdk

 

์ง€์šด ํ›„ java -version๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ–ˆ๋Š”๋ฐ

์–ด๋ผ?

 

 

๋œฌ๋‹ค..

 

 

๊ฒฝ๋กœ๋กœ ์ง์ ‘ ๋“ค์–ด๊ฐ€์„œ ํ™•์ธํ•ด๋ดค๋Š”๋ฐ

์•„์ฃผ ํ……~ ์žฅ ๊ฐ™์ด ๋น„์–ด์žˆ๋‹ค.

 

 

๊ทผ๋ฐ ์™œ ๋œจ์ง€?

 

 

ํ™ˆ ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ์ด๋™

MacBookPro ~ % cd ~

 

 

์•„๋ž˜์˜ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•ด์ค€๋‹ค

MacBookPro ~ % sudo R CMD javareconf

 

 

๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜๋ผ๊ณ  ๋œจ๋Š”๋ฐ ์ž…๋ ฅํ•˜๋ฉด ์ด๋ ‡๊ฒŒ ๋œฐ ๊ฒƒ์ด๋‹ค.

 

๋นจ๊ฐ„ ๋ฐ•์Šค๋ฅผ ๋ณด๋ฉด ์ € ์œ„์น˜์— jdk๊ฐ€ ๋‚จ์•„์žˆ์—ˆ๋‹ค.

์™œ ์•ˆ์ง€์›Œ์ง„์ง€ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ์ € ์œ„์น˜๋กœ ๋“ค์–ด๊ฐ€์„œ ํด๋”๋ฅผ ์ง€์›Œ์คฌ๋‹ค.

 

 

๋‹ค์‹œ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๋ฉด

 

์ด์ œ์•ผ ์—†๋‹ค๋Š” ๋ฉ˜ํŠธ๊ฐ€ ๋‚˜์˜จ๋‹ค

 

 

ํ•ด๊ฒฐ์™„๋ฃŒ!

R์ด๋ž€?  : ํ†ต๊ณ„ ๋ถ„์„, ๊ทธ๋ž˜ํ”ฝ ํ‘œํ˜„, ๋ณด๊ณ  ์ž‘์„ฑ์„ ์œ„ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ๋ฐ ์†Œํ”„ํŠธ์›จ์–ด ํ™˜๊ฒฝ

  • ํ†ต๊ณ„ ๋ถ„์„ - ์„ ํ˜• ๋ฐ ๋น„์„ ํ˜• ๋ชจ๋ธ๋ง, ํ†ต๊ณ„ ๊ฒ€์ •, ์‹œ๊ณ„์—ด ๋ถ„์„, ๋ถ„๋ฅ˜, ๊ตฐ์ง‘ํ™” ๋“ฑ์˜ ๊ธฐ๋Šฅ
  • ๊ทธ๋ž˜ํ”ฝ ํ‘œํ˜„ ๋ฐ ๋ณด๊ณ  ์ž‘์„ฑ - ๋ง‰๋Œ€ํ˜• ๊ทธ๋ž˜ํ”„, ์›ํ˜• ๊ทธ๋ž˜ํ”„, 3์ฐจ์› ๊ทธ๋ž˜ํ”„ ๋“ฑ ์ถœ๋ ฅ
  • GNU GPL Version 2 ๋ผ์ด์„ ์Šค์— ์˜ํ•˜์—ฌ ๊ด€๋ฆฌ
  • Windows, Linux, Mac ๋“ฑ ๋‹ค์–‘ํ•œ ์šด์˜์ฒด์ œ ํ™˜๊ฒฝ ์ง€์›

ํŠน์ง•

  • ํšจ๊ณผ์ ์ธ ๋ฐ์ดํ„ฐ ํ•ธ๋“ค๋ง ๋ฐ ์ €์žฅ์†Œ ๊ธฐ๋Šฅ
  • ์„ ํ˜•๋Œ€์ˆ˜ ์—ฐ์‚ฐ์— ์ ํ•ฉํ•œ ์—ฐ์‚ฐ์ž ์ œ๊ณต
  • ์ผ๊ด€์„ฑ ์žˆ์œผ๋ฉฐ ํ†ตํ•ฉ๋œ ๋ฐ์ดํ„ฐ ๋ถ„์„ ๋„๊ตฌ
  • ๋ฐ์ดํ„ฐ ๋ถ„์„์˜ ๊ทธ๋ž˜ํ”ฝ ๋ฐ ์ถœ๋ ฅ ๊ธฐ๋Šฅ
  • ๊ฒฌ๊ณ ํ•˜๋ฉด์„œ๋„ ๊ฐ„๊ฒฐํ•˜๊ณ  ํšจ๊ณผ์ ์ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด (์กฐ๊ฑด๋ฌธ, ๋ฃจํ”„, ์‚ฌ์šฉ์ž ์ •์˜ ์žฌ๊ท€ ํ•จ์ˆ˜, ์ž…์ถœ๋ ฅ ๊ธฐ๋Šฅ ๋“ฑ)

์„ค์น˜ (R๋จผ์ € ๊น”๊ณ  RStudio๊น”์•„์•ผ์ง€ ์‹คํ–‰ ๋ฉ๋‹ˆ๋‹ค)

 

R

https://cran.r-project.org/

 

The Comprehensive R Archive Network

 

cran.r-project.org

 

RStudio

https://posit.co/download/rstudio-desktop/

 

Posit

The best data science is open source. Posit is committed to creating incredible open-source tools for individuals, teams, and enterprises.

posit.co

 

 

RStudio ์‹คํ–‰ ์‹œ ํ™”๋ฉด

 

 

 

๊ธฐ๋ณธ ๋ฌธ๋ฒ•

 

๋Œ€์ž…(ํ• ๋‹น) ์—ฐ์‚ฐ์ž์˜ ์‚ฌ์šฉ

  • <- ์—ฐ์‚ฐ์ž ๋˜๋Š” -> ์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ณ€์ˆ˜์— ๊ฐ’์„ ๋Œ€์ž…
a<-3
# ๋ณ€์ˆ˜ a์— 3์„ ๋Œ€์ž…

a+3->b
# ๋ณ€์ˆ˜ b์— a+3์˜ ๊ฒฐ๊ณผ๋ฅผ ๋Œ€์ž…

1<-list("pizza",3,119.2)
# ๋ณ€์ˆ˜l์— ๋ฆฌ์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๋Œ€์ž…

 

์ฃผ์„

  • ์ฃผ์„(comments): ์‹ค์ œ๋กœ ์‹คํ–‰๋˜์ง€ ์•Š๋Š” ์ฝ”๋“œ์˜ ๋ฉ”๋ชจ
  • # ๊ธฐํ˜ธ๋ฅผ ์ด์šฉํ•˜์—ฌ ์ฃผ์„ ์ •์˜ ๊ฐ€๋Šฅ
# ์ €๋Š” ์‹คํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค

 

 

 

๋ณ€์ˆ˜(Variables)

  • ๋ชจ๋“  ๋ณ€์ˆ˜๋Š” ๋ฌธ์ž, ์ˆซ์ž, ์ (.), ๋ฐ‘์ค„ ๋ฌธ์ž(_)๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • ์ฒซ๋ฒˆ์งธ ๋ฌธ์ž๋Š” ์ˆซ์ž์™€ ๋ฐ‘์ค„ ๋ฌธ์ž(_)๋กœ ์‹œ์ž‘ํ•  ์ˆ˜ ์—†๋‹ค.
  • ์ฒซ๋ฒˆ์งธ ๋ฌธ์ž๊ฐ€ ์ (.)์ธ ๊ฒฝ์šฐ -> ๋‘๋ฒˆ์งธ ๋ฌธ์ž๋Š” ์ˆซ์ž ์™ธ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๋‹ค.
test2.	#์‚ฌ์šฉ ๊ฐ€๋Šฅ
test%	#์‚ฌ์šฉ ๋ถˆ๊ฐ€๋Šฅ
2test	#์‚ฌ์šฉ ๋ถˆ๊ฐ€๋Šฅ
.test	#์‚ฌ์šฉ ๊ฐ€๋Šฅ
.2test	#์‚ฌ์šฉ ๋ถˆ๊ฐ€๋Šฅ
_test	#์‚ฌ์šฉ ๋ถˆ๊ฐ€๋Šฅ

 

๋ณ€์ˆ˜ ๊ด€๋ จ ํ•จ์ˆ˜

  • class() : ๋ณ€์ˆ˜์˜ ๋ฐ์ดํ„ฐํ˜•์„ ์•Œ์•„๋‚ด๊ธฐ ์œ„ํ•œ ํ•จ์ˆ˜
class(a)
[1] "character"
# ๋ณ€์ˆ˜ a์˜ ๋ฐ์ดํ„ฐํ˜•์„ ์•Œ์•„๋‚ด๊ธฐ ์œ„ํ•จ

 

  • ls() :  ํ˜„์žฌ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ๋ณ€์ˆ˜์˜ ๋ชฉ๋ก ์ถœ๋ ฅ
ls()
[1] "a" "b" "c"
# ํ˜„์žฌ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ๋ณ€์ˆ˜์˜ ๋ชฉ๋ก

ls(pattern="c")
[1] "c"
# ํŠน์ • ๋ณ€์ˆ˜ ์‚ฌ์šฉ ์—ฌ๋ถ€๋ฅผ ์ถœ๋ ฅ

 

  • rm() : ๋ณ€์ˆ˜๋ฅผ ์ง€์šฐ๋Š” ํ•จ์ˆ˜
rm("a")
ls()
[1] "b" "c"
# a ๋ณ€์ˆ˜๋ฅผ ์‚ญ์ œ
# ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์ง€ ์•Š์€ ๋ณ€์ˆ˜ ์ž…๋ ฅ์‹œ Warning message ์ถœ๋ ฅ

 

 

 

 

 

 

 

cap ์ด๋ก 

 

โ‹† ์ผ๊ด€์„ฑ(Consistency) : ๋ชจ๋“  ๋…ธ๋“œ๋Š” ๋™์ผ ์‹œ์ ์— ๋™์ผ ๋ฐ์ดํ„ฐ ์ถœ๋ ฅ์ด ๋ณด์žฅ

โ‹† ๊ฐ€์šฉ์„ฑ(Availability) : ๋…ธ๊ทธ๊ฐ€ ์ด์šฉ ๋ถˆ๊ฐ€๋Šฅํ•ด๋„ ๋‹ค๋ฅธ ๋…ธ๋“œ ์ •์ƒ ์ž‘๋™ ๋ณด์žฅ

โ‹† ์ง€์†์„ฑ(Parttition Tolerance) : ๋ฐ์ดํ„ฐ ์†์‹ค์ด ๋ฐœ์ƒํ•ด๋„ ์‹œ์Šคํ…œ ์ •์ƒ ์ž‘๋™ ๋ณด์žฅ (RDBMS๋Š” ์ง€์†์„ฑ์— ํ•œ๊ณ„๊ฐ€ ์žˆ๋‹ค.)

โœ” ๋…ธ๋“œ๋ž€? : ๋น…๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋ฐ ๋ถ„์„์„ ์œ„ํ•œ ์ปดํ“จํŒ… ์ž์›์„ ์ œ๊ณตํ•˜๋Š” ์ปดํ“จํŒ… ์žฅ๋น„์ž…๋‹ˆ๋‹ค.

 

 

RDBMS์˜ ๋Œ€์•ˆ

 

โ‹† ํ•˜๋‘ก(Hadoop) : ํ•˜๋‘ก ๋ถ„์‚ฐํŒŒ์ผ ์‹œ์Šคํ…œ(HDFS) , ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ์— ์šฉ์ดํ•˜๋‹ค 

โ‹† NoSQL : ๋น„๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ , ๋ฐ์ดํ„ฐ์˜ ์†์‹ค์— ๋Œ€์ฒ˜ ๊ฐ€๋Šฅํ•˜๋‹ค

โ‹† ๋ ˆ๋””์Šค(Redis) : NoSQL์˜ ์ผ์ข…์ด๋ฉฐ key-value ๊ตฌ์กฐ ์ €์žฅ์†Œ, ์ธ๋ฉ”๋ชจ๋ฆฌ ์ €์žฅ์†Œ ๊ตฌ์กฐ

โ‹† ์šฐ์ง€(Oozie) : ์ž๋ฐ” ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋ฐ˜ ์ž‘์—… ์—”์ง„, DAG ํ‘œํ˜„ ๊ธฐ๋ฐ˜ ์ž‘์—…(job)์ œ์–ด

 

 

ํ•˜๋‘ก ๋ถ„์‚ฐ ํŒŒ์ผ ์‹œ์Šคํ…œ(HDFS)

 

๊ตฌ์„ฑ์š”์†Œ

โ‹† ๋„ค์ž„๋…ธ๋“œ ์„œ๋ฒ„ : ํŒŒ์ผ์˜ ์œ„์น˜(iNode), ๋ฉ”ํƒ€์ •๋ณด ๊ด€๋ฆฌ, ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ

โ‹† ๋ณด์กฐ ๋„ค์ž„๋…ธ๋“œ ์„œ๋ฒ„ : ๋„ค์ž„๋…ธ๋“œ ์„œ๋ฒ„์˜ ๋ฐฑ์—… ์—ญํ• , ํŒŒ์ผ ์‹œ์Šคํ…œ ๋ณต๊ตฌ

โ‹† ๋ฐ์ดํ„ฐ ๋…ธ๋“œ ์„œ๋ฒ„ : ๊ณ ์ •๋œ ํฌ๊ธฐ์˜ ๋ธ”๋ก ๋‹จ์œ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋‚˜๋ˆ„์–ด ์ €์žฅ

๋ฐ์ดํ„ฐ ์š”์ฒญ ๋ฐฉ๋ฒ•

 

 

 

NoSQL(Not-Only-SQL)

 

๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ณ„ ๋ถ„๋ฅ˜

โ‹† ํ‚ค๋ฐธ๋ฅ˜(Keyvalue) : ํŠน์ • ๊ฐ’์„ ๊ณ ์œ ํ‚ค์™€ ๋Œ€์‘ํ•˜์—ฌ ์Šคํ‚ค๋งˆ ์—†์ด ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์œ ํ˜•

โ‹† ์ˆœ์ฐจ์  ํ‚ค๋ฐธ๋ฅ˜(Ordered KeyValue) : ํ‚ค๋ฐธ๋ฅ˜ ์Œ์„ ์ˆœ์ฐจ์ ์œผ๋กœ ์ €์žฅ, ์—ฐ์†์„ฑ์„ ๋ถ€์—ฌํ•จ์œผ๋กœ์จ ์˜์—ญ ์Šค์บ” ํšจ์œจ์„ ๋†’์—ฌ์คŒ

โ‹† ๋น…ํ…Œ์ด๋ธ”(BigTable) : ํ…Œ์ด๋ธ” ํ˜•์‹(Tabular), 2~3๋‹จ๊ณ„๊นŒ์ง€ ์žฌ๊ท€์  ๊ตฌ์กฐ (ํ…Œ์ด๋ธ”์˜ ๋‚ด๋ถ€์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์ž๊ธฐ ์ž์‹ ์˜ ์–ด๋– ํ•œ ๋ถ€๋ถ„์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฒƒ)ํ˜•์„ฑ ๊ฐ€๋Šฅ

โ‹† ๋„ํ๋จผํŠธ(Document): ๊ฐ์ฒด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(ODBMS)์˜ ํŒŒ์ƒํ˜•, ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ๊นŠ์ด์— ์ œํ•œ ์—†์Œ

โ‹† ๊ทธ๋ž˜ํ”„(Graph): ๊ฐ€๋ณ€์ ์ธ ๋ฐ์ดํ„ฐ ๋…ธ๋“œ ๊ฐ„ ์—ฐ๊ฒฐ ๊ตฌ์กฐ, ์ œ์•ฝ์—†๋Š” ๊ด€๊ณ„ ํ˜•์„ฑ ๊ฐ€๋Šฅ

 

์‹œ์Šคํ…œ ๊ตฌ์„ฑ

โ›ค ๋งˆ์Šคํ„ฐ-์Šฌ๋ ˆ์ด๋ธŒ(Master-Slave)

  • ๋งˆ์Šคํ„ฐ ๋…ธ๋“œ๊ฐ€ ์Šฌ๋ ˆ์ด๋ธŒ/๋ฐ์ดํ„ฐ์˜ ๋ฉ”ํƒ€ ์ •๋ณด ๊ด€๋ฆฌ
  • ์„œ๋ฒ„์ถ”๊ฐ€/์‚ญ์ œ ์ž‘์—…์— ์šฉ์ด
  • ๋งˆ์Šคํ„ฐ์— ๋ถ€ํ•˜ ์ฆ๊ฐ€

โ›ค ๋ผ์šด๋“œ ํ…Œ์ด๋ธ”(Round Table)

  • ํ•ด์‹œํ…Œ์ด๋ธ”(HashTable)๊ธฐ๋ฐ˜ ๊ตฌ์กฐ
  • ๋งˆ์Šคํ„ฐ ๋…ธ๋“œ ์—†์Œ -> ํŠธ๋ž˜ํ”ฝ ๋ถ„์‚ฐ ์šฉ์ด
  • ๋ฉค๋ฒ„ ๋…ธ๋“œ ์ถ”๊ฐ€/์‚ญ์ œ ์‹œ ๋ฐ์ดํ„ฐ ์ด๋™ -> ํŠธ๋ž˜ํ”ฝ ์ฆ๊ฐ€

 

ํ•˜๋‘ก ๋ช…๋ น์–ด

ls : ํŒŒ์ผ(ํด๋”) ์กฐํšŒ -> ํŒŒ์ผ(ํด๋”๋ฅผ) ์กฐํšŒํ•˜๋Š” ๋ช…๋ น์–ด

hadoop fs -ls /
# hadoop fs -๋Š” hadoop์œผ๋กœ ๊ฒ€์ƒ‰ํ•˜๊ฒ ๋‹ค
# ls / ๋Š” '/'๋ผ๋Š” ๊ณณ์— ์žˆ๋Š” ํŒŒ์ผ์„ ์กฐํšŒํ•˜๊ฒ ๋‹ค

 

put : ํŒŒ์ผ ์˜ฌ๋ฆฌ๊ธฐ -> ๋กœ์ปฌ ํŒŒ์ผ์„ HDFS์— ์ €์žฅํ•˜๋Š” ๋ช…๋ น์–ด

hadoop fs -put hello.txt h_hello.txt
# hello.txt : ๋‚ด ์ปดํ“จํ„ฐ์— ์žˆ๋Š” ํŒŒ์ผ๋ช…
# h_hello.txt : ํ•˜๋‘ก์— ์ €์žฅํ•  ํŒŒ์ผ๋ช…

 

get : ํŒŒ์ผ ๊ฐ€์ ธ์˜ค๊ธฐ -> HDFS์˜ ํŒŒ์ผ์„ ๋กœ์ปฌ๋กœ ๊ฐ€์ ธ์˜ค๋Š” ๋ช…๋ น์–ด

hadoop fs -get h_bye.txt bye.txt
# h_bye.txt : ํ•˜๋‘ก์— ์ €์žฅํ•  ํŒŒ์ผ๋ช…
# bye.txt : ๋‚ด ์ปดํ“จํ„ฐ์— ์žˆ๋Š” ํŒŒ์ผ๋ช…

 

cp : ํŒŒ์ผ ๋ณต์‚ฌํ•˜๊ธฐ -> HDFS์˜ ํŒŒ์ผ์„ HDFS์ƒ์—์„œ ๋ณต์‚ฌ

hadoop fs -cp test1.txt test2.txt

 

rm : ํŒŒ์ผ ์‚ญ์ œํ•˜๊ธฐ -> HDFS์˜ ํŒŒ์ผ์„ ์‚ญ์ œํ•˜๊ธฐ

hadoop fs -rm test2.txt

 

chmod : ๊ถŒํ•œ ๋ณ€๊ฒฝ -> HDFS์ƒ์˜ ํŒŒ์ผ์˜ ๊ถŒํ•œ์„ ๋ณ€๊ฒฝ

hadoop fs -chmod 700 test.txt

 

chown : ์†Œ์œ ๊ถŒ ๋ณ€๊ฒฝ -> HDFS์ƒ์˜ ํŒŒ์ผ์˜ ์†Œ์œ ๊ถŒ์„ ๋ณ€๊ฒฝ

hadoop fs -chown recorder test.txt
# recorder : ์†Œ์œ ์ž

 

 

 

MongoDB(๋ชฝ๊ณ DB)

 

ํŠน์ง•

โ›ค ๋ฌธ์„œ ์ง€ํ–ฅ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

  • ๋ฌธ์„œ(document)์™€ ๋ฐฐ์—ด(array)์˜ ๊ฐœ๋… ๋„์ž…
  • ๋ณต์žกํ•œ ๊ณ„์ธต ๊ด€๊ณ„๋ฅผ ํ•˜๋‚˜์˜ ๋ ˆ์ฝ”๋“œ๋กœ ํ‘œํ˜„ ๊ฐ€๋Šฅ
  • NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

โ›ค ๋”๋ธ” ๋งํฌ๋“œ ๋ฆฌ์Šคํฌ ๊ตฌ์กฐ : ๋ฐ์ดํ„ฐ์˜ ์ˆœ๋ฐฉํ–ฅ-์—ญ๋ฐฉํ–ฅ ํƒ์ƒ‰ ๊ฐ€๋Šฅ

 

์ฃผ์š” ๊ฐœ๋…

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(Database) : ์ปฌ๋ ‰์…˜์˜ ๋…ผ๋ฆฌ์ /๋ฌผ๋ฆฌ์ ์ธ ์ง‘ํ•ฉ

์ปฌ๋ ‰์…˜(Collection) : ๊ตฌ์กฐ์ /๊ฐœ๋…์ ์œผ๋กœ ์œ ์‚ฌํ•œ ๋„ํ๋จผํŠธ์˜ ์ง‘ํ•ฉ

์ต์Šคํ…ํŠธ(Extent) : ๋ฐ์ดํ„ฐ ์ €์žฅ์„ ์œ„ํ•œ ๋…ผ๋ฆฌ ๋‹จ์œ„

๋„ํ๋จผํŠธ(Document) : ์ •๋ ฌ๋œ ํ‚ค(Key)-๊ฐ’(Value)์˜ ์ง‘ํ•ฉ

 

๋ชฝ๊ณ DB๋ช…๋ น์–ด

use : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ƒ์„ฑ(์‚ฌ์šฉ)ํ•˜๋Š” ๋ช…๋ น

use mydatabase
# mydatabase๋ผ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
# ์ด๋ฏธ ์žˆ๋‹ค๋ฉด ์‚ฌ์šฉํ•œ๋‹ค.

 

dropDatabase() : ํ˜„์žฌ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ญ์ œ

db.dropDatabase()
# ์‚ฌ์šฉ์ค‘์ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ญ์ œํ•œ๋‹ค.

 

createCollection() : ์ปฌ๋ ‰์…˜์„ ์ƒ์„ฑ(์‚ฌ์šฉ)ํ•˜๋Š” ๋ช…๋ น

db.createCollection("test")
{"ok" : 1 } --> ์ƒ์„ฑ ํ›„ ๋‚˜์˜ค๋Š” ๋ฉ”์„ธ์ง€
# test :์ƒ์„ฑํ•˜๊ณ ์ž ํ•˜๋Š” ์ปฌ๋ ‰์…˜

 

drop() : ์ปฌ๋ ‰์…˜์„ ์‚ญ์ œํ•˜๋Š” ๋ช…๋ น

db.test.drop()
# test ์ปฌ๋ ‰์…˜์„ ์‚ญ์ œํ•œ๋‹ค

 

insert() : ๋„ํ๋จผํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ช…๋ น

db.test.insert(
	{"title":"hello", "author":"recorder"}
    {"title":"bye", "author":"bboong"}
    
# ์„ฑ๊ณต์ ์œผ๋กœ ์‚ฝ์ž…์‹œ    
BulkWriteResult({
	"writeErrors" : [ ],
    "writeConcernErrors" : [ ],
    "nInserted" : 2,
    "nUpserted" : 0,
    ...

 

remove() : ๋„ํ๋จผํŠธ๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๋ช…๋ น

db.test.remove({"title": "hello"})

# ์‹คํ–‰ ์„ฑ๊ณต์‹œ ์ถœ๋ ฅ
{"_id" ObjectId("..."),
"title" : "hello", "author" : "recorder"}

 

 

 

 

+ Recent posts