๋ฐ์ดํฐ๋ฒ ์ด์ค
- SQL๊ณผ NoSQL์ ์ฐจ์ด๋ฅผ ๋งํด๋ณด์ธ์
SQL์ ๊ด๊ณํ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชจ๋ธ๋ก ๋ฐ์ดํฐ๋ฅผ ํ๊ณผ ์ด์ ์ ์ฅํด์ ๊ด๋ฆฌํ๋ฉฐ ๊ณ ์ ๋ ์คํค๋ง๊ฐ ์กด์ฌํฉ๋๋ค. ์ ๊ทํ๋ฅผ ํตํด ์ค๋ณต์์ด ํ
์ด๋ธ์ ๋ถ๋ฆฌํด์ ๊ด๋ฆฌํ๋ฉฐ ๋ณดํต SCALE-UP ๋ฐฉ์์ผ๋ก ํ์ฅ์ ํ์ฌ ๋น์ฉ์ด ๋ง์ด ์๋ชจ๋ฉ๋๋ค.
NoSQL์ ๋น๊ตฌ์กฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋๋ฐ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชจ๋ธ์
๋๋ค. ๊ณ ์ ๋ ์คํค๋ง๊ฐ ์์ด ์ ์ฐํ๊ฒ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ ์ ์์ผ๋ฉฐ scale-out๋ฐฉ์์ผ๋ก ํ์ฅ์ ํ์ฌ SQL์ ๋นํด์ ๋น์ฉ์ด ์ ๊ฒ ๋ค๊ณ ๋์ฉ๋ ํธ๋ํฝ์ ์ฒ๋ฆฌํ๊ธฐ ์ข์ ๋ง์ด ์ฌ์ฉ๋๊ณ ์์ต๋๋ค.
SQL๊ณผ NoSQL์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐฉ์์ ์ฐจ์ด๊ฐ ์์ต๋๋ค.
SQL์ ๊ด๊ณํ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชจ๋ธ๋ก ๋ฐ์ดํฐ๋ฅผ ํ๊ณผ ์ด์ ์ ์ฅํ๋ฉฐ ์ ๊ทํ๋ฅผ ํตํด ์ค๋ณต์์ด ํ
์ด๋ธ์ ๋ถ๋ฆฌํ์ฌ SQL์ ํตํด ํ
์ด๋ธ ๊ฐ์ ๊ด๊ณ๋ฅผ ๋ฐํ์ผ๋ก ํ์ํ ๋ฐ์ดํฐ๋ฅผ ๋ฝ์์ ์ธ ์ ์์ต๋๋ค.
NoSQL์ ๋น๊ด๊ณํ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐฉ์์ผ๋ก ํน๋ณํ ๊ตฌ์กฐ๊ฐ ์๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋ฐฉ์์
๋๋ค. ๊ณ ์ ๋ ์คํค๋ง๊ฐ ์์ด ์ ์ฐํ๊ฒ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ SQL๊ณผ ๋ฌ๋ฆฌ scale-out๋ฐฉ์์ผ๋ก ํ์ฅ์ ํ ์ ์์ด ๋น๊ต์ ์ ๋ ดํ๋ฉฐ ๋ถ์ฐ ์์คํ
๊ตฌ์ถ์ผ๋ก ๋์ฉ๋ ํธ๋ํฝ์ ๋ณด๋ค ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
DB
DBMS
๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๊ด๋ฆฌํ๋ ๋ฐฉ์
- RDBMS SQL์ฌ์ฉ
- MySQL
Oracle
SQLite
MariaDB
PostgresSQL
SQL
Structured Query Language
๊ด๊ณํ ๋ชจ๋ธ์ ์ค๋ณต์ฑ์ ์ค์ด๋๋ก ์ ๊ทํ๋๊ณ ์ผ๋ฐ์ ์ผ๋ก ์ ์ฅ์ ์ต์ ํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ํ
์ด๋ธ ์ฌ์ด์์ ์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ์ ์คํํ ์ ์๋๋ก ๊ณ ์
- SQL์ ์ฌ์ฉํ๋ ค๋ฉด, ๊ณ ์ ๋ ํ์์ ์คํค๋ง๊ฐ ํ์ํ๋ค
- ๋ฐ์ดํฐ๋ฅผ ํ๊ณผ ์ด๋ก ๊ตฌ์ฑ๋ ํ
์ด๋ธ์ ์ ์ฅ
์์ง์ ํ์ฅ(Scale-up)
- ACID์์ฑ ์ ๊ณต
- ์์์ฑ: ๊ฐ๋ ์๋ฒฝํ๊ฒ ์คํํ๊ฑฐ๋ ํน์ ์ ํ ์คํํ์ง ์๋ ํธ๋์ญ์
์ ํ์๋ก ํฉ๋๋ค.
- ์ผ๊ด์ฑ: ํธ๋์ญ์
์ด ์ปค๋ฐ๋๋ฉด ๋ฐ์ดํฐ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง๋ฅผ ์ค์ํ๋๋ก ์๊ตฌํฉ๋๋ค.
- ๊ฒฉ๋ฆฌ์ฑ: ๋์์ ์ผ์ด๋๋ ํธ๋์ญ์
๋ค์ด ๊ฐ๊ธฐ ๋ณ๋๋ก ์คํ๋์ด์ผ ํจ์ ์๋ฏธํฉ๋๋ค.
- ๋ด๊ตฌ์ฑ: ์๊ธฐ์น ๋ชปํ ์์คํ
์ฅ์ ๋๋ ์ ์ ์ ๋ง์ง๋ง์ผ๋ก ์๋ ค์ง ์ํ๋ก ๋ณต๊ตฌํ๋ ๊ธฐ๋ฅ์ ํ์๋ก ํฉ๋๋ค.
NoSQL
Not Only SQL/ non SQL
๋น๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค
๊ด๊ณํ ๋ฐ์ดํฐ ๋๋ ์ ํ๋ฐ์ดํฐ๊ฐ ์๋ ๋ฐ์ดํฐ, ์ฆ ๋น์ ํ๋ฐ์ดํฐ๋ผ๋ ๊ฒ์ ๋ณด๋ค ์ฝ๊ฒ ๋ด์์ ์ ์ฅํ๊ณ ์ฒ๋ฆฌํ ์ ์๋ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง ๋ฐ์ดํฐ ๋ฒ ์ด์ค
- ๋ฐ์ด๋ ํ์ฅ์ฑ(์ํ์ ํ์ฅ scale-out)
- ์ ์ฐํ ์คํค๋ง (์ตํต์ฑ ์๋ ๋ฐ์ดํฐ ๋ชจ๋ธ ์ฌ์ฉ)
โ ๋น ๋ฅด๊ฒ ๊ฐ๋ฐ๊ฐ๋ฅ
- ํน์ ๋ชฉ์ /๊ธฐ๋ฅ์ ํนํ๋จ
- ์ด๊ณ ์ฉ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ฑ ์ฑ๋ฅ์ ํนํ๋ ๋ชฉ์ ์ ์ํด, ๋น๊ด๊ณํ ๋ฐ์ดํฐ ์ ์ฅ์์, ๋น๊ตฌ์กฐ์ ์ธ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ์ํ ๋ถ์ฐ ์ ์ฅ ์์คํ
- ๋ฐ์ดํฐ์ ์ ์ฅ ๋ฐ ๊ฒ์/๋จ์ ๊ฒ์ ๋ฐ ์ถ๊ฐ ์์
์ ์ํ ํนํ(์ต์ ํ)๋ ๋งค์ปค๋์ฆ(ํค ๊ฐ ์ ์ฅ ๊ธฐ๋ฒ)์ ์ ๊ณต โ๋ ์ดํด์(์๋ต์๋)๋, ์ค๋ฃจํ(์ฒ๋ฆฌ ํจ์จ)๋ฑ์ด ๋ฐ์ด๋จ
- ๋ ์ดํด์: ์๊ทน๊ณผ ๋ฐ์์ ๋ํ ์ง์ฐ์๊ฐ
- ์ค๋ฃจํ: ๋จ์ ์๊ฐ๋น ๋์งํธ ๋ฐ์ดํฐ ์ ์ก์ผ๋ก ์ฒ๋ฆฌํ๋ ์
- ex. Facebook, Twitter, Netflix, Instagram, Apple์ iCloud, ์ผ์ฑ์ SCloud
RDBMS์ ์ฐจ์ด์
- ๊ด๊ณํ ๋ชจ๋ธ์ ์ฌ์ฉํ์ง ์์ผ๋ฉฐ ํ
์ด๋ธ๊ฐ์ ์กฐ์ธ ๊ธฐ๋ฅ ์์
- ์ง์ ํ๋ก๊ทธ๋๋ฐ์ ํ๋ ๋ฑ์ ๋นSQL ์ธํฐํ์ด์ค๋ฅผ ํตํ ๋ฐ์ดํฐ ์ก์ธ์ค
- ๋๋ถ๋ถ ์ฌ๋ฌ ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ๋ฅผ ๋ฌถ์ด์(ํด๋ฌ์คํฐ๋ง) ํ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ตฌ์ฑ
๋ถ์ฐํ ํ๋์จ์ด ํด๋ฌ์คํฐ๋ฅผ ์ด์ฉํด ํ์ฅ
- ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์๋ ์ง์ํ๋ Data์ฒ๋ฆฌ ์๊ฒฐ์ฑ(Transaction ACID ์ง์) ๋ฏธ๋ณด์ฅ
- ๋ฐ์ดํฐ์ ์คํค๋ง์ ์์ฑ๋ค์ ๋ค์ํ๊ฒ ์์ฉ ๋ฐ ๋์ ์ ์ (Schema-less)
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ค๋จ ์๋ ์๋น์ค์ ์๋ ๋ณต๊ตฌ ๊ธฐ๋ฅ์ง์
- ๋ค์๊ฐ Open Source๋ก ์ ๊ณต
- ํ์ฅ์ฑ, ๊ฐ์ฉ์ฑ, ๋์ ์ฑ๋ฅ
Data Model
์ ์ฅ๋๋ ๋ฐ์ดํฐ์ ๊ตฌ์กฐ์ ๋ฐ๋ฅธ ๋ถ๋ฅ
- Key Value DB ex.๋ค์ด๋๋ชจDB
- Wide Columnar Store ex.HBase, Cassandra
- Document DB ex.MongoDB
- Graph DB
๊ธฐํ
-
ScyllaDB
Event ๊ธฐ๋ฐ Processing ๊ตฌ์กฐ๋ก ๊ณ ์ฑ๋ฅ ์ฒ๋ฆฌ
CPU Core๋ณ ๋จ์ผ thread๊ธฐ๋ฐ processing
-> ์ด๋์ ํ์ง??
-
์คํ์์ค DBMS์ธ PostgreSQL์ ๊ฒฝ์ฐ๋ 2๋
์ ๋ถํฐ NoSQL์์๋ ์ฒ๋ฆฌ ๊ฐ๋ฅํ๋ JSON์ ์ง์ํจ์ผ๋ก์, ์์ฅ์ ์ฃผ๋ชฉ์ ๋ง์ด ๋ฐ์๊ณ , ๋๋ถ์ด ๋ค๋ฅธ ์คํ์์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค ์
์ฒด๋ค๋ JSON์ ์ง์ํ๊ฒ ๋์์ต๋๋ค.
https://www.samsungsds.com/kr/insights/1232564_4627.html
https://aws.amazon.com/ko/nosql/
https://hanamon.kr/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-sql-vs-nosql/
- ํด๋ฌ์คํฐ, ๋ํด๋ฌ์คํฐ๋
DB ์ธ๋ฑ์ค์์ ์ฌ์ฉํ๋ ์ฉ์ด๋ก ๋ํด๋ฌ์คํฐ ์ธ๋ฑ์ค๋ ๋ณดํต ์์ฑํ๋ ์ธ๋ฑ์ค์ ์์ฑ ๋ฐฉ์๊ณผ ๋์ผํ๋ค. ์๋ณธ ๋ฐ์ดํฐ์ ๋ณ๊ฐ๋ก ์ธ๋ฑ์ค ํ์ด์ง๊ฐ ๋ฐ๋ก ์์ฑ๋์ด ์ถ๊ฐ ์ ์ฅ ๊ณต๊ฐ์ด ํ์ํ๋ค. ๋ฐ์ดํฐ๊ฐ ์์ฃผ ์
๋ฐ์ดํธ ๋๋ ๊ฒฝ์ฐ ๋ํด๋ฌ์คํฐ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ์ข๋ค.
ํด๋ฌ์คํฐ ์ธ๋ฑ์ค๋ ์ธ๋ฑ์ค ํ์ด์ง๋ฅผ ๋ฐ๋ก ๋ง๋ค์ง ์๊ณ ํญ์ ์ ๋ ฌ๋ ์ํ๋ฅผ ์ ์งํ๋ค. ๊ฒ์ ์๋๊ฐ ๋น ๋ฅด์ง๋ง ๋ฐ์ดํฐ๊ฐ ์
๋ฐ์ดํธ ๋๋ ๊ฒฝ์ฐ์ ํ์ด์ง ๋ถํ ์ด ์ผ์ด๋ ์ ์์ด ๋ํด๋ฌ์คํฐ๋ณด๋ค ์๋๊ฐ ๋๋ฆฌ๋ค. ๋ฐ๋ผ์ ์
๋ฐ์ดํธ๊ฐ ์์ฃผ ์ผ์ด๋์ง ์๋ ๋์ฉ๋ ๋ฐ์ดํฐ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ ํฉํ๋ค.
ํด๋ฌ์คํฐ ์ธ๋ฑ์ค
์ธ๋ฑ์ค๋ ๊ฒ์์๋๋ฅผ ํฅ์์ํค๊ธฐ ์ํด ์๋ ๊ฒ!
- ๋ฐ๋ก ํด๋ฌ์คํฐ๋ ์ธ๋ฑ์ค๋ฅผ ์ง์ ํ์ง ์์ผ๋ฉด ๊ธฐ๋ณธํค == ํด๋ฌ์คํฐ๋ ์ธ๋ฑ์ค
- ํ
์ด๋ธ๋น ํ๋
- ํธ๋ฆฌ ํํ๋ก ์ ์ฅ
- ๋ฃจํธ ํ์ด์ง(๋
ธ๋)
๋ฆฌํ ํ์ด์ง์ ์ฃผ์๋ฅผ ์ ์ฅ
- ๋ฆฌํ ํ์ด์ง(๋
ธ๋)
์ค์ ๋ฐ์ดํฐ ํ์ด์ง
- ์ธ๋ฑ์ค ํ์ด์ง๊ฐ ๋ฐ๋ก ์๊ณ ํญ์ ์ ๋ ฌ๋ ์ํ๋ฅผ ์ ์ง
- ๊ฒ์(SELECT)์๋๊ฐ ๋ํด๋ฌ์คํฐ๋ณด๋ค ๋ ๋น ๋ฆ(์ฐธ์กฐํ๋ ํ์ด์ง์ ์๊ฐ ์ ๊ธฐ๋๋ฌธ)
์
๋ ฅ/์์ /์ญ์ ๋ ๋ ๋๋ฆผ
- ํ์ด์ง ๋ถํ
๋ฆฌํ ํ์ด์ง์ ์๋ก์ด ๋ฐ์ดํฐ๊ฐ ์ถ๊ฐํ ๊ณต๊ฐ์ด ์์ ๋ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ
โ ์ธ๋ฑ์ค๋ Balancing Tree๊ตฌ์กฐ์ด๊ธฐ ๋๋ฌธ์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ชจ๋ ๊ฐ์ ํฌ๊ธฐ์ ํ์ด์ง๋ฅผ ์ ์งํ๋ค. ๊ทธ๋์ ์๋ก์ด ๋ฐ์ดํฐ๊ฐ ์ค๊ฐ์ ์ฝ์
๋์ผํ๋ ๊ฒฝ์ฐ ์๋ก์ด ๋ฐ์ดํฐ๊ฐ ์ถ๊ฐ ๋ ํ
์ด๋ธ์ ๊ธฐ์กด ๋ฐ์ดํฐ ์ ๋ฐ์ด ์๋ก์ด ํ์ด์ง๋ก ์ด๋ ํ ์๋ก์ด ๋ฐ์ดํฐ๊ฐ ์ถ๊ฐ๋๋ค.
์ด์ ๊ฐ์ด, ์ธ๋ฑ์ค๋ฅผ ์์ฑ/์์ /์ญ์ ํ ๋ ํ์ด์ง ๋ถํ ์ด ์ผ์ด๋ ์ ์์ด ์ด๋ฐ ๊ฒฝ์ฐ ๋ฐ์ดํฐ ํ์ด์ง ์ ์ฒด๋ฅผ ์ฌ์ ๋ ฌํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋๋ ค์ง๋ค.
๋ํด๋ฌ์คํฐ ์ธ๋ฑ์ค
๋ฐ์ดํฐ ํ์ด์ง๋ฅผ ๊ฑด๋๋ฆฌ์ง ์๊ณ (์ ๋ ฌx), ๋ณ๋์ ์ฅ์์ ์ธ๋ฑ์ค ํ์ด์ง๋ฅผ ์์ฑ โ ์ฉ๋์ ๋ ์ฐจ์งํ๋ค.
- ์ฌ๋ฌ ๊ฐ ์์ฑ ๊ฐ๋ฅ
- ์ธ๋ฑ์ค ํ์ด์ง (๋ฃจํธ๋
ธ๋ โ ๋ฆฌํ๋
ธ๋(์ธ๋ฑ์ค๊ฐ ๋จผ์ !)) โ ๋ฐ์ดํฐ ํ์ด์ง
โ ์ธ๋ฑ์ค ํ์ด์ง๋ฅผ ํ๋ฒ ๊ฑฐ์น๊ธฐ๋๋ฌธ์ ๊ฒ์ ์๋๋ ๋ ๋๋ฆฌ์ง๋ง ๋ฐ์ดํฐ์ ์
๋ ฅ, ์์ , ์ญ์ ๋ ๋ ๋น ๋ฅด๋ค
- ์ธ๋ฑ์ค ์กฐํ ์ ๋น์ฉ์ด ๋ง์ด ๋ฐ์ํ๋ค
โ ๊ฒ์ํ๊ณ ์ํ๋ ๋ฐ์ดํฐ์ ํค ๊ฐ์ ๋ฃจํธ ํ์ด์ง์์ ๋น๊ตํ์ฌ ๋ฆฌํ ํ์ด์ง ๋ฒํธ๋ฅผ ์ฐพ๊ณ , ๋ฆฌํ ํ์ด์ง์์ RID ์ ๋ณด๋ก ์ค์ ๋ฐ์ดํฐ์ ์์น๋ก ์ด๋
https://kosaf04pyh.tistory.com/293
velog.io/@sweet_sumin
๋ทฐ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ทฐ๋
์ ์ฒด ํ
์ด๋ธ์ (ํ์ํ)์ผ๋ถ๋ง์ ์ด์ฉํด์ ๋ง๋ ๊ฐ์ ํ
์ด๋ธ๋ก ๊ธฐ๋ณธ ํ
์ด๋ธ์ ์ด์ฉํด์ ๋ค์ํ ๋์ฆ๋ฅผ ์ถฉ์กฑ์ํฌ ์ ์๋ค. ๋ทฐ๋ฅผ ์ด์ฉํด์ ์ฐ์ฐ์ด ๊ฐ๋ฅํ๋ฉฐ ๊ณต๊ฐํ์ง ์๋ ์๋ฃ์ ๋ํด์๋ ๋ณด์ ๊ธฐ๋ฅ๋ ์ ๊ณตํ๋ ์
์ด๋ค.
์ฌ์ฉ์์๊ฒ ์ ๊ทผ์ด ํ์ฉ๋ ์๋ฃ๋ง์ ์ ํ์ ์ผ๋ก ๋ณด์ฌ์ฃผ๊ธฐ ์ํด ํ๋ ์ด์์ ๊ธฐ๋ณธ ํ
์ด๋ธ๋ก๋ถํฐ ์ ๋๋, ์ด๋ฆ์ ๊ฐ์ง๋ ๊ฐ์ ํ
์ด๋ธ
- ๋ฌผ๋ฆฌ์ ์ผ๋ก๋ ์กด์ฌํ์ง ์๋๋ค
- ์๋ฃ์ ๋ํ ๊ถํ์ ์ค์ ํจ์ผ๋ก์จ ๋ณด์+1
- ๋์ผ ๋ฐ์ดํฐ์ ๋ํด ๋์์ ์ฌ๋ฌ์ฌ์ฉ์์ ์์ดํ ์์ฉ์ด๋ ์๊ตฌ๋ฅผ ์ง์
๊ธฐ๋ณธ ํ
์ด๋ธ์ ๊ธฐ๋ณธํค๋ฅผ ํฌํจํ ์์ฑ(์ด) ์งํฉ์ผ๋ก ๋ทฐ๋ฅผ ๊ตฌ์ฑํด์ผ ์ฐ์ฐ์ด ๊ฐ๋ฅํ๋ค
- ๋
ผ๋ฆฌ์ ๋ฐ์ดํฐ ๋
๋ฆฝ์ฑ์ ์ ๊ณต
- ๋
๋ฆฝ์ ์ผ๋ก ์ธ๋ฑ์ค๋ฅผ ๊ฐ์ง๋ ๊ฒ์ ๋ถ๊ฐ๋ฅ
๋ทฐ์ ์ ์๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒ(ALTER VIEW)์ ๋ถ๊ฐ๋ฅ
- CREATE VIEW โ DROP VIEW RESTRICT/CASCADE
- ๋ทฐ๋ก ์๋ก์ด ๋ทฐ๋ฅผ ๋ง๋๋ ๊ฒ์ ๊ฐ๋ฅํ๋ค
https://coding-factory.tistory.com/224
๋ฝ๊ณผ ๋ฐ๋๋ฝ OS
๋๊ธฐํ ๋ฌธ์
- ๋ ์ด์ค ์ปจ๋์
๋๊ฐ ์ด์์ ํ๋ก์ธ์ค/์ค๋ ๋๊ฐ ๊ณต์ ์์์ ์๋ก ์ฌ์ฉํ๋ ค๊ณ ํ๋ ํ์ โ ๋ฎคํ
์ค/์ธ๋งํฌ์ด
- ๋ฐ๋๋ฝ
๋ฉํฐ ์ค๋ ๋์ผ ๋(์์์ ๊ณต์ ํ๋ ์ํฉ) ์๋ก ์๋๋ฐฉ์ด ๊ฐ์ง ์์์ ๊ธฐ๋ค๋ฆฌ๋๋ผ ์ผ์ ํ์ง ๋ชปํ๋ ์ํฉ
์๋ 4๊ฐ์ง ์กฐ๊ฑด์ ๋ชจ๋ ๋ง์กฑํ๋ ๊ฒฝ์ฐ ๋ฐ์
- ์ํธ๋ฐฐ์ : ๋์์ ํ ์์์ ์ ๊ทผํ๋ ๊ฒ์ ํ์ฉํ์ง ์์ โ ์ ์ ์์์ ๊ณ์ํด์ ์ฌ์ฉํ๊ฒ ๋๋ ๊ฒฝ์ฐ ๋ฌดํ ๋๊ธฐ๋ฅผ ์ผ์ผํฌ ์ ์์
- ์ ์ ์ํ๋ก ๋๊ธฐ: ๋ฝ์ ํ๋ํ์ฌ ์ ์ ํ๊ณ ์๋ ์ํ์์ ๋ค๋ฅธ ์์์ ๋ฝ์ ํ๋ํ๊ธฐ ์ํด ๊ธฐ๋ค๋ฆฌ๋ ์ํ โ ๋ฌดํ ๋๊ธฐ ๋ฐ์ ๊ฐ๋ฅ
- ์ ์ ๋ถ๊ฐ(๋น์ ์ ): ๋ค๋ฅธ ํ๋ก์ธ์ค/์ค๋ ๋๊ฐ ์์์ ์ ์ ํ๊ณ ์์ด ์์์ ์ฌ์ฉํ ์ ์์ โ ๋ฌดํ ๋๊ธฐ ๋ฐ์ ๊ฐ๋ฅ
- ์ ์ ์ํ๋๊ธฐ๊ฐ ์ํ์ ์ผ๋ก ๋ฐ์ํ ๊ฒฝ์ฐ โ ๋ฌดํ ๋๊ธฐ ๋ฐ์ ๊ฐ๋ฅ
- ๋ผ์ด๋ธ๋ฝ
๋ฐ๋๋ฝ์ ํผํ๊ธฐ ์ํด ๋ฝ์ ํ๋ํ์ง ๋ชปํ ๊ฒฝ์ฐ ๋๊ธฐ์ํ๋ก ๋น ์ง์ง ์๋๋ก ํ๊ณ ํ๋ํ ๋ฝ์ ํด์งํด์ ๋ค๋ฅธ ํ๋ก์ธ์ค/์ค๋ ๋๊ฐ ๋ฝ์ ํ๋ํ ์ ์๋๋ก ํจ
๋ฝ์ ํ๋ํ๊ณ ํด์ ํ๋ ๊ณผ์ ์ด ๊ณ์ ๋ฐ๋ณต๋จ
https://cheetile.tistory.com/entry/OS-Race-Condition-Deadlock-Starvation-Livelock
๋ฝ๊ณผ ๋ฐ๋๋ฝ DB
๋ฐ๋๋ฝ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ด์ ์์ ํธ๋์ญ์
๊ฐ ๋ฐ์ํ๋ ๊ฒ
- ๋๊ฐ์ ํธ๋์ญ์
์ด ๊ฐ๊ฐ์ ํธ๋์ญ์
์ด ๊ฐ์ง ๋ฆฌ์์ค์ ๋ฝ์ ํ๋ํ๋ ค๊ณ ํ ๋ ๋ฐ์ํจ
๋ฝ
- ๋ฐ์ดํฐ์ ๋ฌด๊ฒฐ์ฑ์ ๋ณด์ฅํ๋ ๋ฐฉ๋ฒ ์ค ํ๊ฐ์ง
- ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฝ์ ๋ ์ด์์ ์ฌ์ฉ์๊ฐ ๊ฐ์ ์๊ฐ์ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์
๋ฐ์ดํธํ๋ ๊ฒ์ ๋ฐฉ์งํ๋ค.
- ๋ฝ์ด ๊ฑธ๋ฆฐ ๋ฐ์ดํฐ๋ ํด์ ๋ ๋๊น์ง ๋ค๋ฅธ ์ฌ์ฉ์๊ฐ ์กฐ์ํ ์ ์๊ณ COMMIT ์ด๋ ROLLBACK๊ตฌ๋ฌธ ์คํ ํ ํด์ ๋๋ค.
*blocking: ๋ฝ๋ผ๋ฆฌ ๊ฒฝํฉ์ด ๋ฐ์ํ ๊ฒฝ์ฐ(๋ ์ด์ค ์ปจ๋์
?) ํ๋ก์ธ์ค์ ์์
์ด ์งํ๋์ง ์๊ณ ๋ฉ์ถ ์ํ
โ commit/ rollback์ผ๋ก ํด๊ฒฐ
- ๊ณต์ ๋ฝ(Read Lock)
๋ฐ์ดํฐ๋ฅผ ์ฝ์ ๋ ์ฌ์ฉ select
๋ค๋ฅธ ํ๋ก์ธ์๊ฐ ๋ณผ ์ ์์ง๋ง ๋ณ๊ฒฝ์ ๋ถ๊ฐ๋ฅ
- ๋ฐฐํ์ ๋ฝ(Write Lock)
๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ ๋ ์ฌ์ฉ insert, update, delete
ํด์ ๋๊ธฐ ์ ์๋ ๋ค๋ฅธ ํ๋ก์ธ์๊ฐ ์๋ฌด๊ฒ๋ ํ ์ ์๋ค
- ๋ด์ฌ๋ฝ(Intent Lock) - IS, IX, SIX
์ฌ์ฉ์๊ฐ ์์ฒญํ ๋ฒ์์ ๋ฝ์ ํ ์ ์๋์ง ํ์
row / page / table(indexํฌํจ) / database(DB๋ณต๊ตฌ์)
*lock escalation: ๋ฝ์ด ๋ง์์ง์๋ก ๋ฉ๋ชจ๋ฆฌ ํจ์จ์ด ๋จ์ด์ง๊ธฐ๋๋ฌธ์ ํ์๋ฝ์ ๋น์จ์ด ์ผ์ ํฌ๊ธฐ๋ฅผ ๋์ด์๋ฉด ์์๋ฝ์ ์์ฑํจ
โ level์ด ๋ฎ์ ์๋ก ๋์์ฑ์ด ์ข์ง๋ง ๋ฉ๋ชจ๋ฆฌ ํจ์จ์ ๋ฎ์์ง๋ค
https://velog.io/@koo8624/Database
ํ๋ก๊ทธ๋๋จธ์ค ๋ฌธ์ ํ๊ธฐ
โก๏ธํฐ์ผ๋ชฌ
def solution(nums):
return min(len(nums)/2,len(set(nums)))
๋์ค ์์ ๊ฒ ๋ต์ด ๋ ๋ if ๋ถ๋ฑํธ ์ฐ์ง๋ง๊ณ ๊ฐ๋จํ๊ฒ min์ ์ฐ์..
์๋ else๊น์ง ๊ฐ ๊ฒ๋ ์์ด ๊ทธ๋ฅ ์ด๋ฐ ๊ฒ๋..?
def solution(nums):
if len(list(set(nums))) < len(nums)/2:
return len(list(set(nums)))
return len(nums)/2