day51 πŸŒ•

μž₯λ―ΈΒ·2022λ…„ 8μ›” 3일
0

였늘의 μ„±κ³Ό

λͺ©λ‘ 보기
51/129

μŠ€ν”„λ§ MVC 2편 - λ°±μ—”λ“œ μ›Ή 개발 ν™œμš© 기술 μ„Ήμ…˜ 6 절반 μˆ˜κ°•

+) 22. 08. 10. μΆ”κ°€!

μ„Ήμ…˜ 6. 둜그인 처리1 - μΏ ν‚€, μ„Έμ…˜ μˆ˜κ°• μ™„λ£Œ!!

νŒ¨ν‚€μ§€ ꡬ쑰

  • domain
    • item
    • member
    • login
  • web
    • item
    • member
    • login

domain: ν™”λ©΄, UI, 기술 인프라 λ“±μ˜ μ˜μ—­μ„ μ œμ™Έν•œ, μ‹œμŠ€ν…œμ΄ κ΅¬ν˜„ν•΄μ•Ό ν•˜λŠ” 핡심 λΉ„μ¦ˆλ‹ˆμŠ€ 업무 μ˜μ—­μ΄λ‹€.
ν–₯ν›„ web을 λ‹€λ₯Έ 기술둜 바꾸어도 도메인은 κ·ΈλŒ€λ‘œ μœ μ§€ν•  수 μžˆμ–΄μ•Ό ν•œλ‹€. 즉, web은 domain을 μ˜μ‘΄ν•˜μ§€λ§Œ domain은 web을 μ˜μ‘΄ν•˜μ§€ μ•Šμ•„μ•Ό ν•œλ‹€.

public Member login(String loginId, String password) {
	return memberRepository.findByLoginId(loginId)
		.filter(m -> m.getPassword().equals(password))
		.orElse(null);
}

⬆️ 둜그인의 핡심 λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ€ νšŒμ›μ„ μ‘°νšŒν•œ λ‹€μŒ, νŒŒλΌλ―Έν„°λ‘œ λ„˜μ–΄μ˜¨ password와 λΉ„κ΅ν•΄μ„œ κ°™μœΌλ©΄ νšŒμ›μ„ λ°˜ν™˜ν•˜κ³ , λ‹€λ₯΄λ©΄ null을 λ°˜ν™˜ν•œλ‹€.

둜그인 μƒνƒœ μœ μ§€ν•˜κΈ°

λ‘œκ·ΈμΈμ— μ„±κ³΅ν•˜λ©΄ μ„œλ²„μ—μ„œ HTTP 응닡에 μΏ ν‚€λ₯Ό λ‹΄μ•„ λΈŒλΌμš°μ €μ— μ „λ‹¬ν•œλ‹€. 그럼 λΈŒλΌμš°μ €λŠ” ν•΄λ‹Ή μΏ ν‚€λ₯Ό μ§€μ†ν•΄μ„œ 보내쀀닀.

μΏ ν‚€ 생성 - 둜그인

⬆️ μΏ ν‚€ 생성 - 둜그인

ν΄λΌμ΄μ–ΈνŠΈ μΏ ν‚€ 전달

⬆️ ν΄λΌμ΄μ–ΈνŠΈ μΏ ν‚€ 전달

μΏ ν‚€μ—λŠ” μ˜μ† 쿠킀와 μ„Έμ…˜ μΏ ν‚€κ°€ μžˆλ‹€.

  • μ˜μ† μΏ ν‚€: 만료 λ‚ μ§œλ₯Ό μž…λ ₯ν•˜λ©΄ ν•΄λ‹Ή λ‚ μ§œκΉŒμ§€ μœ μ§€
  • μ„Έμ…˜ μΏ ν‚€: 만료 λ‚ μ§œλ₯Ό μƒλž΅ν•˜λ©΄ λΈŒλΌμš°μ € μ’…λ£Œ μ‹œκΉŒμ§€λ§Œ μœ μ§€

cookie.setMaxAge(0);
μ›Ή λΈŒλΌμš°μ € μ’…λ£Œ μ‹œ μ„œλ²„μ—μ„œ ν•΄λ‹Ή μΏ ν‚€μ˜ μ’…λ£Œ λ‚ μ§œλ₯Ό 0으둜 μ§€μ •ν•œλ‹€. ν•΄λ‹Ή μΏ ν‚€λŠ” μ¦‰μ‹œ μ’…λ£Œλœλ‹€.

쿠킀와 λ³΄μ•ˆ 문제

μΏ ν‚€ 값은 μž„μ˜λ‘œ λ³€κ²½ν•  수 있으며, 쿠킀에 λ³΄κ΄€λœ 정보 λ˜ν•œ ν›”μ³κ°ˆ 수 μžˆλ‹€.
λ”°λΌμ„œ 쿠킀에 μ€‘μš”ν•œ 값을 λ…ΈμΆœν•˜μ§€ μ•Šκ³  μ‚¬μš©μžλ³„λ‘œ 예츑 λΆˆκ°€λŠ₯ν•œ μž„μ˜μ˜ 토큰(랜덀 κ°’)을 λ…ΈμΆœν•˜κ³ , μ„œλ²„μ—μ„œ 토큰과 μ‚¬μš©μž IDλ₯Ό λ§€ν•‘ν•΄μ„œ 인식해야 ν•œλ‹€. 그리고 μ„œλ²„μ—μ„œ 토큰을 관리해야 ν•œλ‹€.

μ„Έμ…˜

μ΄λ ‡κ²Œ μ„œλ²„μ— μ€‘μš”ν•œ 정보λ₯Ό λ³΄κ΄€ν•˜κ³  연결을 μœ μ§€ν•˜λŠ” 방법을 μ„Έμ…˜μ΄λΌ ν•œλ‹€.

μ„Έμ…˜ - 둜그인

⬆️ μ„Έμ…˜ - 둜그인

μ‚¬μš©μžκ°€ loginId, password 정보λ₯Ό μ „λ‹¬ν•˜λ©΄ μ„œλ²„μ—μ„œ ν•΄λ‹Ή μ‚¬μš©μžκ°€ λ§žλŠ”μ§€ ν™•μΈν•œλ‹€.

μ„Έμ…˜ 생성

⬆️ μ„Έμ…˜ 생성

μΆ”μ • λΆˆκ°€λŠ₯ν•œ μ„Έμ…˜ IDλ₯Ό μƒμ„±ν•œλ‹€. UUIDλŠ” 좔정이 λΆˆκ°€λŠ₯ν•˜λ‹€.
μƒμ„±λœ μ„Έμ…˜ ID와 μ„Έμ…˜μ— 보관할 κ°’(memberA)을 μ„œλ²„μ˜ μ„Έμ…˜ μ €μž₯μ†Œμ— λ³΄κ΄€ν•œλ‹€.

μ„Έμ…˜ IDλ₯Ό μΏ ν‚€λ‘œ 전달

⬆️ μ„Έμ…˜ IDλ₯Ό 응닡 μΏ ν‚€λ‘œ 전달

ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„λŠ” κ²°κ΅­ μΏ ν‚€λ‘œ μ—°κ²°λ˜μ–΄μ•Ό ν•œλ‹€.
μ„œλ²„λŠ” ν΄λΌμ΄μ–ΈνŠΈμ— mySessionIdλΌλŠ” μ΄λ¦„μœΌλ‘œ μ„Έμ…˜ ID만 쿠킀에 λ‹΄μ•„μ„œ μ „λ‹¬ν•œλ‹€.
ν΄λΌμ΄μ–ΈνŠΈλŠ” μΏ ν‚€ μ €μž₯μ†Œμ— mySessionId μΏ ν‚€λ₯Ό λ³΄κ΄€ν•œλ‹€.

νšŒμ›κ³Ό κ΄€λ ¨λœ μ •λ³΄λŠ” ν΄λΌμ΄μ–ΈνŠΈμ—κ²Œ μ „λ‹¬ν•˜μ§€ μ•Šκ³ , 였직 μΆ”μ • λΆˆκ°€λŠ₯ν•œ μ„Έμ…˜ ID만 μΏ ν‚€λ₯Ό 톡해 μ „λ‹¬ν•œλ‹€.

HttpSession

μ„œλΈ”λ¦Ώμ„ 톡해 HttpSession을 μƒμ„±ν•˜λ©΄ λ‹€μŒκ³Ό 같은 μΏ ν‚€λ₯Ό μƒμ„±ν•œλ‹€.
μΏ ν‚€ 이름은 JSESSIONID이고, 값은 μΆ”μ • λΆˆκ°€λŠ₯ν•œ 랜덀 값이닀.
Cookie: JSESSIONID=5B78E23B513F50164D6FDD8C97B0AD05

  • request.getSession(true)
    μ„Έμ…˜μ΄ 있으면 κΈ°μ‘΄ μ„Έμ…˜μ„ λ°˜ν™˜ν•œλ‹€.
    μ„Έμ…˜μ΄ μ—†μœΌλ©΄ μƒˆλ‘œμš΄ μ„Έμ…˜μ„ μƒμ„±ν•΄μ„œ λ°˜ν™˜ν•œλ‹€.

  • request.getSession(false)
    μ„Έμ…˜μ΄ 있으면 κΈ°μ‘΄ μ„Έμ…˜μ„ λ°˜ν™˜ν•œλ‹€.
    μ„Έμ…˜μ΄ μ—†μœΌλ©΄ μƒˆλ‘œμš΄ μ„Έμ…˜μ„ μƒμ„±ν•˜μ§€ μ•Šκ³  null을 λ°˜ν™˜ν•œλ‹€.

  • session.invalidate()
    μ„Έμ…˜μ„ μ œκ±°ν•œλ‹€.

이미 둜그인된 μ‚¬μš©μžλ₯Ό 찾을 λ•ŒλŠ” λ‹€μŒκ³Ό 같이 μ‚¬μš©ν•˜λ©΄ λœλ‹€. (μ„Έμ…˜μ„ μƒμ„±ν•˜μ§€ μ•ŠλŠ”λ‹€.)
@SessionAttribute(name = "loginMember", required = false) Member loginMember

μ„Έμ…˜μ˜ μ’…λ£Œ μ‹œμ 

μ‚¬μš©μžκ°€ μ„œλ²„μ— 졜근 μš”μ²­ν•œ μ‹œκ°„μ„ κΈ°μ€€μœΌλ‘œ 30λΆ„ 정도λ₯Ό μœ μ§€ν•΄μ£Όλ©΄, μ„Έμ…˜μ˜ 생쑴 μ‹œκ°„μ΄ 30λΆ„μœΌλ‘œ 계속 λŠ˜μ–΄λ‚˜κ²Œ λœλ‹€. HttpSession은 이 방식을 μ‚¬μš©ν•œλ‹€.
μ„Έμ…˜μ˜ μ‹œκ°„μ„ λ„ˆλ¬΄ 길게 μ„€μ •ν•˜λ©΄ λ©”λͺ¨λ¦¬ μ‚¬μš©μ΄ 계속 λˆ„μ λ  수 μžˆμœΌλ―€λ‘œ μ λ‹Ήν•œ μ‹œκ°„μ„ μ„ νƒν•˜λŠ” 것이 μ€‘μš”ν•˜λ‹€. HttpSession이 μ œκ³΅ν•˜λŠ” νƒ€μž„μ•„μ›ƒμ€, 기본이 30λΆ„μ΄λΌλŠ” 것을 κΈ°μ€€μœΌλ‘œ κ³ λ―Όν•˜λ©΄ λœλ‹€.


RDB vs NoSQL

+) 22. 08. 04. 04:04 μΆ”κ°€ (444 μ‹ κΈ°ν•˜λ„€...)

RDB(Relational Database)

κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€λž€, 데이터λ₯Ό λ‹¨μˆœν•œ ν‘œ(table) ν˜•νƒœλ‘œ ν‘œν˜„ν•œ λ°μ΄ν„°λ² μ΄μŠ€λ‹€.
μ‚¬μš©μžλŠ” ν‘œμ˜ λΆ„ν• , 결합을 자유둭게 ν•  수 있으며 μΆ”κ°€, 변경도 λ‹€λ₯Έ 영ν–₯을 받지 μ•Šκ²Œ ν–‰ν•  수 μžˆλ‹€.
RDBλŠ” 데이터 독립성이 λ†’μœΌλ©° κ²°ν•©(join), μ œμ•½(restriction), 투영(projection) λ“± 관계 μ‘°μž‘μ— μ˜ν•΄ ν‘œν˜„ λŠ₯λ ₯을 λΉ„μ•½μ μœΌλ‘œ 높일 수 μžˆλ‹€.

- 컴퓨터인터넷ITμš©μ–΄λŒ€μ‚¬μ „


κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€λŠ” 일반적인 μ„œλΉ„μŠ€μ—μ„œ κ°€μž₯ 많이 μ‚¬μš©λ˜λŠ” DB νƒ€μž…μ΄λ‹€.
ν•™λ²ˆμ΄λ‚˜ 이름, μ „ν™”λ²ˆν˜Έ λ“± 정해진 정보 νƒ€μž…μ— 따라 정보가 μž…λ ₯λ˜κ±°λ‚˜, 기둝이 μΆ”κ°€λ˜λŠ” 방식이기 λ•Œλ¬Έμ— λ³΅μž‘ν•œ 계산 없이 각각의 데이터가 μ–΄λ””λ‘œ λ“€μ–΄κ°€μ•Ό 할지 미리 μ •ν•΄μ Έ μžˆλŠ” κ²½μš°κ°€ λŒ€λΆ€λΆ„μ΄λ‹€.
λ”°λΌμ„œ μž…λ ₯λ˜λŠ” 정보가 μˆ«μžμΈμ§€ ν…μŠ€νŠΈμΈμ§€ 미리 μ •ν•΄ λ‘˜ 수 있으며, 이둜 인해 효율적인 DB 섀계가 κ°€λŠ₯ν•œ 것이닀.

RDBλŠ” μˆ˜λ§Žμ€ 데이터 μ€‘μ—μ„œ μ›ν•˜λŠ” λ‚΄μš©μ„ μ°Ύκ³  μ •λ ¬ν•˜κΈ°μ— μ’‹λ‹€. 미리 μ˜ˆμƒλ˜λŠ” λ°μ΄ν„°μ˜ 흐름에 맞게 섀계해두기 λ•Œλ¬Έμ— μ•ˆμ •μ„±λ„ λ†’λ‹€.


RDB μ„œλΉ„μŠ€ μ’…λ₯˜(SQL)

  • ORACLE
  • MySQL
  • MS SQL

RDB νŠΉμ§•

  • λͺ…ν™•ν•œ 데이터 ꡬ쑰λ₯Ό 보μž₯ν•œλ‹€. β†’ 정해진 ꡬ쑰에 λ§žλŠ” λ°μ΄ν„°λ§Œ μΆ”κ°€ κ°€λŠ₯ν•˜λ‹€.

  • ν•˜λ‚˜μ˜ ν…Œμ΄λΈ”μ—μ„œ 쀑볡 없이 ν•˜λ‚˜μ˜ λ°μ΄ν„°λ§Œ κ΄€λ¦¬ν•œλ‹€.

  • ν…Œμ΄λΈ” κ°„ 관계λ₯Ό λ‚˜νƒ€λ‚΄κΈ° μœ„ν•΄ μ™Έλž˜ν‚€(foreign key)λ₯Ό μ‚¬μš©ν•˜λ©°, μ™Έλž˜ν‚€λ₯Ό μ΄μš©ν•œ ν…Œμ΄λΈ” κ°„ join이 κ°€λŠ₯ν•˜λ‹€.

    ν•™λ²ˆ(Primary Key)μ΄λ¦„μ „ν™”λ²ˆν˜Έ
    202212345μž₯λ―Έ010-XXXX-XXXX
    202212346μ°¨μ€μš°010-YYYY-YYYY

    λ“±λ‘κΈˆ λ‚©λΆ€ 번호(Primary Key)ν•™λ²ˆ(Foreign Key)λ“±λ‘κΈˆ
    20220804123452022123455,000,000
    20220804123462022123463,000,000
  • ν…Œμ΄λΈ” κ°„ 관계λ₯Ό λ§Ίκ³  μžˆμ–΄ μ‹œμŠ€ν…œμ΄ 컀질 경우 λ³΅μž‘ν•œ 쿼리(λ§Žμ€ joinλ¬Έ)κ°€ λ§Œλ“€μ–΄μ§ˆ 수 μžˆλ‹€.

  • μ„±λŠ₯ ν–₯상을 μœ„ν•΄ Scale-up을 ν•œλ‹€. β†’ λΉ„μš©μ΄ 많이 λ“ λ‹€.

  • μŠ€ν‚€λ§ˆ 변경이 μœ μ—°ν•˜μ§€ μ•Šλ‹€.


NoSQL(Not Only SQL)

NoSQLμ΄λž€, 빅데이터 처리λ₯Ό μœ„ν•œ λΉ„κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€ 관리 μ‹œμŠ€ν…œμ΄λ‹€.
RDBMSμ™€λŠ” λ‹€λ₯΄κ²Œ λΉ„κ΄€κ³„ν˜•(non-relational) DBMS둜, λŒ€κ·œλͺ¨μ˜ 데이터λ₯Ό μœ μ—°ν•˜κ²Œ μ²˜λ¦¬ν•  수 μžˆλŠ” 것이 강점이닀.
ν…Œμ΄λΈ”-컬럼과 같은 μŠ€ν‚€λ§ˆ 없이 λΆ„μ‚° ν™˜κ²½μ—μ„œ λ‹¨μˆœ 검색 및 μΆ”κ°€ μž‘μ—…μ„ μœ„ν•œ ν‚€ 값을 μ΅œμ ν™”ν•˜κ³ , 지연(latency)κ³Ό 처리율(throughput)이 μš°μˆ˜ν•˜λ‹€.

- ITμš©μ–΄μ‚¬μ „


기술이 λ°œλ‹¬ν• μˆ˜λ‘ λ°μ΄ν„°λŠ” 점점 컀져가고, λΉ„μ •ν˜• λ°μ΄ν„°μ˜ μˆ˜κ°€ ν­λ°œμ μœΌλ‘œμ¦κ°€ν–ˆλ‹€. RDBλ‘œλŠ” μ΄λŸ¬ν•œ 데이터듀을 μ €μž₯ 및 κ΄€λ¦¬ν•˜κΈ°κ°€ νž˜λ“€μ—ˆκΈ° λ•Œλ¬Έμ— NoSQL이 λ“±μž₯ν–ˆλ‹€.

NoSQL은 λΉ„κ΄€κ³„ν˜• 데이터 μŠ€ν† λ¦¬μ§€ μ‹œμŠ€ν…œ, λΉ„μ •ν˜• λ°μ΄ν„°λ² μ΄μŠ€λ“€μ„ ν†΅μΉ­ν•œλ‹€. κ³ μ •λœ ν…Œμ΄λΈ” μŠ€ν‚€λ§ˆμ™€ join κ°œλ…μ„ μ‚¬μš©ν•˜μ§€ μ•Šλ„λ‘ λͺ¨λΈλ§ ν•˜κΈ° λ•Œλ¬Έμ— ACID 속성이 μœ μ—°ν•˜κ²Œ μ μš©λœλ‹€.


NoSQL μ’…λ₯˜

  • Key-Value
    데이터가 Key-Value 쌍으둜 μ €μž₯λœλ‹€. ν‚€λŠ” 값에 μ ‘κ·Όν•˜κΈ° μœ„ν•œ μš©λ„λ‘œ μ‚¬μš©λ˜λ©°, 값은 μ–΄λ– ν•œ ν˜•νƒœμ˜ 데이터라도 담을 수 μžˆλ‹€.
    κ°„λ‹¨ν•œ APIλ₯Ό μ œκ³΅ν•˜λŠ” 만큼 질의의 속도가 맀우 λΉ λ₯Έ νŽΈμ΄λ‹€.

    • Redis, DynamoDB λ“±
  • Document
    Key와 Document ν˜•νƒœλ‘œ μ €μž₯λœλ‹€. Valueκ°€ 계측적인 ν˜•νƒœμ˜ Document둜 μ €μž₯되기 λ•Œλ¬Έμ— ν•˜λ‚˜μ˜ 객체λ₯Ό μ—¬λŸ¬ 개의 ν…Œμ΄λΈ”μ— λ‚˜λˆ  μ €μž₯ν•  ν•„μš”κ°€ μ—†λ‹€.
    객체λ₯Ό Document ν˜•νƒœλ‘œ μ €μž₯ κ°€λŠ₯ν•˜κΈ° λ•Œλ¬Έμ— 객체-관계 맀핑이 ν•„μš” μ—†λ‹€.
    검색에 μ΅œμ ν™”λ˜μ–΄ 있으며 질의의 κ²°κ³Όκ°€ 주둜 JSON, XML ν˜•νƒœλ‘œ 좜λ ₯λœλ‹€.

    • MongoDB, Couchbase λ“±
  • Wide Column
    Column-family Model 기반의 λ°μ΄ν„°λ² μ΄μŠ€μ΄λ©°, Keyμ—μ„œ ν•„λ“œλ₯Ό κ²°μ •ν•œλ‹€. ν‚€λŠ” Row(ν‚€ κ°’)와 Column-family, Column-name을 가진닀.
    μ—°κ΄€λœ 데이터듀은 같은 Column-family μ•ˆμ— 속해 있으며 각자의 Column-name을 가진닀.
    μ΄λ ‡κ²Œ μ €μž₯된 λ°μ΄ν„°λŠ” ν•˜λ‚˜μ˜ μ»€λ‹€λž€ ν…Œμ΄λΈ”λ‘œ ν‘œν˜„μ΄ κ°€λŠ₯ν•˜λ‹€.

    • HBase, Hypertable λ“±
  • Graph
    Node, Edge, Property와 ν•¨κ»˜ κ·Έλž˜ν”„ ꡬ쑰λ₯Ό μ‚¬μš©ν•˜μ—¬ 데이터λ₯Ό ν‘œν˜„ν•˜κ³  μ €μž₯ν•œλ‹€. 데이터 κ°„μ˜ 관계가 νƒμƒ‰μ˜ 킀일 κ²½μš°μ— μ ν•©ν•˜λ‹€. (νŽ˜μ΄μŠ€λΆμ΄λ‚˜ μΈμŠ€νƒ€κ·Έλž¨ 같은 Application에 μ ν•©ν•˜λ‹€.)

    • Neo4j λ“±

NoSQL νŠΉμ§•

  • μŠ€ν‚€λ§ˆκ°€ μ—†κΈ° λ•Œλ¬Έμ— μœ μ—°ν•˜λ©°, 자유둜운 데이터 ꡬ쑰λ₯Ό κ°–λŠ”λ‹€.

  • 데이터 뢄산이 μš©μ΄ν•˜λ©° Scale-out이 κ°€λŠ₯ν•˜λ‹€.

  • Cloud Computing에 μ ν•©ν•˜λ‹€.

  • 데이터 쀑볡이 λ°œμƒν•  수 있으며, μ€‘λ³΅λœ 데이터가 변경될 경우 λͺ¨λ“  μ»¬λ ‰μ…˜μ—μ„œ μˆ˜μ •μ„ ν•΄μ•Ό ν•œλ‹€.

  • μŠ€ν‚€λ§ˆκ°€ μ—†κΈ° λ•Œλ¬Έμ— 데이터 ꡬ쑰 결정이 μ–΄λ €μšΈ 수 μžˆλ‹€.


RDB와 NoSQL 비ꡐ 정리

ꡬ뢄RDBNoSQL
μž₯단점데이터 무결성, 정합성을 보μž₯ν•˜μ§€ μ•ŠμŒλ°μ΄ν„° 무결성 보μž₯
λΉ„μ •ν˜•, λ°˜μ •ν˜• 데이터 μ²˜λ¦¬μ •ν˜•ν™”λœ 데이터 처리
ν™•μž₯μ„± λ¬Έμ œκ°€ 있으며 λΆ„μ‚° ν™˜κ²½μ— 뢀적합함
νŠΉμ§•μ•½ν•œ ConsistencyJOIN
Schemeκ°€ μ—†μ–΄ 변경이 μš©μ΄ν•¨ACID
Use CaseλŒ€λŸ‰ 데이터 처리 μ‹œμ€‘μš”ν•œ νŠΈλžœμž­μ…˜ 처리(금육)κ°€ μš”κ΅¬λ˜λŠ” 경우
λΉ λ₯Έ μ„±λŠ₯ μš”κ΅¬ μ‹œ(μ‹€μ‹œκ°„ 슀트리밍 λ“±)

참고 자료

  1. β€œκ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€(RDB)λž€ λ¬΄μ—‡μΈκ°€μš”?”. μš”μ¦˜IT. 2021λ…„ 05μ›” 10일 μˆ˜μ •, 2022λ…„ 08μ›” 04일 접속, https://yozm.wishket.com/magazine/detail/675/

  2. β€œ[Database] RDBMS와 NoSQL의 차이점”. νžˆμ§„μ“°μ˜ μ„œλ²„μ‚¬μ΄λ“œ 기술 λΈ”λ‘œκ·Έ. 2021λ…„ 02μ›” 07일 μˆ˜μ •, 2022λ…„ 08μ›” 04일 접속, https://khj93.tistory.com/entry/Database-RDBMS%EC%99%80-NOSQL-%EC%B0%A8%EC%9D%B4%EC%A0%90

  3. β€œSQLκ³Ό NOSQL의 차이”. Tech Interview. 2022λ…„ 06μ›” 09일 μˆ˜μ •. 2022λ…„ 08μ›” 04일 접속, https://gyoogle.dev/blog/computer-science/data-base/SQL%20&%20NOSQL.html

  4. β€œNoSQLκ°•μ˜) NoSQL κ°œμš” 및 기본이둠”. λ°λΈŒμ›μ˜. 2019λ…„ 07μ›” 22일 μˆ˜μ •. 2022λ…„ 08μ›” 04일 접속, https://blog.voidmainvoid.net/230


ν•¨κ»˜ 보면 쒋은 자료


μ½”ν…Œ 1문제


베이슀볼 μž¬μˆ˜μ •

profile
김뉴비

0개의 λŒ“κΈ€

κ΄€λ ¨ μ±„μš© 정보