- 3.1. ๋ฐ์ดํฐ ์์ค
- 3.2. ๋ฐ์ดํฐ ํฌ๋งท
- 3.3. ๋ฐ์ดํฐ ๋ชจ๋ธ
- 3.4. ๋ฐ์ดํฐ ์คํ ๋ฆฌ์ง ์์ง ๋ฐ ์ฒ๋ฆฌ
- 3.5. ๋ฐ์ดํฐํ๋ก ๋ชจ๋
- 3.6. ๋ฐฐ์น ์ฒ๋ฆฌ vs. ์คํธ๋ฆผ ์ฒ๋ฆฌ
- ๐ฌ ์ด์ผ๊ธฐ ์ฃผ์
- ์ฌ์ฉ์ ์ ๋ ฅ ๋ฐ์ดํฐ๋ ํ ์คํธ, ์ด๋ฏธ์ง, ๋น๋์ค ๋ฑ ํฌ๋งท์ด ๋ค์ํ๋ฉฐ, ์ฌ์ฉ์๊ฐ ์ค์๋ก ์ ๋ ฅํ๋ ๊ฒฝ์ฐ๊ฐ ์์ด ์ฒ ์ ํ ๊ฒ์ฌํ ์ฒ๋ฆฌ๊ฐ ํ์ํ๋ค.
- ์์คํ
์์ฑ ๋ฐ์ดํฐ๋ ์์คํ
์ ์ฌ๋ฌ ๊ตฌ์ฑ ์์์์ ์์ฑ๋๋ ๋ฐ์ดํฐ๋ก ์์คํ
๋ก๊ทธ, ์ฌ์ฉ์ ํ๋ ๋ฐ์ดํฐ ๋ฑ์ด ์๋ค.
- ๋ฐ๋ก ์ฒ๋ฆฌ๊ฐ ํ์ํ ๋ฐ์ดํฐ๊ฐ ์๋๋ฏ๋ก ์ฃผ๋ก ๋ฐฐ์น ์ฒ๋ฆฌ๋ฅผ ์ํํ๋ค.
- ๋ด๋ถ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ํ์ฌ์ ๋ค์ํ ์๋น์ค ๋ฐ ์ํฐํ๋ผ์ด์ฆ ์ ํ๋ฆฌ์ผ์ด์
์์ ์์ฑ๋ ๋ฐ์ดํฐ๋ฅผ ๋งํ๋ค.
์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ๊ณ ์๋ ๊ทธ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋๋ค - ์๋ ํํฐ ๋ฐ์ดํฐ๋ ์ฃผ๋ก ๊ธฐ์
์ด๋ ์กฐ์ง ์ธ๋ถ์์ ์์ง๋๊ณ ์์ ํ๋ ๋ฐ์ดํฐ๋ฅผ ๋งํ๋ค.
์ฌ์ดํธ๋ฅผ ๋์๋ค๋๋ค ๋ณด๋ฉด ๋ด๊ฐ ์ํ๋ ์ ํ์ ๊ด๊ณ ๋ฅผ ํ๋ ๊ฒฝ์ฐ
{
"firstName": "Taylor",
"lastName": "Swift"
}
- JavaScript์์ ํ์๋์์ง๋ง, ํ์ฌ ๋๋ถ๋ถ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ JSON ์์ฑ๊ณผ ํ์ฑ์ ์ง์ ์ค์ด๋ค.
- key-value ํ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ , ๋ค์ํ ์์ค์ ์ ํ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ค.
- JSON ํ์ผ์ ํ ์คํธ ํ์ผ์ด๋ฏ๋ก ์ ์ฅ ๊ณต๊ฐ์ ๋ง์ด ์ฐจ์งํ๋ค.
- CSV๋ ํ ์ฐ์ ์ผ๋ก ํ์ ์ฐ์ ์์๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ๋๋ํ ์ ์ฅ๋์ง๋ง, Parquet์ ์ด ์ฐ์ ์ผ๋ก ์ด์ ์ฐ์ ์์๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ๋๋ํ ์ ์ฅ.
- ํ ์ฐ์ ํฌ๋งท์ ๋น ๋ฅธ ๋ฐ์ดํฐ ์ฐ๊ธฐ๊ฐ ๊ฐ๋ฅํด, ๊ณ์ ์๋ก์ด ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํด์ผํ๋ ์ํฉ์ด๋ผ๋ฉด ํ ์ฐ์ ํฌ๋งท์ ์ฐ๋ ๊ฒ ์ข์.
- ์ด ์ฐ์ ํฌ๋งท์ ์ ์ฐํ ์ด ๊ธฐ๋ฐ ์ฝ๊ธฐ๊ฐ ๊ฐ๋ฅํด ์๋ง์ ์ปฌ๋ผ ์ค ์ผ๋ถ ์ปฌ๋ผ๋ง ์กฐํํ๋, ์ฆ ์ด ๊ธฐ๋ฐ ์ฝ๊ธฐ๋ฅผ ๋ง์ด ์ํํ ๋๋ ์ด ์ฐ์ ํฌ๋งท์ ์ฐ๋ ๊ฒ ์ข์.
Note Pandas๋ ์ด ํฌ๋งท ์ค์ฌ์ผ๋ก ๊ตฌ์ถ๋์๊ณ , Numpy๋ ํ ์ฐ์ ์ธ์ง ์ด ์ฐ์ ์ธ์ง ์ง์ ํ ์ ์์ผ๋
ndarray
๋ ์์ฑ๋ ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ ์ฐ์ ์ด ๋๋ค.
- ํ ์คํธ ํ์ผ์ ์ผ๋ฐ ํ ์คํธ๋ก ๋ ํ์ผ๋ก, ์ฌ๋์ด ์ฝ์ ์ ์์. (ex. CSV, JSON)
- ์ด์ง ํ์ผ์ ํ
์คํธ๊ฐ ์๋ ๋ชจ๋ ํ์ผ์ ์ง์นญํ๋ฉฐ, ์์ ๋ฐ์ดํธ๋ฅผ ํด์ํ๋ ๋ฐฉ๋ฒ์ ์๊ณ ์๋ ํ๋ก๊ทธ๋จ์์ ์ฝ๊ฑฐ๋ ์ฌ์ฉํ๊ธฐ ์ํ ํ์ผ์ ๋งํจ. (ex. Parquet)
- ์ด์ง ํ์ผ์ ๊ฐ๊ฒฐํ์ฌ ํ ์คํธ ํ์ผ๋ณด๋ค ๊ณต๊ฐ์ ์ ์ฝ ํ ์ ์๋ค.
- ์๋ฅผ ๋ค์ด, "1000000"์ ํ ์คํธ ํ์ผ๋ก ์ ์ฅํ๋ฉด 7๋ฐ์ดํธ๊ฐ ํ์ํ์ง๋ง, int32๋ก ์ด์ง ํ์ผ์ ์ ์ฅํ๋ฉด 4๋ฐ์ดํธ๋ง ํ์ํ๋ค.
- ๊ด๊ณํ ๋ชจ๋ธ์์ ๋ฐ์ดํฐ๋ ๊ด๊ณ๋ก ๊ตฌ์ฑ๋๋ฉฐ ๊ฐ ๊ด๊ณ๋ ํํ์ ์งํฉ์ด๋ค.
- ํ ์ด๋ธ์ ๊ด๊ณ๋ฅผ ์๊ฐ์ ์ผ๋ก ํํํ ๊ฒ์ผ๋ก ํ ์ด๋ธ์ ๊ฐ ํ์ด ํํ์ ๊ตฌ์ฑํ๋ค.
- ๊ด๊ณ์์ ํ์ ์์๋ ์ด์ ์์๋ฅผ ์๋๋ผ๋ ์ฌ์ ํ ๋์ผ ๊ด๊ณ์ด๋ฏ๋ก, ์์๊ฐ ์๋ค.
- ๊ด๊ณ๋ ์ ๊ทํํ๋ ํธ์ด ์ข์ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
- ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ ์ฟผ๋ฆฌ ์ธ์ด๋ SQL์ด๋ค.
- ์๋ฐํ ๊ด๊ณ๋ ์ค๋ณต์ ํฌํจํ ์ ์์ง๋ง SQL ํ ์ด๋ธ์ ํ ์ค๋ณต์ ํฌํจํ ์ ์๋ค.
- SQL์ ์ ์ธ์ ์ธ์ด์ด๋ค. ์ฆ, ์ค์ ์ฟผ๋ฆฌ๊ฐ ์ํํ ๋ ์ด๋ป๊ฒ ์ฟผ๋ฆฌ๋ฅผ ์ํํ ์ง๋ ์ฟผ๋ฆฌ ์ตํฐ๋ง์ด์ ๊ฐ ์ ํ๋ค.
- ๋น๊ด๊ณํ ๋ชจ๋ธ์ ์ฃผ์ ์ ํ์ผ๋ก๋ ๋ฌธ์ ๋ชจ๋ธ๊ณผ ๊ทธ๋ํ ๋ชจ๋ธ์ด ์๋ค.
- ๋ฌธ์ ๋ชจ๋ธ์ ๋ฌธ์๋ผ๋ ๊ฐ๋
์ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ถ๋์ผ๋ฉฐ, ๊ฐ ๋ฌธ์๋ JSON, XML, BSON๋ฅด๋ก ์ธ์ฝ๋ฉ๋๋ค.
- ๋ฌธ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด ๋ชจ๋ ๋ฌธ์๋ ๋์ผํ ํฌ๋งท์ผ๋ก ์ธ์ฝ๋ฉ๋๋ค๊ณ ๊ฐ์ ํ๋ค.
- ๊ฐ ๋ฌธ์๋ง๋ค ๊ณ ์ ํ ํค๊ฐ ์์ด ์ด ํค๋ฅผ ์ฌ์ฉํ์ฌ ๋ฌธ์๋ฅผ ๊ฒ์ํ๋ ๋ฐ ์ฌ์ฉํ๋ค.
- ๋ฌธ์ ๋ชจ๋ธ์ ์คํค๋ง๋ฅผ ์ ์ฉํ์ง ์์ ์ข
์ข
์คํค๋ง๋ฆฌ์ค(Schemaless) ๋ชจ๋ธ์ด๋ผ๊ณ ๋ ๋ถ๋ฅธ๋ค.
- ํ์ง๋ง ์ด๋ ์คํค๋ง๋ฅผ ๊ฐ์ ํ์ง ์๋๋ค๋ ๋ง์ด๊ณ , ์ด๋ฐ ์ฑ ์์ ์ด ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ผ๋ก ์ ๊ฐํ๋ค..
- ๋ฌธ์ ๋ชจ๋ธ์ ๊ด๊ณํ ๋ชจ๋ธ๋ณด๋ค ์ง์ญ์ฑ(Locality)๊ฐ ์ฐ์ํ๋ค.
- ๋ฌธ์ ํ๋์ ๋ชจ๋ ์ ๋ณด๋ฅผ ์ ์ฅํ ์ ์์ด์ ๊ฒ์์ด ๋ ์ฉ์ดํด์ง๋ค.
- ํ์ง๋ง ๊ด๊ณํ ๋ชจ๋ธ๊ณผ ๋ฌ๋ฆฌ ๋ฌธ์ ๊ฐ ์กฐ์ธ์ด ์ด๋ ต๋ค.
- ๊ทธ๋ํ ๋ชจ๋ธ์ ๊ทธ๋ํ ๊ฐ๋ ์ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ถ๋์ผ์ผ๋ฉฐ, ๊ทธ๋ํ๋ ๋ ธ๋์ ์์ง๋ก ๊ตฌ์ฑ๋๊ณ ์์ง๋ ๋ ธ๋ ๊ฐ์ ๊ด๊ณ๋ฅผ ๋ํ๋ธ๋ค.
- ๋ฐ์ดํฐ ํญ๋ชฉ ๊ฐ์ ๊ด๊ณ๋ฅผ ์ฐ์ ์ผ๋ก ํ๊ธฐ ๋๋ฌธ์, ๋ฐ์ดํฐ ๊ฐ์ ์ฐ๊ฒฐ ๊ด๊ณ๋ฅผ ๋ํ๋ด๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ค.
์ ํ ๋ฐ์ดํฐ | ๋น์ ํ ๋ฐ์ดํฐ |
---|---|
์คํค๋ง๊ฐ ๋ช ํํ ์ ์๋จ | ์คํค๋ง๋ฅผ ๋ฐ๋ฅด์ง ์์๋ ๋จ |
๊ฒ์ ๋ฐ ๋ถ์์ด ํธํจ | ์ ์ฒ๋ฆฌ ๋ฑ์ ํ์ง ์๊ณ ๋ฐ๋ก ์ ์ฅ์ด ๊ฐ๋ฅ |
ํน์ ์คํค๋ง๋ฅผ ๋ฐ๋ฅด๋ ๋ฐ์ดํฐ๋ง ์ฒ๋ฆฌ ๊ฐ๋ฅ | ์ด๋ค ์์ค์์ ์จ ๋ฐ์ดํฐ๋ ์ฒ๋ฆฌ ๊ฐ๋ฅ |
์คํค๋ง ๋ณ๊ฒฝ์ด ๋ง์ ๋ฌธ์ ๋ฅผ ์ผ๊ธฐํจ | ์คํค๋ง ๋ณ๊ฒฝ์ ์์ง ๊ฑฑ์ ํ์ง ์์๋ ๋จ |
๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค์ ์ ์ฅ | ๋ฐ์ดํฐ ๋ ์ดํฌ์ ์ ์ฅ |
- OLTP(Online Transaction Processing)์ ์จ๋ผ์ธ ๋ฑ
ํน, ์ผํ ๋ฑ ๋์์ ๋ฐ์ํ๋ ๋ค์์ ํธ๋์ญ์
์ ์ฒ๋ฆฌํ๋ค.
- ํธ๋์ญ์ ์๋ ์ฌ์ฉ์๊ฐ ๊ด๋ จ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ผ๋ฏ๋ก ๋ ์ดํด์๋ ๋ฎ๊ณ ๊ฐ์ฉ์ฑ์ ๋์์ผํ๋ค.
- ์ผ๋ฐ์ ์ผ๋ก ํธ๋์ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ACID(Atomicity, Consistency, Isolation, Durability)๋ฅผ ์ค์ํ๋ ค ํ๋ค.
- OLAP(Online Analytical Processing)์ ๋์ฉ๋์ ๋ฐ์ดํฐ๋ฅผ ๊ณ ์์ผ๋ก ๋ค์ฐจ์ ๋ถ์์ ์ํํ๋ค.
์ค์ ํ๋ก๋์ ์์๋ ์ฌ๋ฌ ๊ฐ์ ํ๋ก์ธ์ค๊ฐ ์คํ ์ค์ด๊ณ , ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ณต์ ํ์ง ์์ ์๋ก ๋ค๋ฅธ ํ๋ก์ธ์ค ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
- ํ ํ๋ก์ธ์ค์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ๋ฅผ ์ฐ๊ณ ๋ค๋ฅธ ํ๋ก์ธ์ค์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๋ ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ค.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ณต์ ํ ์ ์๊ฑฐ๋ ๋ ์ดํด์ ์ด์๋ก ์ธํด ์ ์ฐ์ด์ง ์๋ ๊ฒ ๊ฐ๋ค.
- ๋คํธ์ํฌ๋กค ํตํด ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ ๋ฐฉ๋ฒ์ผ๋ก, REST(Representational State Transfer)์ RPC(Remote Procedure Call) ์์ฒญ ๋ฐฉ์์ด ์๋ค.
- REST๋ ๋คํธ์ํฌ๋ฅผ ํตํญ ์์ฒญ์ ์ํด ์ค๊ณ๋ ๋ฐ๋ฉด, RPC๋ ์๊ฒฉ ๋คํธ์ํฌ ์๋น์ค์ ๋ํ ์์ฒญ์ด ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ใ ๋ง์๋ ๋ฉ์๋๋ฅผ ํธ์ถํ๋ ๊ฒ๊ณผ ๋์ผํ๊ฒ ๋ณด์ด๋๋ก ํ๋ค.
- ์ด๋ฒคํธ ๊ธฐ๋ฐ(Event-driven) ๋ฐฉ์์ผ๋ก ์ค์๊ฐ์ผ๋ก ์ด๋ฒคํธ๋ฅผ ๋ธ๋ก๋์บ์คํธํ๋ ๋ฐฉ์์ ๋งํ๋ค.
- ์ค์๊ฐ ์ ์ก ์ ํ์ผ๋ก๋ PubSub๊ณผ ๋ฉ์์ง ํ๊ฐ ์๋ค.
- ๋ฐฐ์น ์ฒ๋ฆฌ(Batch Processing)์ ๋ฐ์ดํฐ๋ฅผ ๋ฐฐ์น ์์ ์์ ์ฒ๋ฆฌํ๋ ๊ฒ์ ๋งํ๋ฉฐ, MapReduce, Apache Spark ๊ฐ์ ๋ถ์ฐ ์์คํ ์ด ๊ณ ์๋์๋ค.
- ์คํธ๋ฆผ ์ฒ๋ฆฌ(Stream Processing)์ ์คํธ๋ฆฌ๋ฐ ๋ฐ์ดํฐ์ ๋ํ ๊ณ์ฐ์ ์๋ฏธํ๋ฉฐ, ๊ด๋ จ ์์ง์ผ๋ก๋ Apache Flink, KSQL, Spark Streaming์ด ์๋ค.
๐: ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋, DB vs. file ์ค ์ด๋ค ํ์์ ์ ํธํ์๋์ง ๊ถ๊ธํฉ๋๋ค.
๐: ๋ฐ์ดํฐ ์ฝ๊ณ ์ฐ๊ธฐ๋ฅผ ํ ๋, ์๊ฐ์ด ์ค๋ ๊ฑธ๋ ธ๊ณ (ํด๊ฒฐํ์ผ๋ฉด) ๊ฒฝํ ๊ณต์
๐ค: ํ์ ์์๋ ๋ฐ์ดํฐ๋ฅผ ์ฒ ์ ํ ์ ๊ทํํ์ฌ ์ ์ฅํ๋์? ์ฑ ์ ์ฐ์ฌ์ง๋๋ก, ๋ถ์ฐ๋ ๋ฐ์ดํฐ๋ฅผ ์กฐ์ธํ๋ ๋ฐ์ ๋น์ฉ์ด ๋ง์ด ๋ค ๊ฒ ๊ฐ์๋ฐ, ์ด๋ค ์กฐ๊ฑด์ผ๋ก ๋ถ๋ฆฌํ๋๊ฒ ์ข์์ง ์๊ธฐํด๋ณด๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค. (์ฟผ๋ฆฌ ์ตํฐ๋ง์ด์ ๋ ๊ธฐ์ ์์ ์์ฒด ์ ์ํด์ผํ๋์ง?)
๐ค: ์ ํ๋ฐ์ดํฐ๋ณด๋ค ๋น์ ํ๋ฐ์ดํฐ์์ ์ ์ฉํ ์ ๋ณด๋ฅผ ์ทจ๋ํ๊ธฐ ๋ ์ด๋ ค์๋ณด์ ๋๋ค. ๋ฐ์ดํฐ๋ ๊ท์น์ด ์์ด์ผ ๋ฐ์ดํฐ๋ฅผ ๋ฝ์์ธ ์ ์์ง ์๋์? ๊ท์น์ด ์๋ค๋๊ฑด ๊ฒฐ๊ตญ ์ ํ๋ฐ์ดํฐ์ ๊ฐ์๊ฑฐ ์๋๊ฐ์?