๐๐ฅ๐ฅ ๋ผ์ผ๋ฆฌ์ ์ฝ๋ ๋ถ์ค๋ฌ๊ธฐ ๐๐ฅ๐ฅ
๐๏ธ ๋ฐ์ดํฐ๋ถ์์ ์ํ SQL ๋ ์ํผ ์ฑ
์ ์ฝ๊ณ ์ ๋ฆฌ / ์์ฝ ํ ๋ด์ฉ์
๋๋ค.
๊ฐ์ ๋ํ์ ์ธ ๋น
๋ฐ์ดํฐ ์ฒ๋ฆฌ ์์คํ
์ ์ค๋ช
ํ๊ณ ๋ค๋ฃจ๋ ๋ฐ์ดํฐ์ ์, ์ฒ๋ฆฌ ๋ด์ฉ, ๋น์ฉ ์ ์ฝ๋ฑ์ ์๊ฐํ์ฌ ์ด๋ค ๋๊ตฌ๋ฅผ ์ฌ์ฉํ ์ง ์์๋ณด์ ์๊ฐ๋๋ ์์คํ
์ ๊ธฐ๋ณธ์ ์ผ๋ก SQL ์ธํฐํ์ด์ค๋ฅผ ๊ฐ์ง๊ณ ์๊ณ ์ด๋ค ๋๊ตฌ๋ฅผ ์ ํํ๋๋ผ๋ ๋ค๋ฅธ ๋๊ตฌ๋ก ์ฝ๊ฒ ๋ง์ด๊ทธ๋ ์ด์
์ด ๊ฐ๋ฅ ๋น
๋ฐ์ดํฐ ์ฒ๋ฆฌ ์์คํ
1. PostgreSQL ์คํ ์์ค RDB(Relational Database)๋ก ๋ค์ํ ํ๋ซํผ ์ง์ ๋ฐ GUI ์ธ์คํจ๋ฌ ์ ๊ณต ๋ค๋ฅธ ์คํ ์์ค RDB์ ๋น๊ต์ ํ์ค SQL์ ์ ์ค์ํ๋ฉฐ ์๋ ํจ์, CTE(WITH ๊ตฌ๋ฌธ) ๋ฑ ๋ถ์์ ํ์์ ์ผ๋ก ์ฌ์ฉํ๋ ๊ตฌ๋ฌธ ๋ชจ๋ ๊ตฌํ ๊ฐ๋ฅ ๋ง์ ํ์ฅ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ฌ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉ ๊ฐ๋ฅ 2.
๐๏ธ ๋ฐ์ดํฐ๋ถ์์ ์ํ SQL ๋ ์ํผ ์ฑ
์ ์ฝ๊ณ ์ ๋ฆฌ / ์์ฝ ํ ๋ด์ฉ์
๋๋ค.
1. ๋น
๋ฐ์ดํฐ ๋น
๋ฐ์ดํฐ์ ์ํคํผ๋์ ์ ์ ๋น
๋ฐ์ดํฐbig data๋ ์์ฉ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ๋๊ตฌ์ ๊ธฐ์กด์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์ ํ๋ฆฌ์ผ์ด์
์ผ๋ก ์ฒ๋ฆฌํ๋ ๊ฒ์ด ํ๋ค ์ ๋๋ก ๊ฑฐ๋ํ๊ณ ๋ณต์กํ ๋ฐ์ดํฐ์ ์งํฉ์ ๋ํ๋ด๋ ์ฉ์ด ๊ธฐ์ ์ ์ธ ๊ณผ์ ๋ก ์์ง, ์ ํ, ์ ์ฅ, ๊ฒ์, ๊ณต์ , ์ ์ก, ๋ถ์ ์๊ฐํ ๋ฑ ๋๊ท๋ชจ ๋ฐ์ดํฐ ์งํฉ์ ๊ฒฝํฅ์ ํ์
ํ๋ ค๋ฉด ๋น์ฆ๋์ค ๊ฒฝํฅ ๋ฐ๊ฒฌ, ์ฐ๊ตฌ ํ์ง ๊ฒฐ์ , ์ง๋ณ ์๋ฐฉ, ๋ฒ์ ์ธ์ฉ ๋งํฌ, ๋ฒ์ฃ ๋ฐฉ์ง, ์ค์๊ฐ ๋๋ก ๊ตํต ์ํฉ ํ๋จ ๋ฑ์ ์๊ด๊ด๊ณ๋ฅผ ์ ์ ์์ ๋ฐ์ดํฐ ์์ง, ์ง๊ณ, ์๊ฐํ๋ฅผ ํตํด ๋ค์ํ ๋ถ์ผ์ ํ์ฉํ๊ธฐ ์ํ ๊ฒ ๋น
๋ฐ์ดํฐ๊ฐ ์ฃผ๋ชฉ๋ฐ๊ฒ ๋ ๊ธฐ์ ์ ์ด์ ๋ค ๊ธฐ์ต ์ฉ๋์ ๋์ฉ๋ํ ํ๋์จ์ด ๊ฐ๊ฒฉ์ ํ๋ฝ๊ณผ ํด๋ผ์ฐ๋ ๊ธฐ์ ์ ๋ฑ์ฅ ๋ถ์ฐ ์ฒ๋ฆฌ๋ฅผ ๋ด๋นํ๋ ๋ฏธ๋ค์จ์ด ๋ฑ์ฅ ๋น
๋ฐ์ดํฐ ๋ฏธ๋ค์จ์ด Apache Hadoop, Amazon Redshift, Goolge BigQuery ๋ฑ ๊ธฐ์กด์ ์ฌ์ฉํ๋ ์น ์ ๊ทผ ๋ก๊ทธ, ํ์ฌ ๋ด๋ถ ๋ฐ์ดํฐ, ๊ธฐํ ๋๊ตฌ๋ฅผ ํ์ฉํด ์ป์ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ํ๋ฒ์ ๊ด๋ฆฌ ํ ์ ์์ ๋น
๋ฐ์ดํฐ ์ฌ์ฉ ์ฉ๋ ๊ฐ๋ณ์ ์ธ ์ฌ์ฉ์์ ํ๋ ํ์
์ฌ์ฉ์์ ํฅ๋ฏธ์ ๊ธฐํธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ์ถ์ฒ ๊ด๊ณ ํ์ผํ
์์ธก ๋ชจ๋ธ๋ง ๊ธฐ๊ณ ํ์ต ๋จ์ํ ์น ์ ๊ทผ์ ๋ถ์ํ๋ ์์ญ์ ๋์ด ๋ฐ์ดํฐ๋ฅผ ํ์ฉํด ๋์ ๋ฒ๋ ๊ธฐ์
์ ์๊ฐ ๋๊ธฐ ์์ํจ 2.
Note ํ ๋ด์์ ์งํํ๋ Study ์ ๋ฆฌ ์
๋๋ค. ํจ๊ป ๋
ผ์ํ๊ณ ์ถ์ ์ฃผ์ ๊ฐ์ด ์คํฐ๋๋ฅผ ํจ์ผ๋ก์จ ์ฑ
์ ๋น ๋ฅธ์๊ฐ๋ด์ ์ฝ๊ณ ์ ๋ฆฌํด๋ณผ ์ ์์ด์ ์ข์์ต๋๋ค. ( ๊ทธ ๊ณผ์ ์ ์กฐ๊ธ ํ๋ค์ง๋ง ๊ทธ๋๋ ๋ค ์ฝ์ด์ ์ข์ต๋๋ค!) ์ ์ฅ์ ๊ณต๊ฐ์ ์ ์ฝํ ๋ ์์ฃผ ๋ฐ๋๋ ํ์ผ๋ก ์ธํด ๋ฒ์ ์ด๋ ฅ์ด ๋ง์ด ์๊ธด๋ค๋ฉด ์ค์ํ ๋ฒ์ ๋ง ์ด๋ป๊ฒ ๊ณจ๋ผ๋ผ ์ ์์๊น? 1. ๋ฌธ์ ์ดํด ๋ฐ ์ค๊ณ ๋ฒ์ ํ์ 1.1 ๊ธฐ๋ฅ์ ์๊ตฌ์ฌํญ ํ์ผ์ถ๊ฐ. ๊ฐ์ฅ ์ฌ์ด ๋ฐฉ๋ฒ์ drag-and-drop ํ์ผ ๋ค์ด๋ก๋ ์ฌ๋ฌ ๋จ๋ง์ ํ์ผ ๋๊ธฐํ ํ์ผ ๊ฐฑ์ ์ด๋ ฅ ์กฐํ(revision history) ํ์ผ ๊ณต์ ํ์ผ์ด ํธ์ง๋๊ฑฐ๋ ์ญ์ ๋๊ฑฐ๋ ์๋กญ๊ฒ ๊ณต์ ๋์์ ๋ ์๋ฆผํฏ; ์ ์ธ๊ธฐ๋ฅ : ๊ตฌ๊ธ๋ฌธ์ ํธ์ง ๋ฐ ํ์
๊ธฐ๋ฅ 1.
Note ํ ๋ด์์ ์งํํ๋ Study ์ ๋ฆฌ ์
๋๋ค. ํจ๊ป ๋
ผ์ํ๊ณ ์ถ์ ์ฃผ์ ๋๋์
๋ชจ๋ฐ์ผ ์ธํฐ๋ท ํธ๋ํฝ ์ค 37% ๊ฐ ์ ํ๋ธ๋ผ๋ ์ฌ์ค์ด ๋๋์ต๋๋ค. ๋น๋์ค๋ฅผ ํธ๋์ค์ฝ๋ฉ ์ DAG ๋ชจ๋ธ์ด ์ด๋ป๊ฒ ์ฐ์ด๋์ง ์๋ฟ์ง ์์์ ์กฐ๊ธ ์ดํด๊ฐ ๊ฐ์ง ์์์ต๋๋ค. ๊ฐ์ฒด์งํฅ ์ธ์ด์์์ฒ๋ผ ๊ฐ ์์
์ ์ธํฐํ์ด์ค๋ ์ถ์๋ฉ์๋๋ก ์ ์ํด๋๋ฉด ํด๋ผ์ด์ธํธ๋ ํด๋น ์์
์ ํด๋ผ์ด์ธํธ OS์ ๋ง๊ฒ ๊ตฌํํ๋ ๊ฒ ์ด๋ผ๊ณ ์ดํดํ๋๋ฐ ๋ง์๊น์? 1. ๋ฌธ์ ์ดํด ๋ฐ ์ค๊ณ ๋ฒ์ ํ์ ์๊ตฌ์ฌํญ ๋น ๋ฅธ ๋น๋์ค ์
๋ก๋ ์ํํ ๋น๋์ค ์ฌ์ ์ฌ์ ํ์ง ์ ํ ๋ฎ์ ์ธํ๋ผ ๋น์ฉ ๋์ ๊ฐ์ฉ์ฑ๊ณผ ๊ท๋ชจ ํ์ฅ์ฑ ๊ทธ๋ฆฌ๊ณ ์์ ์ฑ ์ง์ ํด๋ผ์ด์ธํธ : ๋ชจ๋ฐ์ผ ์ฑ, ์น๋ธ๋ผ์ฐ์ , ์ค๋งํธTV ๊ฐ๋ต์ ๊ท๋ชจ ์ธก์ ์ผ๊ฐ ๋ฅ๋์ฌ์ฉ์ : 5๋ฐฑ๋ง ํ ์ฌ์ฉ์๋ ํ๋ฃจ ํ๊ท 5๊ฐ์ ๋น๋์ค ์์ฒญ 10%์ ์ฌ์ฉ์๊ฐ ํ๋ฃจ์ 1 ๋น๋์ค ์
๋ก๋ ๋น๋์ค ํ๊ท ํฌ๊ธฐ 300MB ๋น๋์ค ์ ์ฅ์ ์ํด ๋งค์ผ ์๊ตฌ๋๋ ์ฉ๋ : 5๋ฐฑ๋ง * 10% * 300MB = 150TB CDN ๋น์ฉ ํด๋ผ์ฐ๋ CDN์ ํตํด ์๋น์คํ ๊ฒฝ์ฐ ๋ฐ์ดํฐ์ ์์ ๋ฐ๋ผ CDN์์ ๊ณผ๊ธ ์๋ง์กด ํด๋ผ์ฐ๋ํ๋ก ํธ ๊ธฐ์ค์ผ๋ก 100% ๋ฏธ๊ตญ์์ ๋ฐ์ ์ 1GB ๋น 0.
Note ํ ๋ด์์ ์งํํ๋ Study ์ ๋ฆฌ ์
๋๋ค. ํจ๊ป ๋
ผ์ํ๊ณ ์ถ์ ์ฃผ์ ๋๋์
ํธ๋ผ์ด ์๋ฃ ๊ตฌ์กฐ์ ๋ํด ์ ์ ์์์ต๋๋ค. ํ๊ธ ๋จ์ด์์ ํธ๋ผ์ด ์๋ฃ๊ตฌ์กฐ๋ ์ด๋ป๊ฒ ์ด๋ฃจ์ด์ง๊น ๋์ถฉ ์ฐพ์๋ณด์๋๋ฐ ํ๊ธ์ ์์ ๋จ์๋ก ๋จ์ด๊ฐ ๋ง๋ค์ด์ง๊ธฐ ๋๋ฌธ์ ์์ ๋จ์๋ก ์ชผ๊ฐ์ด ์์ด์ฒ๋ผ ํธ๋ผ์ด ์๋ฃ๊ตฌ์กฐ๋ฅผ ๋ง๋ค ์ ์๋ค๊ณ ํฉ๋๋ค. ํ์ง๋ง ๋ ๋ณต์กํ ๊ฒ ๊ฐ์ต๋๋ค. ๊ฒ์์ด ์๋์์ฑ ์์คํ
๊ฒ์์ฐฝ์ ๋จ์ด๋ฅผ ์
๋ ฅํ๋ค๋ณด๋ฉด ์
๋ ฅ์ค์ธ ๊ธ์์ ๋ง๋ ๊ฒ์์ด๊ฐ ์๋์ผ๋ก ํ๊ธฐ๋๋ ๊ฒ autocomplete, typeahead, search-as-you-type, incremental search 1. ๋ฌธ์ ์ดํด ๋ฐ ์ค๊ณ ๋ฒ์ ํ์ ์๊ตฌ์ฌํญ ์ ์ ๋น ๋ฅธ ์๋ต ์๋ : ํ์ด์ค๋ถ์ ์๋ต์๋๋ 100๋ฐ๋ฆฌ์ด ์ด๋ด ์ฐ๊ด์ฑ : ์๋์์ฑ๋์ด ์ถ๋ ฅ๋๋ ๊ฒ์์ด๋ ์ฌ์ฉ์๊ฐ ์
๋ ฅํ ๋จ์ด์ ์ฐ๊ด๋ ๊ฒ ์ ๋ ฌ : ์์คํ
์ ๊ณ์ฐ ๊ฒฐ๊ณผ๋ ์ธ๊ธฐ๋ ๋ฑ์ ์์ ๋ชจ๋ธ์ ์ํด ์ ๋ ฌ ๊ท๋ชจ ํ์ฅ์ฑ : ์์คํ
์ ๋ง์ ํธ๋ํฝ์ ๊ฐ๋นํ ์ ์์ ์ ๋๋ก ํ์ฅ ๊ฐ๋ฅ ๊ณ ๊ฐ์ฉ์ฑ : ์ผ๋ถ ์ฅ์ ๊ฐ ๋ฐ์ํ๊ฑฐ๋ ๋๋ ค์ง๊ฑฐ๋ ์์์น ๋ชปํ ๋คํธ์ํฌ ๋ฌธ์ ๊ฐ ์๊ฒจ๋ ์์คํ
์ ๊ณ์ ์ฌ์ฉ ๊ฐ๋ฅ ๊ฐ๋ต์ ๊ท๋ชจ ์ถ์ DAU๋ ์ฒ๋ง ๋ช
์ผ๋ก ๊ฐ์ ํ๊ท ์ ์ผ๋ก ํ ์ฌ์ฉ์๋ ๋งค์ผ 10๊ฑด์ ๊ฒ์ ์ํ ์ง์ํ ๋๋ง๋ค ํ๊ท ์ ์ผ๋ก 20Byte ์
๋ ฅ ๋ฌธ์ ์ธ์ฝ๋ฉ ๋ฐฉ๋ฒ์ผ๋ก๋ ASCII ์ฌ์ฉ 1๋ฌธ์=1Byte ์ง์๋ฌธ์ ํ๊ท ์ ์ผ๋ก 4๊ฐ์ ๋จ์ด ๊ตฌ์ฑ ๊ฐ ๋จ์ด๋ ํ๊ท ๋ค์ฏ ๊ธ์ ์ง์๋น ํ๊ท 4 * 5 = 20 Byte ๊ฒ์์ฐฝ์ ๊ธ์๋ฅผ ์
๋ ฅ ๋ฐฑ์๋์ ์์ฒญ์ ๋ณด๋ธ๋ค 1ํ ๊ฒ์๋น 20๊ฑด์ ์์ฒญ์ด ๋ฐฑ์๋๋ก ์ ๋ฌ ๋๋ต ์ด๋น 24,000๊ฑด์ QPS ๋ฐ์ (10,000,000 * 10 queries/day * 20 characters / 24์๊ฐ / 3600์ด) ์ต๋ QPS = 24,000 * 2 = 48,000 ์ง์ ์ค 20% ์ ๊ท ๊ฒ์์ด 10,000,000 * 10 queries/day * 20 byte per query * 20% = 0.
Note ํ ๋ด์์ ์งํํ๋ Study ์ ๋ฆฌ ์
๋๋ค. ํจ๊ป ๋
ผ์ํ๊ณ ์ถ์ ์ฃผ์ ๋๋์
๊ธฐ์กด์๋ ํด๋ง, ํธ์ ๊ธฐ๋ฒ๋ง ์๊ณ ์์์ผ๋ ๋กฑํด๋ง์ด๋ผ๋ ๋ฐฉ๋ฒ๋ ์๊ฒ ๋์์ต๋๋ค. ์ค๊ณ์ ๋ํ ๋ด์ฉ์ ์ฃผ๋ก ๊ท๋ชจ๊ฐ ์์ ๊ทธ๋ฃน ์ฑํ
์ ๋ํ ์ค๊ณ๋ง ๊ทธ๋ฆผ์ ํตํ ์์ธํ ์ค๋ช
์ด ์์์ง๋ง ๊ท๋ชจ๊ฐ ํฐ ๊ฒฝ์ฐ๋ ๋ด์ฉ์ ๋ง์ด ๋ค๋ฃจ์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค. ๊ท๋ชจ๊ฐ ํฐ ์ฑํ
์๋น์ค์์ ํฌ๊ฒ ๋ฌ๋ผ์ง๋ ๊ฒ๋ค์ด ์์๊น์? ๋ฏธ๋์ด ํ์ผ๊ณผ ๊ฐ์ด ํฌ๊ธฐ๊ฐ ํฐ ํ์ผ์ ์ฑํ
์ผ๋ก ์ ์กํด์ผํ๋ ๊ฒฝ์ฐ WebRTC ๊ณผ ๊ฐ์(P2P ์ฒ๋ผ) ๊ธฐ์ ์ ํ์ฉํ ์ ์์ง ์์๊น ์๊ฐํด๋ณด์์ต๋๋ค.