Elasticsearch 0
๐ฟ ๊ฐ๋
์ํ์น ๋ฃจ์ฌ(Lucene) ๊ธฐ๋ฐ์ ์คํ์์ค ์ค์๊ฐ ๋ถ์ฐ ๊ฒ์ ์์ง์ผ๋ก JSON ๊ธฐ๋ฐ์ ๋น์ ํ ๋ฐ์ดํฐ ๋ถ์ฐ ๊ฒ์ ๋ฐ ๋ถ์์ ์ง์ํ๋ค.
- ์ค์น์ ์๋ฒ ํ์ฅ์ด ๋งค์ฐ ํธ๋ฆฌ
- ์ค์๊ฐ ๊ฒ์ ์๋น์ค ์ง์, ๋ถ์ฐ ๋ฐ ๋ณ๋ ฌ ์ฒ๋ฆฌ, ๊ทธ๋ฆฌ๊ณ ๋ฉํฐํ ๋์ ๊ธฐ๋ฅ ์ ๊ณต
- ํ์ฌ ์น ๋ฌธ์ ๊ฒ์, ์์ ๋ฐ์ดํฐ ๋ถ์, ์ผํ๋ชฐ ๋ฑ์ ํ์ฉ๋๊ณ ์์
- ๋น ๋ฐ์ดํฐ ๋ถ์/์ฒ๋ฆฌ MSA ํ๊ฒฝ์ ๋ก๊ทธ ๋ชจ๋ํฐ๋ง๋ฑ์ ํ์ฉ
๐ฟ ํน์ง
๋ถ์ฐ/ํ์ฅ์ฑ/๋ณ๋ ฌ์ฒ๋ฆฌ
Elasticsearch ๊ตฌ์ฑ ์ ๋ณดํต 3๊ฐ ์ด์์ ๋ ธ๋(Elasticsearch ์๋ฒ)๋ฅผ ํด๋ฌ์คํฐ๋ก ๊ตฌ์ฑํ๋ฉฐ, ๋ฐ์ดํฐ๋ฅผ ์ค๋(shard)๋ก ์ ์ฅ ์ ํด๋ฌ์คํฐ ๋ด ๋ค๋ฅธ ํธ์คํธ์ ๋ณต์ฌ๋ณธ(replica)์ ์ ์ฅํด ๋๊ธฐ ๋๋ฌธ์ ํ๋์ ๋ ธ๋๊ฐ ์ฃฝ๊ฑฐ๋ ์ค๋๊ฐ ๊นจ์ ธ๋ ๋ณต์ ๋์ด ์๋ ๋ค๋ฅธ ์ค๋๋ฅผ ํ์ฉ
๋ฐ์ดํฐ์ ๋ถ์ฐ๊ณผ ๋ณ๋ ฌ์ฒ๋ฆฌ๊ฐ ๋๋ฏ๋ก ์ค์๊ฐ ๊ฒ์ ๋ฐ ๋ถ์์ ํ ์ ์๊ณ , ๋ ธ๋๋ฅผ ์ํ์ ์ผ๋ก ๋๋ฆด ์ ์๊ฒ ์ค๊ณ๋์ด ์๊ธฐ ๋๋ฌธ์ ๋ ๋ง์ ์ฉ๋์ด ํ์ํ ๊ฒฝ์ฐ ๋ ธ๋๋ฅผ ํด๋ฌ์คํฐ์ ์ถ๊ฐํ ์ ์๋ค.
๊ณ ๊ฐ์ฉ์ฑ
Elasticsearch๋ ๋์ ์ค์ ์ฃฝ์ ๋ ธ๋๋ฅผ ๊ฐ์งํ๊ณ ์ญ์ ํ๋ฉฐ ์ฌ์ฉ์์ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ณ ์ ๊ทผ ๊ฐ๋ฅํ๋๋ก ์ ์งํ๊ธฐ ๋๋ฌธ์ ๋์ ์ค์ ์ผ๋ถ ๋ ธ๋์ ๋ฌธ์ ๊ฐ ์๊ธฐ๋๋ผ๋ ๋ฌธ์ ๊ฐ ์์
๋ฉํฐ ํ ๋์
ํด๋ฌ์คํฐ๋ ์ฌ๋ฌ๊ฐ์ ์ธ๋ฑ์ค(RDBMS์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋น์ท)๋ค์ ์ ์ฅํ๊ณ ๊ด๋ฆฌํ๋ฉฐ, ํ๋์ ์ฟผ๋ฆฌ๊ฐ ๊ทธ๋ฃน ์ฟผ๋ฆฌ๋ก ์ฌ๋ฌ ์ธ๋ฑ์ค์ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ ์ ์๋ค.
๋ฌธ์ ์ค์ฌ & ์คํค๋ง ๋ฏธ์กด์ฌ
๋ณต์กํ ํ์ค ์ธ๊ณ์ ์์๋ค์ ๊ตฌ์กฐํ๋ JSON ๋ฌธ์ ํ์์ผ๋ก ์ ์ฅํ๋ค. ๋ชจ๋ ํ๋๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ธ๋ฑ์ฑ๋๋ฉฐ, ๋ชจ๋ ์ธ๋ฑ์ค๋ค์ ๋จ์ผ ์ฟผ๋ฆฌ๋ก ๋น ๋ฅด๊ฒ ๊ฒ์ ๋ฐ ํ์ฉํ ์ ์๋ค.
๋ํ NoSQL์ด๋ RDBMS์ ๊ฐ์ ์คํค๋ง ๊ฐ๋ ์ด ์์ผ๋ฉฐ, ์ฌ์ฉ์์ ๋ฐ์ดํฐ๊ฐ ์ด๋ป๊ฒ ์ธ๋ฑ์ฑ ๋ ์ง๋ฅผ ์ฌ์ฉ์๊ฐ ์ปค์คํฐ๋ง์ด์ง ํ ์ ์๋ค.
ํ๋ฌ๊ทธ์ธ ํํ๋ก ๊ตฌํ
๊ฒ์์์ง์ ์ง์ ์ํํ์ง ์๊ณ , ํ์ํ ๊ธฐ๋ฅ์ ๋ํ ํ๋ฌ๊ทธ์ธ์ ์ ์ฉํ์ฌ ๊ธฐ๋ฅ์ ํ์ฅํ ์ ์๋ค. ์๋ฅผ ๋ค๋ฉด ์ธ๋ถ์์ ์ ๊ณตํ๋ ํํ์ ๋ถ์๊ธฐ๋ REST API๋ฅผ ๊ตฌํํ์ฌ ์ ์ฉํ ์ ์๋ค.
๐ฟ ๊ตฌ์กฐ
๋ ผ๋ฆฌ์ ๊ตฌ์กฐ
๋ํ๋จผํธ(Document)
ํ๋์ Doc์ ๋ค์ํ ํ๋๋ก ๊ตฌ์ฑ๋์ด ์์ผ๋ฉฐ ์ด ํ๋์๋ ๋ฐ์ดํฐ ํ๋์ ํด๋นํ๋ ๋ฐ์ดํฐ ํ์ ์ด ๋ค์ด๊ฐ.
- Elasticsearch์ ์ต์๋จ์(RDBMS์ Row์ ๋น์ท) Json ์ค๋ธ์ ํธ ํ๋
- ์ค์ฒฉ๊ตฌ์กฐ๋ฅผ ์ง์ํ๊ธฐ ๋๋ฌธ์ Document ๋ด๋ถ์ Document๊ฐ ๋ค์ด๊ฐ๋ ๊ฒ๋ ๊ฐ๋ฅํจ
ํ์
์ฌ๋ฌ๊ฐ์ Document๊ฐ ๋ชจ์ฌ์ ํ๊ฐ์ Type์ ์ด๋ฃธ.
- 7.0 ๋ถํฐ Type์ด ์ฌ๋ผ์ก์ผ๋ฉฐ Index๊ฐ ๊ทธ ์ญํ ์ ๋์
ํ๋
Document์ ๋ค์ด๊ฐ๋ ๋ฐ์ดํฐ ํ์ ์ผ๋ก RDBMS์ ์ด(Column)๊ณผ ๋น์ทํ๋ค. ํ์ง๋ง ํ๋๋ ๋์ ์
- RDBMS๋ ํ๋์ ์ด์ด ํ๋์ ๋ฐ์ดํฐ ํ์ ๋ง ๊ฐ์ง ์ ์์ง๋ง Elasticsearch์์๋ ์ฌ๋ฌ๊ฐ์ ํ์ ์ ๊ฐ์ง ์ ์๋ค.
๋งคํ
ํ๋์ ํ๋์ ์์ฑ์ ์ ์ํ๊ณ ์์ธ ๋ฐฉ๋ฒ์ ์ ์
- ๋งคํ ์ ๋ณด์ ์ฌ๋ฌ๊ฐ์ง ๋ฐ์ดํฐ ํ์ ์ง์ ์ด ๊ฐ๋ฅํ์ง๋ง ํ๋๋ฉด ์์ฒด๋ ์ค๋ณต์ด ๋ถ๊ฐ๋ฅ
์ธ๋ฑ์ค
RDBMS์ Table + Schema ์ญํ
- RDBMS๋ ์ฟผ๋ฆฌํ๋๋ก ์ฌ๋ฌ Schema๋ฅผ ๋์์ ์กฐํํ ์ ์์ง๋ง, Elasticsearch๋ ๊ฐ๋ฅํจ
- Elasticsearch๋ฅผ ํด๋ฌ์คํฐ๋ก ๊ตฌ์ฑํ์ ๊ฒฝ์ฐ Index๋ ์ฌ๋ฌ ๋
ธ๋์ ๋ถ์ฐ ์ ์ฅ/๊ด๋ฆฌ ๋จ
- ๊ธฐ๋ณธ์ค์ ์ 5๊ฐ์ Priamry shard ์ 1๊ฐ์ Replica shar๋ฅผ ์์ฑํจ
๋ฌผ์ง์ ๊ตฌ์กฐ
๋ ธ๋
Elasticsearch ํด๋ฌ์คํฐ์ ํฌํจ๋ ๋จ์ผ ์๋ฒ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ํด๋ฌ์คํฐ์ ์ํ ๋ฐ ๊ฒ์ ๊ธฐ๋ฅ์ ์ฐธ์ฌ
- RDBMS์๋ ๋ค๋ฅด๊ฒ ์ฌ๋ฌ๊ฐ์ ๋ ธ๋๋ก ๊ตฌ์ฑ๋ ํด๋ฌ์คํฐ๋ ๊ด๋ฆฌํ๋ ๋ฐ์ดํฐ๊ฐ ๊ฑฐ์ ธ๋ ๋ ธ๋๋ฅผ ์ถ๊ฐ์์ผ์ ๋์ฉ๋ ์ฒ๋ฆฌ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํด์ค
- ๊ตฌ์ฑ
- ๋ง์คํฐ ๋ ธ๋(Master Node): ํด๋ฌ์คํฐ ๊ด๋ฆฌ ๋ ธ๋. ๋ ธ๋ ์ถ๊ฐ/์ ๊ฑฐ, ์ธ๋ฑ์ค ์์ฑ/์ญ์ ๋ฑ ํด๋ฌ์คํฐ์ ์ ๋ฐ์ ๊ด๋ฆฌ ๋ด๋น. ์ฌ๋ฌ๊ฐ์ ๋ง์คํฐ ๋ ธ๋๋ฅผ ์ค์ ํ๋ฉด ํ๋์ ๋ง์คํฐ ๋ ธ๋๋ก ์๋๋จ
- ๋ฐ์ดํฐ ๋ ธ๋(Data Node): ๋ฐ์ดํฐ(Document)๊ฐ ์ ์ฅ๋๋ ๋ ธ๋. ๋ฐ์ดํฐ๊ฐ ๋ถ์ฐ ์ ์ฅ ๋๋ ๋ฌผ๋ฆฌ์ ์ธ ๊ณต๊ฐ์ธ ์ค๋๊ฐ ๋ฐฐ์น๋๋ ๋ ธ๋. ์์ธ/๊ฒ์/ํต๊ณ ๋ฑ ๋ฐ์ดํฐ ์์ ์ ์ํ
- ์ฝ๋๋ค์ดํ ๋ ธ๋(Coordinating Node): ์ฌ์ฉ์์ ์์ฒญ์ ๋ฐ๊ณ Round Robin ๋ฐฉ์์ผ๋ก ๋ถ์ฐ์์ผ์ฃผ๋ ๋ ธ๋. ํด๋ฌ์คํฐ์ ๊ด๋ จ๋ ๊ฒ์ ๋ง์คํฐ ๋ ธ๋๋ก, ๋ฐ์ดํฐ๋ ๋ฐ์ดํฐ ๋ ธ๋๋ก ๋๊น
- ์ธ์ ์คํธ ๋ ธ๋(Ingest Node): ๋ฌธ์ ์ ์ฒ๋ฆฌ ์์ ์ํ. ์ธ๋ฑ์ค ์์ฑ ์ ๋ฌธ์ ํ์ ๋ณ๊ฒฝ์ ๋ค์ํ๊ฒ ํ ์ ์์(์คํฌ๋ฆฝํธ๋ก ์ ์ฒ๋ฆฌ ํ์ดํ๋ผ์ธ ๊ตฌ์ฑ๋ฑ)
์ค๋(Shard)
์ธ๋ฑ์ค ๋ด๋ถ์๋ ์์ธ๋ ๋ฐ์ดํฐ๋ค์ด ์กด์ฌํ๋๋ฐ ์ด ๋ฐ์ดํฐ๋ค์ ํ๋๋ก ๋ญ์ณ์ ์กด์ฌํ์ง ์๊ณ ๋ฌผ๋ฆฌ์ ๊ณต๊ฐ์ ์ฌ๋ฌ๊ฐ์ ๋ถ๋ถ๋ค๋ก ๋๋์ด์ ์กด์ฌํจ.(์ด๋ฌํ ๊ณต๊ฐ์ ์ค๋๋ผ ํจ)
- Primary Shard: ๋ฐ์ดํฐ์ ์๋ณธ. Elasticsearch์์ ๋ฐ์ดํฐ ์
๋ฐ์ดํธ ์์ฒญ์ ๋ ๋ฆฌ๋ฉด ๋ฐ๋์ Primary Shard์ ์์ฒญ์ ํ๊ฒ ๋๊ณ ํด๋น ๋ด์ฉ์ ๋ ํ๋ฆฌ์นด์ ๋ณต์ ๋จ.
- ๊ฒ์ ์ฑ๋ฅ์ ์ํด ํด๋ฌ์คํฐ์ ์ค๋ ๊ฐฏ์๋ฅผ ์กฐ์ ํ๋ ํ๋์ ํจ
- Replica Shard: ๊ธฐ์กด ์๋ณธ ๋ฐ์ดํฐ๊ฐ ๋ฌด๋์ก์ ๋ ๊ทธ ๋์ ์ฐ๋ฉด์ ์ฅ์ ๊ทน๋ณต ์ญํ ์ ์ํํจ.
์ธ๊ทธ๋จผํธ(Segment)
๋ฌธ์์ ๋น ๋ฅธ ๊ฒ์์ ์ํด ์ค๊ณ๋ ์๋ฃ๊ตฌ์กฐ. ๊ฐ ์ค๋๋ ๋ค์์ ์ธ๊ทธ๋จผํธ๋ก ๊ตฌ์ฑ๋์ด์์
- Document ์ ์ฅ ์ Elasticsearch๋ ๋ฉ๋ชจ๋ฆฌ์ ์ด๊ฒ๋ค์ ๋ชจ์๋๊ณ ์๋ก์ด ์ธ๊ทธ๋จผํธ๋ฅผ ๋์คํฌ์ ๊ธฐ๋กํ์ฌ ๊ฒ์์ ๋ฆฌํ๋ ์ฌ(refresh)ํ๋ค.
- ์ค๋์์ ๊ฒ์ ์, ๋จผ์ ๊ฐ ์ธ๊ทธ๋จผํธ๋ฅผ ๊ฒ์ํ์ฌ ๊ฒฐ๊ณผ๋ฅผ ์กฐํฉํ ํ ์ต์ข ๊ฒฐ๊ณผ๋ฅผ ํด๋น ์ค๋์ ๊ฒฐ๊ณผ๋ก ๋ฆฌํด
- ์ธ๊ทธ๋จผํธ๋ ๋ถ๋ณ์ฑ. ์ญ์ ์ ์๋ก์ด ๊ฒ์ ํฌ์ธํฐ๊ฐ ๊ฐ๋ฆฌํจ๋ค. ๊ทธ๋ฆฌ๊ณ ํน์ ์๊ณ์น๋ฅผ ๋๊ธฐ๋ฉด ๋์ด์ ํ์์์ด์ง ๋ฐ์ดํฐ๋ค์ ์ ๋ฆฌํ๊ณ ์๋ก์ด ์ธ๊ทธ๋จผํธ๋ก ๋ณํฉ ํ ํ ์ธ๊ทธ๋จผํธ๋ฅผ ์ญ์ ํ๋ฉฐ, ์ด ๋ ๋น๋ก์ ๋์คํฌ์์ ์์ ํ ์ญ์