ElasticSearch๋ Apache Lucene(์ํ์น ๋ฃจ์ฌ) ๊ธฐ๋ฐ์ Java ์คํ ์์ค ๊ฒ์ ์์ง์ด๋ค.
๋ฐฉ๋ํ ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ํ๊ฒ(๊ฑฐ์ ์ค์๊ฐ) ์ ์ฅ, ๊ฒ์, ๋ถ์์ ์ํํ ์ ์๋ค.
ElasticSearch์ ์๋์ ํ์ฅ์ฑ, ๊ทธ๋ฆฌ๊ณ ์๋ง์ ์ข
๋ฅ์ ์ฝํ
์ธ ๋ฅผ ์์ธํ ์ ์๋ ๋ฅ๋ ฅ์ ๋ค์๊ณผ ๊ฐ์ ๋ค์ํ ์ฌ์ฉ ์ฌ๋ก์ ์ด์ฉ๋ ์ ์๋ค.
- ์ดํ๋ฆฌ์ผ์ด์ ๊ฒ์
- ์น์ฌ์ดํธ ๊ฒ์
- ์ํฐํ๋ผ์ด์ฆ ๊ฒ์
- ๋ก๊น ๊ณผ ๋ก๊ทธ ๋ถ์
- ์ธํ๋ผ ๋ฉํธ๋ฆญ๊ณผ ์ปจํ ์ด๋ ๋ชจ๋ํฐ๋ง
- ์ ํ๋ฆฌ์ผ์ด์ ์ฑ๋ฅ ๋ชจ๋ํฐ๋ง
- ์์น ๊ธฐ๋ฐ ์ ๋ณด ๋ฐ์ดํฐ ๋ถ์ ๋ฐ ์๊ฐํ
- ๋ณด์ ๋ถ์
- ๋น์ฆ๋์ค ๋ถ์
ํ์ฉ ์
-
๊ณ ๊ฐ์ด ํ๋งค ์ ํ์ ๊ฒ์ํ ์ ์๋ ์จ๋ผ์ธ ์น ์คํ ์ด๋ฅผ ์ด์ํ๋ค. ์ด ๊ฒฝ์ฐ์๋
ElasticSearch๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ฒด ์ ํ ์นดํ๋ก๊ทธ ๋ฐ ์ฌ๊ณ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ณ ๊ทธ์ ๋ํ ๊ฒ์ ๋ฐ ์๋ ์์ฑ ์ ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ ์ ์๋ค. -
๋ก๊ทธ ๋๋ ํธ๋์ญ์ ๋ฐ์ดํฐ๋ฅผ ์์งํ๊ณ ์ด ๋ฐ์ดํฐ๋ฅผ ๋ถ์ํ๊ณ ๋ง์ด๋ํ์ฌ ์ถ์ด, ํต๊ณ, ์์ฝ ์ ๋ณด๋ฅผ ์ป๊ฑฐ๋ ์ด์ ์์ธ์ ์์๋ด๋ ค ํ๋ค.
-
๋ถ์/๋น์ฆ๋์ค ์ธํ ๋ฆฌ์ ์ค ๊ธฐ๋ฅ์ด ํ์ํ์ฌ ๋ฐฉ๋ํ ๋ฐ์ดํฐ(์๋ฐฑ๋ง ๋๋ ์์ญ์ต ๊ฐ์ ๋ ์ฝ๋)๋ฅผ ๋์์ผ๋ก ์ ์ํ๊ฒ ์กฐ์ฌ, ๋ถ์, ์๊ฐํ, ์์ ์ง์๋ฅผ ์ํํ๊ณ ์ถ๋ค. ์ด ๊ฒฝ์ฐ์๋ ElasticSearch๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋ค์ Kibana๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ์ค ์ค์ํ ์์๋ฅผ ์๊ฐํํ ๋ง์ถคํ ๋์๋ณด๋๋ฅผ ๋ง๋ค ์ ์๋ค. ๋ํ ElasticSearch ์ง๊ณ ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ์ ๋ํ ๋ณต์กํ ๋น์ฆ๋์ค ์ธํ ๋ฆฌ์ ์ค ์ฟผ๋ฆฌ๋ฅผ ์ํํ ์ ์๋ค.
๋น์ฆ๋์ค ์ธํ ๋ฆฌ์ ์ค(BI)๋ ์กฐ์ง์ด ๋ ๋์ ์์ฌ ๊ฒฐ์ ์ ๋ด๋ฆฌ๊ณ ์ ๋ณด์ ์ ๊ฐํ ์กฐ์น๋ฅผ ์ทจํ๋ฉฐ ๋ณด๋ค ํจ์จ์ ์ธ ๋น์ฆ๋์ค ํ๋ก์ธ์ค๋ฅผ ๊ตฌํํ ์ ์๋๋ก ์ง์ํ๋ ๊ธฐ๋ฅ์ ๋งํ๋ค.
์ฌ์ฉ์๊ฐ ์๋ฒ๋ก ๋ถํฐ ์ํ๋ ๋ชจ๋ ์ ํ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์์ ์ค์๊ฐ์ผ๋ก ํด๋น ๋ฐ์ดํฐ๋ฅผ ๊ฒ์, ๋ถ์ ๋ฐ ์๊ฐํ ํ ์ ์๋๋ก ๋์์ฃผ๋ Elastic์ ์คํ์์ค ์๋น์ค ์ ํ์ด๋ค.
๊ธฐ์กด ElasticSearch + Logstash + Kibana๋ฅผ ๊ฐ์ด ๋ฌถ์ด ELK(ELK Stack)๋ผ๋ ์๋น์ค๋ช
์ผ๋ก ์ ๊ณตํ์ผ๋ 5.0.0 ๋ฒ์ ๋ถํฐ Beats๊ฐ ํฌํจ๋์ด Elastic Stack์ด๋ ์ด๋ฆ์ผ๋ก ์๋น์ค๊ฐ ์ ๊ณต๋๊ณ ์๋ค.
- Logstash
- ๋ค์ํ ์์ค(DB, csv ํ์ผ ๋ฑ)์ ๋ก๊ทธ ๋๋ ํธ๋์ญ์
๋ฐ์ดํฐ๋ฅผ ์์ง, ์ง๊ณ, ํ์ฑํ์ฌ
ElasticSearh๋ก ์ ๋ฌ
- ๋ค์ํ ์์ค(DB, csv ํ์ผ ๋ฑ)์ ๋ก๊ทธ ๋๋ ํธ๋์ญ์
๋ฐ์ดํฐ๋ฅผ ์์ง, ์ง๊ณ, ํ์ฑํ์ฌ
- ElasticSearch
Logstash๋ก๋ถํฐ ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ ๋ฐ ์ง๊ณํ์ฌ ํ์ํ ์ ๋ณด๋ฅผ ํ๋
- Kibana
ElasticSearch์ ๋น ๋ฅธ ๊ฒ์์ ํตํด ๋ฐ์ดํฐ๋ฅผ ์๊ฐํ ๋ฐ ๋ชจ๋ํฐ๋ง
- Beats
- ๊ฒฝ๋ ๋ฐ์ดํฐ ์์ง๊ธฐ
- ๋จ์ผ ๋ชฉ์ ์ ๋ฐ์ดํฐ ์์ง๊ธฐ ๋ฌด๋ฃ ์คํ ์์ค ํ๋ซํผ์ผ๋ก ์๋ฐฑ ์์ฒ ๊ฐ์ ์ฅ๋น์ ์์คํ ์ผ๋ก๋ถํฐ Logstash๋ ElasticSearch์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ค.
์ฃผ๋ก ๋ก๋๋ฐธ๋ฐ์ฑ๋์ด ์๋ WAS์ ํฉ์ด์ ธ ์๋ ๋ก๊ทธ๋ฅผ ํ๊ณณ์ผ๋ก ๋ชจ์ผ๊ณ , ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ๊ฒ์ํ ๋ค ์๊ฐํํ์ฌ ๋ชจ๋ํฐ๋งํ๊ธฐ ์ํด ์ฌ์ฉํ๋ค.
๋ก๊ทธ, ์์คํ
๋ฉํธ๋ฆญ, ์น ์ ํ๋ฆฌ์ผ์ด์
๋ฑ ๋ค์ํ ์์ค๋ก๋ถํฐ ์์ ๋ฐ์ดํฐ๊ฐ ElasticSearch๋ก ํ๋ฌ ๋ค์ด๊ฐ๋ค.
๋ฐ์ดํฐ ์์ง์ ์์ ๋ฐ์ดํฐ๊ฐ ElasticSearch์์ ์์ธ๋๊ธฐ ์ ์ ๊ตฌ๋ฌธ ๋ถ์, ์ ๊ทํ๋ฅผ ์งํํ๋ค.
ElasticSearch์์ ์ผ๋จ ์์ธ๋๋ฉด, ์ฌ์ฉ์๋ ์ด ๋ฐ์ดํฐ์ ๋ํด ๋ณต์กํ ์ฟผ๋ฆฌ๋ฅผ ์คํํ๊ณ ์ง๊ณ๋ฅผ ์ฌ์ฉํด ๋ฐ์ดํฐ์ ๋ณต์กํ ์์ฝ์ ๊ฒ์ํ ์ ์๋ค.
Kibana์์ ์ฌ์ฉ์๋ ๋ฐ์ดํฐ๋ฅผ ์๊ฐํํ๊ณ , ๋์๋ณด๋๋ฅผ ๊ณต์ ํ๋ฉฐ ๊ด๋ฆฌํ ์ ์๋ค.
RDB์ ๋งค์นญ๋๋ ํค์๋๋ค์ด๋ค.
์ธ๋ฑ์ค์ ํ์
์ ๋ํด ์ฃผ์ํด์ผํ๋ค.
RDB์ ElasticSearch์ ๋ฐ์ดํฐ ์ ์ฅ ๋ฐฉ์์ด ๋ค๋ฅด๋ค.
์ผ๋ฐ์ ์ผ๋ก RDB๋ ํ์ ๊ธฐ๋ฐ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ค. ๊ทธ์ ๋ฐํด ElasticSearch๋ ๋จ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก(์ญ ์ธ๋ฑ์ค,Inverted Index)๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ค.
RDB๋ ๋ฐ์ดํฐ ์์ ,์ญ์ ์ ํธ์์ฑ๊ณผ ์๋๋ฉด์์ ๊ฐ์ ์ด ์์ง๋ง ๋ค์ํ ์กฐ๊ฑด์ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ๊ณ ์ง๊ณํ๋ ๋ฐ์๋ ๊ตฌ์กฐ์ ์ธ ํ๊ณ๊ฐ ์๋ค.
์๋์ ์ฌ์ง์ฒ๋ผ 'MSA'๋ผ๋ ๊ฒ์ํ ๋ ๋ํ๋จผํธ ๊ฐ์๋งํผ 'MSA'๊ฐ ์๋์ง ํ์ธ์ ๋ฐ๋ณตํ๊ธฐ ๋๋ฌธ์ ๋ง์ ์์ ๋ํ๋จผํธ๊ฐ ์์ ๊ฒฝ์ฐ ๋นํจ์จ์ ์ด๋ค.
๋ฐ๋ฉด์ ๋จ์ด ๊ธฐ๋ฐ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ElasticSearch๋ ํน์ ๋จ์ด๊ฐ ์ด๋์ ์ ์ฅ๋์ด์๋์ง ์ด๋ฏธ ์๊ณ ์์ด ๋ชจ๋ ๋ํ๋จผํธ๋ฅผ ๊ฒ์ํ ในํ์๊ฐ ์๋ค.
์๋์ ์ฌ์ง์ฒ๋ผ ์ญ์ธ๋ฑ์ค ๊ตฌ์กฐ๋ก ์ ์ฅํ ์ํ์์ 'MSA'๋ฅผ ๊ฒ์ํ๋ฉด ๋จ์ด๊ฐ ์ ์ฅ๋ ๋ํ๋จผํธ๋ฅผ ์๊ณ ์๊ธฐ ๋๋ฌธ์ ๋ํ๋จผํธ ๊ฐ์์ ์๊ด์์ด ํ ๋ฒ์ ์กฐํ๋ก ๊ฒ์์ ๋๋ผ ์ ์๋ค.
๋ค๋ง ์์ ๊ณผ ์ญ์ ๋ ElasticSearch ๋ด๋ถ์ ์ผ๋ก ๊ต์ฅํ ๋ง์ ๋ฆฌ์์ค๊ฐ ์์๋๋ ์์ ์ด๋ค. ๋ฐ๋ผ์ ๋ฐ์ดํฐ ํน์ฑ์ ์์ ๊ณผ ์ญ์ ๊ฐ ๋ง์ ๊ฒฝ์ฐ์๋ RDB์ ์๋ผ์คํฑ ์์ญ์ ๋๋์ด ์ํคํ ์ฒ๋งํ๋ ๊ฒ์ด ํ์ํ๋ค.
ElasticSearch ์ธ๋ฑ์ค๋ ์๋ก ๊ด๋ จ๋์ด ์๋ ๋ฌธ์๋ค์ ๋ชจ์์ด๋ค.
ElasticSearch๋ JSON ๋ฌธ์๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ค. ๊ฐ ๋ฌธ์๋ ์ผ๋ จ์ ํค(ํ๋๋ ์์ฑ์ ์ด๋ฆ)์ ๊ทธ์ ํด๋นํ๋ ๊ฐ(๋ฌธ์์ด, ์ซ์, ๋ถ์ธ, ๋ ์ง, ๊ฐ์ ๋ฐฐ์ด, ์ง๋ฆฌ์ ์์น ๋๋ ๊ธฐํ ๋ฐ์ดํฐ ์ ํ)์ ์๋ก ์ฐ๊ฒฐํ๋ค.
ElasticSearch๋ ์ญ ์ธ๋ฑ์ค๋ผ๊ณ ํ๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋๋ฐ, ์ด๊ฒ์ ์์ฃผ ๋น ๋ฅธ ํ ํ
์คํธ ๊ฒ์์ ํ ์ ์๋๋ก ์ค๊ณ๋ ๊ฒ์ด๋ค.
์ญ ์ธ๋ฑ์ค๋ ๋ฌธ์์ ๋ํ๋๋ ๋ชจ๋ ๊ณ ์ ํ ๋จ์ด์ ๋ชฉ๋ก์ ๋ง๋ค๊ณ , ๊ฐ ๋จ์ด๊ฐ ๋ฐ์ํ๋ ๋ชจ๋ ๋ฌธ์๋ฅผ ์๋ณํ๋ค.
์์ธ ํ๋ก์ธ์ค ์ค์, ElasticSearch๋ ๋ฌธ์๋ฅผ ์ ์ฅํ๊ณ ์ญ ์ธ๋ฑ์ค๋ฅผ ๊ตฌ์ถํ์ฌ ๊ฑฐ์ ์ค์๊ฐ์ผ๋ก ๋ฌธ์๋ฅผ ๊ฒ์ ๊ฐ๋ฅํ ๋ฐ์ดํฐ๋ก ๋ง๋ ๋ค. ์ธ๋ฑ์ค API๋ฅผ ์ฌ์ฉํด ์์ธ์ด ์์๋๋ฉฐ, ์ด๋ฅผ ํตํด ์ฌ์ฉ์๋ ํน์ ํ ์ธ๋ฑ์ค์์ JSON ๋ฌธ์๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ์
๋ฐ์ดํธ ํ ์ ์๋ค.
RDB ๋ฐ์ดํฐ๋ฒ ์ด์ค = ์ธ๋ฑ์ค RDB ํ ์ด๋ธ = ํ์
ํ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฌ๋ฌ ํ ์ด๋ธ์ ๊ฐ์ง๋ฏ์ด, ElasticSearch๋ ํ๋์ ์ธ๋ฑ์ค์ ์ฌ๋ฌ ํ์ ์ ๊ฐ์ง ์ ์๋ค. ํ์ง๋ง ElasticSearch 7.0 ์ด์๋ถํฐ๋ ํ๋์ ์ธ๋ฑ์ค์ ํ๋์ ํ์ ๋ง ๊ฐ์ง ์ ์๋๋ก ๋ฐ๋์๋ค.
RDB์ ํ ์ด๋ธ์ ์์ ๊ฐ๋ณ์ ์ธ ๊ด๊ณ์ด๊ธฐ ๋๋ฌธ์ ๊ฐ ํ ์ด๋ธ์ ์ด๋ฆ์ด ๊ฐ์ ์ปฌ๋ผ์ด ์์ด๋ ๋ฌธ์ ๊ฐ ์๋ค. ์๋ฅผ ๋ค์ด Twitter DB ์์ User Table, Tweet Table์ด ์๊ณ ๊ฐ๊ฐ์ ํ ์ด๋ธ ์์ user_name์ด ์์ด๋ ์๊ด์๋ค.
๋ฐ๋ฉด, ElasticSearch์์ ํ ์ธ๋ฑ์ค ๋ด์ ํ์
๋ค์ ๋ด๋ถ์ ์ผ๋ก ๊ฐ์ Lucene ํ๋๋ฅผ ์ฌ์ฉํ๋ค. ์ฆ ์์์ ์๋ก ๋ค์๋ User ํ์
์ user_name ํ๋์ Tweet ํ์
์ user_name ํ๋๋ ๋์ผํ ํ๋์ ์ ์ฅ๋๋ฉฐ ๋ user_name ํ๋๋ ๋์ผํ ๋งคํ(์ ์)๋ฅผ ๊ฐ์ ธ์ผ ํ๋ค.
๋ฐ๋ผ์ ํ์ ์ด ๋ค๋ฅผ์ง๋ผ๋ ๋์ผํ ์ด๋ฆ์ ๊ฐ์ง ํ๋๋ ๋ ๋ฆฝ์ ์ด์ง ์์ผ๋ฏ๋ก ์ฌ๋ฌ ๊ฐ์ง ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ผ๋ ํ๋์ ์ธ๋ฑ์ค์๋ ํ๋์ ํ์ ๋ง์ ๊ฐ๋๋ก ์์ ๋์๋ค.
Elasticsearch์์ ๊ฐ์ฅ ํฐ ์์คํ ๋จ์๋ฅผ ์๋ฏธํ๋ฉฐ, ์ต์ ํ๋ ์ด์์ ๋ ธ๋๋ก ์ด๋ฃจ์ด์ง ๋ ธ๋์ ์งํฉ์ด๋ค.
์๋ก ๋ค๋ฅธ ํด๋ฌ์คํฐ๋ ๋ฐ์ดํฐ์ ์ ๊ทผ, ๊ตํ์ ํ ์ ์๋ ๋ ๋ฆฝ์ ์ธ ์์คํ ์ผ๋ก ์ ์ง๋๋ฉฐ, ์ฌ๋ฌ ๋์ ์๋ฒ๊ฐ ํ๋์ ํด๋ฌ์คํฐ๋ฅผ ๊ตฌ์ฑํ ์ ์๊ณ ํ ์๋ฒ์ ์ฌ๋ฌ ๊ฐ์ ํด๋ฌ์คํฐ๊ฐ ์กด์ฌํ ์ ์๋ค.
๋ ธ๋๋ ํด๋ฌ์คํฐ์ ํฌํจ๋ ๋จ์ผ ์๋ฒ๋ก์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ํด๋ฌ์คํฐ์ ์์ธํ ๋ฐ ๊ฒ์ ๊ธฐ๋ฅ์ ์ฐธ์ฌํ๋ค.
๋
ธ๋๋ ์ญํ ์ ๋ฐ๋ผ Master-eligible, Data, Ingest, Tribe Coordination Only Node ๋
ธ๋๋ก ๊ตฌ๋ถํ ์ ์๋ค.
๐ Master-eligible Node
ํด๋ฌ์คํฐ๋ฅผ ์ ์ดํ๋ ๋ง์คํฐ๋ก ์ ํํ ์ ์๋ ๋ ธ๋์ด๋ค. ๋ง์คํฐ ๋ ธ๋๊ฐ ํ๋ ์ญํ ์ ๋ค์๊ณผ ๊ฐ๋ค.
- ์ธ๋ฑ์ค ์์ฑ, ์ญ์
- ํด๋ฌ์คํฐ ๋ ธ๋์ ์ถ์ , ๊ด๋ฆฌ
- ๋ฐ์ดํฐ ์ ๋ ฅ ์ ํ ๋นํ ์ค๋ ์ ํ
๐ Data Node
๋ฐ์ดํฐ(Document)๊ฐ ์ ์ฅ๋๋ ๋ ธ๋์ด๋ฉฐ, ๋ฐ์ดํฐ๊ฐ ๋ถ์ฐ ์ ์ฅ๋๋ ๋ฌผ๋ฆฌ์ ๊ณต๊ฐ์ธ ์ค๋๊ฐ ๋ฐฐ์น๋๋ ๋ ธ๋์ด๋ค.
CRUD, ์์ธ, ๊ฒ์, ํต๊ณ ๋ฑ์ ๋ฐ์ดํฐ ์์ ์ ์ํํ๋ฏ๋ก ๋ง์ ๋ฆฌ์์ค(CPU, ๋ฉ๋ชจ๋ฆฌ ๋ฑ)๋ฅผ ํ์๋ก ํ๋ค. ๋ฐ๋ผ์ ๋ชจ๋ํฐ๋ง ์์ ์ ํด์ผ ํ๊ณ , ๋ง์คํฐ ๋ ธ๋์๋ ๋ถ๋ฆฌํด์ผ ํ๋ค.
Elasticsearch ๋ฒ์ ์ด ์
๊ทธ๋ ์ด๋ ๋๋ฉด์ Data Node์๋ ์ข ๋ ๋ค์ํ๊ฐ ๋์์ต๋๋ค.
ํ์ฌ Data Node๋ Content Data, Hot Data, Warm Data, Cold Data, Frozen Data๋ก ์ธ๋ถํ ๋์๋ค.
- Content Data
- Content Data ๋ ธ๋๋ ์ ์ ๊ฐ ๋ง๋ ์ฝํ ์ธ ๋ฅผ ์์ฉํ๋ ๋ ธ๋์ด๋ค.
- CRUD, ๊ฒ์ ๋ฐ ์ง๊ณ์ ๊ฐ์ ์์ ์ ๊ฐ๋ฅํ๊ฒ ํ๋ค.
- Hot Data
- Hot Data ๋ ธ๋๋ ์๊ณ์ด ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ค. - ํด๋น ๋ ธ๋๋ read/write๊ฐ ๋น ๋ฅด๋ฉฐ ๋ ๋ง์ ํ๋์จ์ด ๋ฆฌ์์ค(SSD)๊ฐ ํ์ํ๊ธฐ ๋๋ฌธ์ ๊ณ ์ฌ์์ ์๋ฒ์ ์ ํฉํ๋ค.
- Warm Data
- Warm Data ๋ ธ๋๋ ๋ ์ด์ ์ ๋ฐ์ดํธ๊ฐ ๋์ง ์์ง๋ง ์ฟผ๋ฆฌ๋ฅผ ์คํํ๋ ์ธ๋ฑ์ค๋ฅผ ์ ์ฅํ๋ค.
- ์ฆ ์ค๋๋ ๋ฐ์ดํฐ์ด์ง๋ง ํ์ฉํ๊ณ ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ณด๊ดํ๋ค.
- ์ผ๋ฐ์ ์ผ๋ก ์ด ๋ ธ๋๋ ์ฑ๋ฅ์ด ๋ฎ์ ํ๋์จ์ด๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
- Cold Data
- Cold Data ๋ ธ๋๋ ์ฝ๊ธฐ ์ ์ฉ ์ธ๋ฑ์ค๋ฅผ ์ ์ฅํ๋ค.(์์ฃผ ์ฌ์ฉํ์ง ์๋ ์ธ๋ฑ์ค)
- ์ ์ฉ ๋ฐ์ดํฐ์ ๊ฒฝ์ฐ ํด๋ฌ์คํฐ ์ ์ฅ๊ณต๊ฐ์ ์ต๋ 50% ์ ์ฝ ๊ฐ๋ฅํ๋ค.
- ๋ ํ๋ฆฌ์นด๋ฅผ ์ค๋ ์ท์ผ๋ก ์ ์ฅํ๊ณ ์ค๋ ์ท ์ ์ฅ์์ ์คํ๋ก๋ ํ๋ค.
- ๊ฒ์ ๊ฐ๋ฅ ์ค๋ ์ท์ ์ด์ฉํด์ ๋ฐ์ดํฐ ๋ณต์์ฑ์ ๊ฐํํ์๋ค.
- Frozen Data
- Frozen Data ๋ ธ๋๋ shared_cache ์ต์ ์ผ๋ก๋ง ๋ง์ดํธ ๋ ๊ฒ์ ๊ฐ๋ฅํ ์ค๋ ์ท์ ์ ์ฅํ๋ค.
- ์ฆ ์ค๋ ์ท ๋ฐ์ดํฐ๋ฅผ ํด๋น ๋ ธ๋์ ์ ์ฅํ๊ณ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ ๊ฐ๋ฅํ๋๋ก ํ๋ ๋ ธ๋์ด๋ค.
๐ Ingest Node
๋ฐ์ดํฐ๋ฅผ ๋ณํํ๋ ๋ฑ ์ฌ์ ์ฒ๋ฆฌ ํ์ดํ๋ผ์ธ์ ์คํํ๋ ์ญํ ์ ํ๋ค.
๐ Coordination Only Node
์ฌ์ฉ์์ ์์ฒญ์ ๋ฐ๊ณ ๋ผ์ด๋ ๋ก๋น ๋ฐฉ์์ผ๋ก ๋ถ์ฐ์ ํ๋ ๋ ธ๋์ด๋ค.
ํด๋ฌ์คํฐ์ ๊ด๋ จ๋ ๊ฒ์ ๋ง์คํฐ ๋
ธ๋๋ก ๋๊ธฐ๊ณ , ๋ฐ์ดํฐ์ ๊ด๋ จ๋ ๊ฒ์ ๋ฐ์ดํฐ ๋
ธ๋๋ก ๋๊ธด๋ค.
๋ก๋๋ฐธ๋ฐ์ฑ ์ญํ ์ ํ๋ ๋ ธ๋๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค.
์ธ๋ฑ์ค (Index) RDBMS์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋์ํ๋ ๊ฐ๋ ์ด๋ค.
์ค๋ (shard)
์ธ๋ฑ์ค ๋ด๋ถ์๋ ์์ธ๋ ๋ฐ์ดํฐ๋ค์ด ์กด์ฌํ๋๋ฐ, ์ด ๋ฐ์ดํฐ๋ค์ ํ๋๋ก ๋ญ์ณ์ ์กด์ฌํ์ง ์๊ณ ๋ฌผ๋ฆฌ์ ๊ณต๊ฐ์ ์ฌ๋ฌ ๋ถ๋ถ์ผ๋ก ๋๋์ด ์กด์ฌํ๋ค.
์ด๋ฌํ ๋ถ๋ถ์ ์ค๋๋ผ๊ณ ํ๋ค. ์ฆ, ์ค์ผ์ผ ์์์ ์ํด ํ๋์ ์ธ๋ฑ์ค๋ฅผ ์ฌ๋ฌ ์ค๋๋ก ์ชผ๊ฐฐ๋ค๊ณ ์๊ฐํ๋ฉด ๋๋ค.
์ค๋๋ ํ๋ผ์ด๋จธ๋ฆฌ ์ค๋์ ๋ ํ๋ฆฌ์นด ์ค๋๋ก ๋๋๋ค.
๋ ํ๋ฆฌ์นด๋ ์๋ณธ shard๊ฐ ์ฅ์ ๊ฐ ๋ฐ์ํ๋๋ผ๋ ๋ณต์ ๋ณธ shard๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํ ์ ์์ด ์ฅ์ ๋์์ ํจ๊ณผ์ ์ด๋ค.
- ํ๋ผ์ด๋จธ๋ฆฌ ์ค๋
- ๋ฐ์ดํฐ์ ์๋ณธ์ด๋ค. Elasticsearch์์ ๋ฐ์ดํฐ ์ ๋ฐ์ดํธ ์์ฒญ์ ๋ ๋ฆฌ๋ฉด ๋ฐ๋์ ํ๋ผ์ด๋จธ๋ฆฌ ์ค๋์ ์์ฒญํ๊ฒ ๋๊ณ , ํด๋น ๋ด์ฉ์ ๋ ํ๋ฆฌ์นด ์ค๋์ ๋ณต์ ๋๋ค. ๊ฒ์ ์ฑ๋ฅ ํฅ์์ ์ํด ํด๋ฌ์คํฐ์ ์ค๋ ๊ฐ์๋ฅผ ์กฐ์ ํ๊ธฐ๋ ํ๋ค.
- ๋ ํ๋ฆฌ์นด ์ค๋ (๋ณต์ )
- ํ๋ผ์ด๋จธ๋ฆฌ ์ค๋์ ๋ณต์ ๋ณธ์ด๋ค. ๊ธฐ์กด ์๋ณธ ๋ฐ์ดํฐ๊ฐ ๋ฌด๋์ก์ ๋ ๊ทธ ๋์ ์ฌ์ฉํ๋ฉด์ ์ฅ์ ๋ฅผ ๊ทน๋ณตํ๋ ์ญํ ์ ์ํํ๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์๋ณธ์ธ ํ๋ผ์ด๋จธ๋ฆฌ ์ค๋์ ๋์ผํ ๋ ธ๋์ ๋ฐฐ์ ๋์ง ์๋๋ค.
์ธ๊ทธ๋จผํธ๋ Elasticsearch์์ ๋ฌธ์์ ๋น ๋ฅธ ๊ฒ์์ ์ํด ์ค๊ณ๋ ์๋ฃ ๊ตฌ์กฐ์ด๋ฉฐ, ์ค๋์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ ์๋ ๋ฌผ๋ฆฌ์ ์ธ ํ์ผ์ด๋ค. ๊ฐ ์ค๋๋ ๋ค์์ ์ธ๊ทธ๋จผํธ๋ก ๊ตฌ์ฑ๋์ด ์์ผ๋ฏ๋ก ๊ฒ์ ์์ฒญ์ ๋ถ์ฐ ์ฒ๋ฆฌํ์ฌ ํจ์ฌ ํจ์จ์ ์ธ ๊ฒ์์ด ๊ฐ๋ฅํ๋ค.
์ค๋์์ ๊ฒ์ ์, ๋จผ์ ๊ฐ ์ธ๊ทธ๋จผํธ๋ฅผ ๊ฒ์ํ์ฌ ๊ฒฐ๊ณผ๋ฅผ ์กฐํฉํ ํ ์ต์ข
๊ฒฐ๊ณผ๋ฅผ ํด๋น ์ค๋์ ๊ฒฐ๊ณผ๋ก ๋ฐํํ๊ฒ ๋๋ค. ์ด๋ ์ธ๊ทธ๋จผํธ๋ ๋ด๋ถ์ ์์ธ๋ ๋ฐ์ดํฐ๊ฐ ์ญ์์ธ ๊ตฌ์กฐ๋ก ์ ์ฅ๋์ด ์์ผ๋ฏ๋ก ๊ฒ์ ์๋๊ฐ ๋งค์ฐ ๋น ๋ฅด๋ค.
๊ทธ๋ฐ๋ฐ, ๋งค ์์ฒญ๋ง๋ค ์๋ก์ด ์ธ๊ทธ๋จผํธ๋ฅผ ๋ง๋ค์ด ์ฃผ๋ฉด ์์ฒญ๋๊ฒ ๋ง์ ์ธ๊ทธ๋จผํธ๊ฐ ์์ฑ๋ ๊ฒ์ด๊ณ , ์ด๋ก ์ธํด ๋ค๋ฅธ ์์ฒญ์ ์ง์ฅ์ด ์๊ธธ ์ ์๋ค. ์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ์ธ๋ฉ๋ชจ๋ฆฌ ๋ฒํผ๋ฅผ ์ฌ์ฉํ๋ค. ์ธ๋ฉ๋ชจ๋ฆฌ ๋ฒํผ์ ์์ธ ๋ด์ฉ์ ์ผ์ ์๊ฐ์ด ์ง๋๊ฑฐ๋ ๋ฒํผ๊ฐ ๊ฐ๋์ฐจ๋ฉด flush๋ฅผ ์ทจํ๊ณ , flush ์์
์ด ์ํ๋๋ฉด ์์คํ
์บ์์ ์ธ๊ทธ๋จผํธ๊ฐ ์์ฑ๋๋ค. ์ด ์์ ๋ถํฐ ๋ฐ์ดํฐ๊ฐ ๋น๋ก์ ๊ฒ์์ด ๊ฐ๋ฅํด์ง๋ค. ํ์ง๋ง ์ด ์ํ๋ ์ธ๊ทธ๋จผํธ๊ฐ ์์คํ
์บ์์ ์ ์ฅ๋ ์ํ์ด์ง, ๋์คํฌ์ ์ ์ฅ๋ ์ํ๋ ์๋๋ค.
๋์คํฌ์ ์ฐ์ฌ์ง๋ ์์
์ญ์ ์ผ์ ์๊ฐ์ด ์ง๋๋ฉด commit์ ํตํด์ ๋ฌผ๋ฆฌ์ ์ธ ๋์คํฌ์ ์ธ๊ทธ๋จผํธ๋ฅผ ์ ์ฅํด ์ฃผ๊ณ , ์ ์ฅ๋ ์ธ๊ทธ๋จผํธ๋ ์๊ฐ์ด ์ง๋ ์๋ก ํ๋๋ก ๋ณํฉํ๋ ๊ณผ์ ์ ์ํํ๋ค. ๋ณํฉ์ ํตํด ์ธ๊ทธ๋จผํธ๋ฅผ ํ๋๋ก ์ค์ฌ ์ฃผ๋ฉด, ๊ฒ์ํ ์ธ๊ทธ๋จผํธ์ ๊ฐ์๊ฐ ์ค์ด๋ค๊ธฐ ๋๋ฌธ์ ๊ฒ์ ์ฑ๋ฅ์ด ํฅ์๋๋ค.
์ธ๊ทธ๋จผํธ ๋ณํฉ ์์๋ ์๋ก์ด ์ธ๊ทธ๋จผํธ๋ฅผ ๋ง๋ค ๊ณต๊ฐ์ด ์์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋์คํฌ๊ฐ ๊ฝ ์ฐฌ ์ํ์์๋ ์ํํ ์ ์์ผ๋ฉฐ ์ธ๊ทธ๋จผํธ ๋ณํฉ์ ์์คํ
์์์ ๋ง์ด ์ฐ๋ ๋ถ๋ด์ค๋ฌ์ด ์์
์ด๋ฏ๋ก ์์คํ
์์์ด ์ฌ์ ๋ก์ธ ๋ ์งํํ๋ค.
- Scale out
- ์ค๋๋ฅผ ํตํด ๊ท๋ชจ๊ฐ ์ํ์ ์ผ๋ก ๋์ด๋ ์ ์๋ค.
- ๊ณ ๊ฐ์ฉ์ฑ
- Replica๋ฅผ ํตํด ๋ฐ์ดํฐ์ ์์ ์ฑ์ ๋ณด์ฅํ๋ค.
- Schema Free
- Json ๋ฌธ์๋ฅผ ํตํด ๋ฐ์ดํฐ ๊ฒ์์ ์ํํ๋ฏ๋ก ์คํค๋ง ๊ฐ๋ ์ด ์๋ค.
- Restful
- ๋ฐ์ดํฐ CRUD ์์ ์ HTTP Restful API๋ฅผ ํตํด ์ํํ๋ค.
- SELECT = GET
- INSERT = PUT
- UPDATE = POST
- DELETE = DELETE
- Restful API๋ฅผ ์ฌ์ฉํ๋ค๋ ๊ฒ์ ๋ค์ํ ํ๋ซํผ์์ ์์ฉ์ด ๊ฐ๋ฅํ๋ค๋ ์ฅ์ ์ด ์๋ค.
- Inverted Index
- ์ค์๊ฐ ์ฒ๋ฆฌ๊ฐ ๋ถ๊ฐ๋ฅํ๋ค.
- elasticsearch๋ ์ธ๋ฉ๋ชจ๋ฆฌ ๋ฒํผ๋ฅผ ์ฌ์ฉํ๋ฏ๋ก ์ฐ๊ธฐ์ ๋์์ ์ฝ๊ธฐ ์์ ์ ํ ๊ฒฝ์ฐ, ์ธ๊ทธ๋จผํธ๊ฐ ์์ฑ๋๊ธฐ ์ ๊น์ง๋ ํด๋น ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ ์ ์๋ค.
- ํธ๋์ญ์
์ ์ง์ํ์ง ์๋๋ค.
- ๋ถ์ฐ ์์คํ ๊ตฌ์ฑ์ ํน์ง ๋๋ฌธ์ ์์คํ ์ ์ผ๋ก ๋น์ฉ ์๋ชจ๊ฐ ํฐ ํธ๋์ญ์ ๋ฐ ๋กค๋ฐฑ์ ์ง์ํ์ง ์๋๋ค.
- ์ง์ ํ ์๋ฏธ์ ์
๋ฐ์ดํธ๋ฅผ ์ง์ํ์ง ์๋๋ค.
- ์ธ๊ทธ๋จผํธ์์ ๋ฐ์ดํฐ๊ฐ ์ญ์ ๋ ๊ฒฝ์ฐ Soft-Delete๋ฅผ ํ๋ค. (์ญ์ flag = true)
- ์ธ๊ทธ๋จผํธ์์ ๋ฐ์ดํฐ๊ฐ ์์ ๋ ๊ฒฝ์ฐ Soft-Delete๋ฅผ ํ๊ณ , ์์ ๋ ๋ฐ์ดํฐ๋ฅผ ์๋ก์ด ์ธ๊ทธ๋จผํธ๋ก ์์ฑํ๋ค.
- RDBMS์ Index์ ์ ์ฌํ ๋์
- Document๊ฐ์
join์ ์ํํ ์ ์๋ค.- ๋ ๋ฒ์ ์ฟผ๋ฆฌ๋ก ํด๊ฒฐ์ ๊ฐ๋ฅ
elasticsearch ๊ฐ๋จ๊ฐ๋ +์ฅ๋จ elasticsearch๋ ๋ฌด์์ธ๊ฐ์ elasticSearch elasticSearch vs RDB elasticSearch ๊ตฌ์กฐ
- ElasticSearch ๋ ๋ฌด์์ธ๊ฐ์?
- ElasticSearch๋ ์ธ์ /์ ์ฌ์ฉ๋๋์?
- ElasticSearch์ ๊ตฌ์กฐ๋ ์ด๋ป๊ฒ ๋์ด์๋์?
- ElasticSearch๋ ์ ๊ฒ์ ์๋๊ฐ ๋น ๋ฅธ๊ฐ์?
- ElasticSearch์ ์ฅ๋จ์ ์ ๋ฌด์์ธ๊ฐ์?








