Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 스프링
- SQL
- 데이터베이스
- 위클리챌린지
- 스프링부트
- MySQL
- 이클립스
- 문제풀이
- 프로그래머스
- 자바
- 프로그래밍
- 데이터프로그래밍
- SQL 문법
- 빅데이터
- 기초
- 파이썬
- 리눅스마스터 2급 2차
- 모의해킹
- 토이프로젝트
- SQL 정리
- 오라클
- 알고리즘
- 코딩테스트
- 문법
- 백준
- c언어
- 필기
- 엘라스틱서치
- 해킹실습
- 스파크
Archives
- Today
- Total
개발일기
검색 엔진 기술 개요 [ 강의 요약 정리 ] 본문
반응형
엘라스틱 서치에 대해 학습해야하는 이유
- 빅데이터의 경쟁력은 데이터를 최대한 빠르고 효율적으로 정리해 주는 기술들이다.
- 현존하는 데이터의 규모는 현재도 폭발적인 성장을 하고 있다.
- 빅데이터를 다룰 줄 아는 자가 빅데이터의 파라다임을 이끄는 기업의 핵심 전문가가 된다.
검색 엔진 시스템이란?
컴퓨터 시스템에 저장된 정보를 찾아주는 것을 도와주도록 설계된 정보 검색 시스템
[ 출처 : 위키피디아 ]
검색 시스템들의 사례
- 오프라인
- 파일검색, 데스트탑 검색
- 검색 서비스
- 웹 검색, 이미지 검색, 비디오, 오디오 검색 등등
- 인터페이스형
- 인공지능 개인비서 : 아마존 알렉사, 삼성 빅스비 등
- 지도형 : 카카오 맵, 배달앱 등
- 추론형
- 부동산 : Zillow, Redfin
- Inference-as-a-service : 팔란티어, 케임브리지 애널리티카
SQL와 검색엔진의 차이
- SQL은 트렌젝션을 위해 제작된 데이터 베이스 이기 때문에 ACID를 제공하지만 검색 엔진은 제공해 주지 않는다.
- SQL은 B-Tree나 Linear Scan들을 사용하여 결국 데이터 사이즈가 커지면 커질수록 속도는 기하급수 적으로 줄어든다. 또한 SQL의 시간복잡도는 O(n), O(log n)이다. 검색 엔진은 사이즈가 아무리 커져도 속도에는 문제가 없다. 검색엔진의 시간복잡도는 O(1)인 혁기적인 데이터베이스이다.
- SQL은 realtime으로 바로 반영되고 바로 모든 subscribe들이 볼 수 있는 데이터이다. 하지만 검색엔진은 데이터가 바뀌게 되면 반영되는데 꽤 많은 시간이 걸릴 수 있다. 그 이유는 데이터가 추가되고 인덱싱 된 후 서빙되는데 꽤 큰 시간이 필요하기 때문이다.
- SQL은 고급 검색 결과 그리고 랭킹 기술들을 도입하기 힘들다. SQL 자체는 Transactional Nature를 위해서 만들어진 데이터베이스이기 때문에 고급 텍스트, maipulation, 오디오, 이미지, 프로세싱 이런 것을 추가하기가 벅차다. 하지만 검색엔진은 무제한 Advanced Search Feature를 추가할 수 있는 장점을 가지고 있다.
- SQL은 serving traffic이 늘어나면 늘어날 수록 serving speed가 기하급수적으로 느려지며 cost 또한 높아질 수 있다. 하지만 검색엔젠은 트래픽과 부하 속도는 아무런 연관이 없다.
검색 엔진 기술 핵심 : 색인
검색 기술의 기본 아키텍쳐
- 빅데이터에서 수집 시스템을 통해 데이터들을 주석 데이터 저장소에 담는다.
- 색인 시스템이 주석 데이터 저장소에서 색인을 생성한다.
- 사용자는 쿼리 처리 시스템에 질문 또는 쿼리를 요청한다.
- 컬렉션 분석 시스템들이 위에서 생성된 분산된 색인에서 필요한 정보를 추출하여 사용한다.
- 다시 정렬 시스템을 통해 정렬되어 사용자에게 보기 편한 방식으로 리턴하게 된다.
CAP 이론
CAP 이론 : 현존하는 거의 모든 데이터를 저장하는 매체들은 이 세가지 중 두가지 만을 추구할 수 있다는 이론이다.
* 세 가지 : Consistency, Availability, Partition Tolerance
예를 들어 SQL은 Consistency를 추구하는 데이터 베이스이다.
반면 검색엔진 같은 서비스는 Availability와 Partition Tolerance를 추구한다.
반응형
'프로그래밍 이론 > Python' 카테고리의 다른 글
Elasticsearch 활용한 검색엔진 만들기 (2) (0) | 2021.08.17 |
---|---|
Elasticsearch 활용한 검색엔진 만들기 (1) - Docker 설치 (0) | 2021.08.16 |
[파이썬] 코딩테스트에서 Python3 와 PyPy3의 차이 (6) | 2021.08.10 |
네이버 뉴스 데이터 수집하기 [3편] - 데이터 파일화 (0) | 2021.08.09 |
네이버 뉴스 데이터 수집하기 [2편] (5) | 2021.08.08 |
Comments