[Computer Science][Database] πŸ” Elastic Search vs. RDBMS LIKE: κ²€μƒ‰μ˜ 끝을 보닀!

κΉ€μƒμš±Β·2024λ…„ 10μ›” 12일
0
post-thumbnail

Elastic Search의 ν‚€μ›Œλ“œ 검색과 RDBMS의 LIKE 검색 비ꡐ 뢄석 😊


λͺ©μ°¨ πŸ“–

  1. λ“€μ–΄κ°€λ©° πŸš€
  2. 1. Elastic Search의 ν‚€μ›Œλ“œ 검색 πŸ”Ž
  3. 2. RDBMS의 LIKE 검색 πŸ”
  4. 3. Elastic Search와 RDBMS LIKE κ²€μƒ‰μ˜ 비ꡐ πŸ†š
  5. 마무리 🏁
  6. μ°Έκ³  자료 πŸ“š

λ“€μ–΄κ°€λ©° πŸš€

데이터가 폭발적으둜 μ¦κ°€ν•˜λŠ” ν˜„λŒ€ μ‚¬νšŒμ—μ„œ 효율적인 검색 κΈ°λŠ₯은 ν•„μˆ˜μ μž…λ‹ˆλ‹€. 특히 λΉ„μ •ν˜• 데이터와 κ΅¬μ‘°ν™”λœ 데이터λ₯Ό λ‹€λ£¨λŠ” 방식에 따라 검색 방법도 λ‹€μ–‘ν•΄μ§‘λ‹ˆλ‹€. 이번 κΈ€μ—μ„œλŠ” Elastic Search의 ν‚€μ›Œλ“œ 검색과 RDBMS의 LIKE κ²€μƒ‰μ˜ κ°œλ…, νŠΉμ§•, 원리λ₯Ό 심도 있게 λΆ„μ„ν•˜κ³ , 두 방법을 λΉ„κ΅ν•˜μ—¬ μ–΄λ–€ μƒν™©μ—μ„œ μ–΄λ–€ 방법이 μ ν•©ν•œμ§€ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€. πŸ™Œ


1. Elastic Search의 ν‚€μ›Œλ“œ 검색 πŸ”Ž

κ°œλ… πŸ’‘

Elastic SearchλŠ” μ˜€ν”ˆ μ†ŒμŠ€ λΆ„μ‚°ν˜• 검색 및 뢄석 μ—”μ§„μœΌλ‘œ, λŒ€μš©λŸ‰μ˜ λΉ„μ •ν˜• 데이터λ₯Ό μ‹€μ‹œκ°„μœΌλ‘œ μ²˜λ¦¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€. ν‚€μ›Œλ“œ 검색은 Elastic Search의 핡심 κΈ°λŠ₯으둜, μ‚¬μš©μžκ°€ μž…λ ₯ν•œ ν‚€μ›Œλ“œλ₯Ό 기반으둜 κ΄€λ ¨ λ¬Έμ„œλ₯Ό λΉ λ₯΄κ³  μ •ν™•ν•˜κ²Œ μ°Ύμ•„λƒ…λ‹ˆλ‹€. πŸ“

νŠΉμ§• 🌟

  • 역색인(Inverted Index) ꡬ쑰: 단어λ₯Ό ν‚€λ‘œ, ν•΄λ‹Ή 단어λ₯Ό ν¬ν•¨ν•˜λŠ” λ¬Έμ„œ 리슀트λ₯Ό κ°’μœΌλ‘œ μ €μž₯ν•˜μ—¬ λΉ λ₯Έ 검색이 κ°€λŠ₯ν•©λ‹ˆλ‹€.
  • ν…μŠ€νŠΈ 뢄석 및 토큰화: λ¬Έμ„œλ₯Ό 색인할 λ•Œ ν˜•νƒœμ†Œ 뢄석, μŠ€ν…Œλ°, μ†Œλ¬Έμž λ³€ν™˜ 등을 톡해 단어λ₯Ό ν† ν°ν™”ν•˜μ—¬ 검색 정확도λ₯Ό λ†’μž…λ‹ˆλ‹€.
  • λ³΅μž‘ν•œ 질의 지원: Boolean 질의, λ²”μœ„ 질의, ꡬ문 검색 λ“± λ‹€μ–‘ν•œ 검색 방식을 μ œκ³΅ν•©λ‹ˆλ‹€.
  • κ΄€λ ¨μ„± 점수(Scoring): TF-IDF와 같은 μ•Œκ³ λ¦¬μ¦˜μ„ μ‚¬μš©ν•˜μ—¬ λ¬Έμ„œμ˜ μ€‘μš”λ„λ₯Ό ν‰κ°€ν•˜κ³  μ •λ ¬ν•©λ‹ˆλ‹€.
  • ν™•μž₯μ„± 및 λΆ„μ‚° 처리: λ…Έλ“œλ₯Ό μΆ”κ°€ν•˜μ—¬ μˆ˜ν‰μ μœΌλ‘œ ν™•μž₯ν•  수 있으며, λΆ„μ‚° 처리둜 λŒ€μš©λŸ‰ 데이터도 효율적으둜 μ²˜λ¦¬ν•©λ‹ˆλ‹€.

원리 βš™οΈ

  1. 색인(Indexing): λ¬Έμ„œλ₯Ό μ €μž₯ν•  λ•Œ ν…μŠ€νŠΈλ₯Ό λΆ„μ„ν•˜κ³  ν† ν°ν™”ν•˜μ—¬ 역색인을 μƒμ„±ν•©λ‹ˆλ‹€.
  2. 검색(Querying): μ‚¬μš©μžκ°€ ν‚€μ›Œλ“œλ₯Ό μž…λ ₯ν•˜λ©΄ λ™μΌν•œ 뢄석 과정을 거쳐 ν•΄λ‹Ή ν‚€μ›Œλ“œμ™€ μΌμΉ˜ν•˜κ±°λ‚˜ κ΄€λ ¨λœ λ¬Έμ„œλ₯Ό 역색인을 톡해 λΉ λ₯΄κ²Œ μ°Ύμ•„λƒ…λ‹ˆλ‹€.
  3. κ²°κ³Ό μ •λ ¬ 및 λ°˜ν™˜: κ΄€λ ¨μ„± 점수λ₯Ό κ³„μ‚°ν•˜μ—¬ κ°€μž₯ 관련성이 높은 λ¬Έμ„œλΆ€ν„° μ •λ ¬ν•˜μ—¬ κ²°κ³Όλ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.

2. RDBMS의 LIKE 검색 πŸ”

κ°œλ… πŸ’‘

κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€ 관리 μ‹œμŠ€ν…œ(RDBMS)μ—μ„œ LIKE μ—°μ‚°μžλŠ” λ¬Έμžμ—΄ νŒ¨ν„΄ 맀칭을 μˆ˜ν–‰ν•˜κΈ° μœ„ν•œ SQL μ—°μ‚°μžμž…λ‹ˆλ‹€. νŠΉμ • μ»¬λŸΌμ—μ„œ μ§€μ •λœ νŒ¨ν„΄κ³Ό μΌμΉ˜ν•˜λŠ” λ¬Έμžμ—΄μ„ κ°€μ§„ λ ˆμ½”λ“œλ₯Ό κ²€μƒ‰ν•©λ‹ˆλ‹€. πŸ“Š

νŠΉμ§• 🌟

  • μ™€μΌλ“œμΉ΄λ“œ 문자 μ‚¬μš©:
    • '%': 0개 μ΄μƒμ˜ μž„μ˜μ˜ λ¬Έμžμ™€ λ§€μΉ­
    • '_': μ •ν™•νžˆ ν•œ 개의 μž„μ˜μ˜ λ¬Έμžμ™€ λ§€μΉ­
  • λ‹¨μˆœν•œ νŒ¨ν„΄ λ§€μΉ­: λ¬Έμžμ—΄μ˜ λΆ€λΆ„ 일치 μ—¬λΆ€λ§Œ κ²€μ‚¬ν•˜λ©°, ν…μŠ€νŠΈμ˜ μ˜λ―Έλ‚˜ κ΅¬μ‘°λŠ” κ³ λ €ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
  • 인덱슀 ν™œμš©μ˜ μ œν•œ: μ™€μΌλ“œμΉ΄λ“œμ˜ μ‚¬μš© μœ„μΉ˜μ— 따라 인덱슀λ₯Ό ν™œμš©ν•˜μ§€ λͺ»ν•΄ μ„±λŠ₯ μ €ν•˜κ°€ λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • κ΅¬μ‘°ν™”λœ 데이터 λŒ€μƒ: 주둜 ν…Œμ΄λΈ”μ˜ νŠΉμ • μ»¬λŸΌμ—μ„œ λΆ€λΆ„ λ¬Έμžμ—΄μ„ κ²€μƒ‰ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€.

원리 βš™οΈ

  1. νŒ¨ν„΄ 해석: μ‚¬μš©μžκ°€ μž…λ ₯ν•œ νŒ¨ν„΄μ—μ„œ μ™€μΌλ“œμΉ΄λ“œμ˜ μœ„μΉ˜λ₯Ό νŒŒμ•…ν•©λ‹ˆλ‹€.
  2. 검색 μ‹€ν–‰: ν…Œμ΄λΈ”μ˜ ν•΄λ‹Ή μ»¬λŸΌμ„ 순차적으둜 κ²€μ‚¬ν•˜μ—¬ νŒ¨ν„΄κ³Ό μΌμΉ˜ν•˜λŠ” λ¬Έμžμ—΄μ„ μ°ΎμŠ΅λ‹ˆλ‹€.
  3. κ²°κ³Ό λ°˜ν™˜: νŒ¨ν„΄κ³Ό 맀칭된 λ ˆμ½”λ“œλ₯Ό 결과둜 λ°˜ν™˜ν•©λ‹ˆλ‹€.

3. Elastic Search와 RDBMS LIKE κ²€μƒ‰μ˜ 비ꡐ πŸ†š

κ°œλ… 및 μ›λ¦¬μ˜ 차이 🧐

  • Elastic Search:
    • 역색인과 ν…μŠ€νŠΈ 뢄석을 기반으둜 전체 ν…μŠ€νŠΈ 검색을 μˆ˜ν–‰ν•©λ‹ˆλ‹€.
    • λ¬Έμ„œμ˜ μ˜λ―Έμ™€ ꡬ쑰λ₯Ό κ³ λ €ν•˜μ—¬ 검색 정확도λ₯Ό λ†’μž…λ‹ˆλ‹€.
  • RDBMS의 LIKE 검색:
    • λ¬Έμžμ—΄μ˜ λΆ€λΆ„ 일치 μ—¬λΆ€λ₯Ό κ²€μ‚¬ν•˜λŠ” λ‹¨μˆœ νŒ¨ν„΄ λ§€μΉ­μž…λ‹ˆλ‹€.
    • ν…μŠ€νŠΈμ˜ μ˜λ―Έλ‚˜ ꡬ쑰λ₯Ό μΈμ‹ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

νŠΉμ§• 비ꡐ πŸ“‹

검색 κΈ°λŠ₯μ„± 🎯

  • Elastic Search:
    • ν˜•νƒœμ†Œ 뢄석, λ™μ˜μ–΄ 처리 λ“± κ³ κΈ‰ 검색 κΈ°λŠ₯ 지원.
    • λ³΅μž‘ν•œ μ§ˆμ˜μ™€ 필터링 κ°€λŠ₯.
  • RDBMS LIKE:
    • 기본적인 νŒ¨ν„΄ 맀칭만 지원.
    • λ³΅μž‘ν•œ ν…μŠ€νŠΈ 뢄석 κΈ°λŠ₯ λΆ€μž¬.

μ„±λŠ₯ 및 νš¨μœ¨μ„± ⚑

  • Elastic Search:
    • 역색인을 톡해 λŒ€μš©λŸ‰ λ°μ΄ν„°μ—μ„œλ„ λΉ λ₯Έ 검색 속도 제곡.
  • RDBMS LIKE:
    • 인덱슀 ν™œμš©μ΄ μ œν•œμ μ΄λ©°, 특히 νŒ¨ν„΄μ˜ μ‹œμž‘ 뢀뢄에 '%' μ‚¬μš© μ‹œ μ„±λŠ₯ μ €ν•˜ λ°œμƒ.

ν™•μž₯μ„± 🌐

  • Elastic Search:
    • λΆ„μ‚° μ•„ν‚€ν…μ²˜λ‘œ μˆ˜ν‰μ  ν™•μž₯이 용이.
  • RDBMS:
    • 수직적 ν™•μž₯에 μ˜μ‘΄ν•˜λ©°, μˆ˜ν‰μ  ν™•μž₯은 μƒλŒ€μ μœΌλ‘œ 어렀움.

데이터 μœ ν˜• πŸ“‚

  • Elastic Search:
    • λΉ„μ •ν˜• 데이터(둜그, λ¬Έμ„œ, λ©”μ‹œμ§€ λ“±)에 적합.
  • RDBMS LIKE:
    • κ΅¬μ‘°ν™”λœ 데이터(ν…Œμ΄λΈ”μ˜ ν–‰κ³Ό μ—΄)에 적합.

μ‚¬μš© 사둀 비ꡐ πŸ’Ό

Elastic Search의 μ‚¬μš© 사둀 🎈

  • λŒ€μš©λŸ‰ 둜그 λ°μ΄ν„°μ—μ„œ 였λ₯˜ κ΄€λ ¨ ν‚€μ›Œλ“œ 검색.
  • μ „μž μƒκ±°λž˜ μ‚¬μ΄νŠΈμ—μ„œ μƒν’ˆ μ„€λͺ…을 기반으둜 검색.
  • μ†Œμ…œ λ―Έλ””μ–΄μ˜ κ²Œμ‹œκΈ€μ—μ„œ νŠΉμ • μ£Όμ œλ‚˜ ν‚€μ›Œλ“œ 검색.

RDBMS LIKE의 μ‚¬μš© 사둀 πŸ“

  • 고객 이름에 νŠΉμ • λ¬Έμžμ—΄μ΄ ν¬ν•¨λœ λ ˆμ½”λ“œ 검색.
  • μ œν’ˆ μ½”λ“œμ˜ 일뢀 νŒ¨ν„΄μ„ κ°€μ§„ ν•­λͺ© 검색.
  • μ£Όμ†Œ λ°μ΄ν„°μ—μ„œ νŠΉμ • μ§€μ—­λͺ…을 ν¬ν•¨ν•˜λŠ” λ ˆμ½”λ“œ 검색.

μž₯단점 비ꡐ βš–οΈ

  • μž₯점:
    • κ³ κΈ‰ 검색 κΈ°λŠ₯κ³Ό 높은 검색 μ„±λŠ₯. πŸ’―
    • λΆ„μ‚° 처리둜 μΈν•œ μš°μˆ˜ν•œ ν™•μž₯μ„±. πŸ“ˆ
    • ν…μŠ€νŠΈ 뢄석을 ν†΅ν•œ μ •ν™•ν•œ 검색 κ²°κ³Ό 제곡. 🎯
  • 단점:
    • μ‹œμŠ€ν…œ λ³΅μž‘λ„κ°€ λ†’μ•„ 운영 및 μœ μ§€ 보수 λΉ„μš© 증가. πŸ› οΈ
    • μ‹€μ‹œκ°„ 데이터 변경에 λŒ€ν•œ 일관성 μœ μ§€κ°€ μ–΄λ €μšΈ 수 있음. ⏱️

RDBMS LIKE

  • μž₯점:
    • κΈ°μ‘΄ RDBMS ν™˜κ²½μ—μ„œ λ³„λ„μ˜ 도ꡬ 없이 μ‚¬μš© κ°€λŠ₯. πŸ‘
    • λ‹¨μˆœν•œ κ΅¬ν˜„μœΌλ‘œ 개발이 용이. πŸ§‘β€πŸ’»
  • 단점:
    • λŒ€μš©λŸ‰ λ°μ΄ν„°μ—μ„œ μ„±λŠ₯ μ €ν•˜. 🐒
    • κ³ κΈ‰ 검색 κΈ°λŠ₯ λΆ€μž¬. ❌
    • λΉ„μ •ν˜• 데이터 검색에 뢀적합. 🚫

마무리 🏁

Elastic Search의 ν‚€μ›Œλ“œ 검색은 역색인과 ν…μŠ€νŠΈ 뢄석을 톡해 λŒ€μš©λŸ‰μ˜ λΉ„μ •ν˜• λ°μ΄ν„°μ—μ„œλ„ κ³ μ„±λŠ₯의 κ³ κΈ‰ 검색 κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€. 반면, RDBMS의 LIKE 검색은 κ΅¬μ‘°ν™”λœ λ°μ΄ν„°μ—μ„œ λ‹¨μˆœν•œ λ¬Έμžμ—΄ νŒ¨ν„΄ 맀칭을 μˆ˜ν–‰ν•˜λ©°, μ„±λŠ₯κ³Ό κΈ°λŠ₯ λ©΄μ—μ„œ μ œν•œμ μž…λ‹ˆλ‹€.

검색 λŒ€μƒ λ°μ΄ν„°μ˜ μœ ν˜•κ³Ό μš”κ΅¬ 사항에 따라 μ ν•©ν•œ 검색 방식을 μ„ νƒν•˜λŠ” 것이 μ€‘μš”ν•©λ‹ˆλ‹€. λΉ„μ •ν˜• 데이터에 λŒ€ν•œ λ³΅μž‘ν•œ 검색이 ν•„μš”ν•œ 경우 Elastic Searchκ°€ μ ν•©ν•˜λ©°, λ‹¨μˆœν•œ νŒ¨ν„΄ 맀칭이 ν•„μš”ν•œ 경우 RDBMS의 LIKE 검색을 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 😊


μ°Έκ³  자료 πŸ“š


μ—¬λŸ¬λΆ„μ˜ ν”„λ‘œμ νŠΈλ‚˜ μ„œλΉ„μŠ€μ— μ ν•©ν•œ 검색 방식을 μ„ νƒν•˜μ—¬ 효율적인 데이터 처리λ₯Ό κ΅¬ν˜„ν•˜μ‹œκΈΈ λ°”λžλ‹ˆλ‹€. κΆκΈˆν•œ μ μ΄λ‚˜ 좔가적인 λ…Όμ˜κ°€ ν•„μš”ν•˜μ‹  뢄듀은 λŒ“κΈ€λ‘œ λ‚¨κ²¨μ£Όμ„Έμš”! πŸ™


0개의 λŒ“κΈ€