더밸코리아
 
 
카다로그
 

신박한 네이버 플레이스 전화번호 DB 추출 자동수집기 여러분의 영업 파트너

페이지 정보

작성자 Denver 댓글 0건 조회 1회

본문

검색 DB수집기 엔진 : 웹에서 정보를 수집해 검색결과를 제공하는 소프트웨어로 검색결과로 제공되는 데이터의 특성에 따라 구현형태가 각각 달라진다. 검색 시스템 : 대용량데이터를 기반으로 신뢰성 있는 검색 결과를 제공하기 위해 섬색엔진을 기반으로 구축된 시스템을 통칭하는 용어. 수집기를 이용해 방대한 데이터를 수집하고 이를 다수의 검색엔진을 이용해 색인하고 검색결과를 UI로 제공한다. - 수집기 : 웹에서 필요한 정보를 수집하는 SW로 크롤러, 스파이더, 웜, 웹 로봇 등으로 불린다. - 스토리지 : 데이터베이스에서 데이터를 저장하는 물리적인 저장소이다. - 색인기 : 검색엔진이 수집한 정보에서 사용자 질의와 일치하는 정보를 찾기 위해 수집된 데이터를 검색 가능한 구조로 가공하고저장하는 SW. - 검색기 : 사용자의 질의를 입력받아 색인기에서 저장한 역색인 구조에서 일치하는 문서를 찾아 결과로 반환하는 SW. 질의와 문서가 일치하는지는 유사도 기반의 검색 순위 알고리즘으로 판단함. 검색서비스 : 검색엔진을 기반으로 구축한 검색 시스템을 활용해 검색 결과를 서비스로 제공한다. 검색 서비스 &gt검색시스템 &gt검색엔진 1. Elasticsearch 정의Elasticsearch는 Apache DB수집기 Lucene( 아파치 루씬 ) 기반의 Java 오픈소스 분산 검색 엔진이다.Elasticsearch를 통해 방대한 양의 데이터를 거의 실시간( NRT, Near Real Time )으로 검색, 분석, 시각화 할 수 있다. - elasticsearch의 주요 용도&gt로그 분석 : 애플리케이션 로그를 분석하여 문제점을 파악하고 해결할 수 있다.&gt웹 분석 : 웹사이트 방문자의 행동을 분석하여 마케팅 전략을 개선할 수 있다.&gt보안 분석 : 보안 위협을 감지하고 예방할 수 있다.&gt비즈니스 분석 : 비즈니스 데이터를 분석하여 새로운 기회를 발굴할 수 있다. ※ ELK( Elasticsearch / Logstash / Kibana ) 스택Elasticsearch는 검색을 위해 단독으로 사용되거나 ELK( Elasticsearch / Logstash / Kibana ) 스택으로 사용된다. - Logstash : 다양한 소스( DB, csv 파일 등 )의 로그 또는 트랜잭션 데이터를 수집, 집계, 파싱하여 Elasticsearch로 전달- Elasticsearch : Logstash로부터 받은 데이터를 검색 및 집계하여 필요한 관심 있는 정보 획득- Kibana : Elasticsearch의 빠른 검색을 통해 데이터를 시각화 및 DB수집기 모니터링 2. Elasticsearch와 관계형 DB 비교흔히 사용하고 있는 관계형 DB와 Elasticsearch의 대응은 다음과 같다. 관계 DatabaseElasticsearch설명DB(Database)Index데이터베이스 이름TableTypeDatabase에서 세로줄과 가로줄의 모델을 이용하여 정렬된 데이터 집합의 모임. RowDocumentTable의 세로 줄ColumnFieldTable의 가로 줄IndexAnalyze테이블 검색 속도를 높이기 위하여 사용하는 요약 정보P.Key(Primary Key)_id식별자로 활용할 수 있는 속성, 기본 키SchemaMapping데이터 구조와 제약 조건에 대한 명세를 기술Physical PartitionShard Logical PartitionRoute RelationalParent/Child, Nested관계SQLQuery DSL SchemaMapping필드의 구조와 제약조건에 대한 명세 3. Elasticsearch Architecture 설명 및 관련 용어 1) 클러스터( cluseter )클러스터란 Elasticsearch에서 가장 큰 시스템 단위를 의미하며, 최소 하나 이상의 노드로 이루어진 노드들의 집합이다.서로 다른 클러스터는 데이터의 접근, 교환을 할 수 없는 독립적인 시스템으로 유지되며,여러 대의 서버가 하나의 클러스터를 구성할 수 있고, 한 서버에 여러 개의 클러스터가 존재할수도 있다. 2) 노드( node )Elasticsearch를 구성하는 하나의 단위 프로세스를 의미하며, Master/Data/Coordinating/Ingest node가 있다. - master node ( 링크 )클러스터를 제어하는 마스터로 선택할 수 있는 DB수집기 노드이다. &gt인덱스 생성, 삭제 &gt클러스더 노드들의 추적, 관리 &gt데이터 입력 시 어느 샤드에 할당할 것인지 - Data node ( 링크 )데이터와 관련된 CRUD 작업과 관련있는 노드이다.이 노드는 CPU, 메모리 등 자원을 많이 소모하므로 모니터링이 필요하며, master 노드와 분리되는 것이 좋다. - Coordinating node ( 링크 )사용자의 요청만 받아서 라운드로빈 방식으로 처리한다. 클러스터 관련요청은 마스터 노드에 전달하고 데이터 관련 요청은 데이터 노드에 전달한다.로드밸런서와 비슷한 역할을 하며, 대규모 클러스터에서 큰 이점이 있다. - Ingest node ( 링크 )문서의 전처리 작업을 담당한다.인덱스 생성전 문서의 형식을 다양하게 변경할 수 있다.데이터를 변환하는 등의 사전 처리 파이프라인을 실행하는 역할을 한다. 3) 주요 용어- 색인(indexing) : 데이터가 검색될 수 있는 구조로 변경하기 위해 원본 문서를 검색어 토큰으로 변환하여 저장하는 일련의 과정이다.- 인덱스(index, indices) : 색인 과정을 거친 결과물, 또는 색인된 데이터가 저장되는 저장소이다. 또한 Elasticsearch에서 도큐먼트들의 논리적인 집합을 표현하는 단위이다.- DB수집기 검색(search) : 인덱스에 들어있는 검색어 토큰들을 포함하고 있는 문서를 찾아가는 과정이다.- 질의(query) : 사용자가 원하는 문서를 찾거나 집계 결과를 출력하기 위해 검색 시 입력하는 검색어 또는 검색 조건이다. Elasticsearch 에서는 단일 데이터 단위를 도큐먼트(document) 라고 하며 이 도큐먼트를 모아놓은 집합을 인덱스(Index) 라고 한다. 인덱스라는 단어가 여러 뜻으로 사용되기 때문에 데이터 저장 단위인 인덱스는 인디시즈(indices) 라고 표현하기도 한다. 데이터를 Elasticsearch에 저장하는 행위는 색인(indexing), 그리고 도큐먼트의 집합 단위는 인덱스(index)라고 한다.인덱스(index)는 기본적으로 샤드(shard)라는 단위로 분리되고 각 노드에 분산되어 저장된다. 샤드(shard)는 루씬의 단일 검색 인스턴스이다. 다음은 하나의 인덱스가 5개의 샤드로 저장되도록 설정한 예이다. 4) 인덱스( index ) / 샤드( Shard ) / 복제( Replica )- Index는 database의 Index와 동일한 의미를 가진다. - Shard/샤딩( sharding )은 데이터를 분산해서 저장하는 방법이다. 즉, Elasticsearch에서 스케일 아웃을 위해 index를 여러 shard로 쪼갠 것이다.기본적으로 1개가 존재하며, 검색 성능 향상을 위해 클러스터의 샤드 DB수집기 갯수를 조정하는 튜닝을 하기도 한다.- Replica는 노드를 손실했을 경우 데이터의 신뢰성을 위해 샤드들을 복제하는 또 다른 형태의 샤드(shard)이다. 따라서 replica는 서로 다른 노드에 존재할 것을 권장한다. - 매핑(Mapping) : 문서의 필드와 속성을 정의하고 그에 따른 색인 방법을 정의하는 프로세스.(필드명 중복불가) - data aggregation(데이터 집계) : 데이터를 모아서 계산한다.&gt버킷 집계 : 많이 사용, 문서의 필드 기준으로 모아서 계산함.&gt메트릭 집계 : 문서에서 추출된 값을 가지고 SUM, MAX, MIN, AVG를 계산&gt매트리스 집계 : 행렬의 값을 합하거나 곱함.&gt파이프라인 집계 버킷에서 도출된 문서를 다른 필드 값으로 재분류한다. 4. Elasticsearch 특징- Scale out : shard를 통해 규모가 수평적으로 늘어날 수 있음.- 고가용성 : Replica를 통해 데이터의 안정성을 보장.- Schema Free : Json 문서를 통해 데이터 검색을 수행하므로 스키마 개념이 없음.- Restful : 데이터 CRUD 작업은 HTTP Restful API를 통해 수행함. Data CRUD Elasticsearch Restful예시SELECTGET INSERT PUT UPDATEPOSTcurl -XPOST '127.0.0.1:29200/_template/stream_template?pretty'-H DB수집기 'Content-Type: application/json'-d @log.template.jsoncurl -XPOST '127.0.0.1:29200/_template/xvcs_template?pretty'-H 'Content-Type: application/json'-d @xvcs.template.jsonDELETEDELETEcurl -XDELETE '127.0.0.1:29200/stream_202112'​5. 단점- 실시간이 아님(1초 뒤에 검색됨)- 트랜젝션과 롤백 기능을 제공하지 않음- 데이터의 업데이트를 제공하지 않음 6. 간단한 예제이 예제는 Restful API로 document를 추가하고 조회하는 예제이며, 맛보기용에 불과하다. Elasticsearch CRUD작업은 특징에서 살펴본 바와 같이 API를 호출해서 이루어지며,curl로 데이터를 넘겨줄 수도 있지만, json 파일을 저장해서 데이터를 넘길 수도 있고, json 포맷으로 queryDSL을 작성해서 API를 호출할 수도 있다. 1) document 생성# curl -XPOST 'localhost:9200/victolee/blog/1?pretty'-d '{postName&quot: elasticsearch, category&quot: IT}'-H 'Content-Type: application/json' - '-d'옵션 : 추가할 데이터를 json 포맷으로 전달한다.- '-H'옵션 : 헤더를 명시한다. 예제에서는 json으로 전달하기 위해서 application/json으로 작성했다.- ?pretty : 결과를 정렬하여 출력, victolee 인덱스에, blog 타입으로 id 값이 1인 document가 저장된다. ​2) documnet 조회# curl -XGET 'localhost:9200/victolee/blog/1?pretty' Elasticsearch를 잘 다루기 위해서는 Elasticsearch에서 제공하는 API를 알아둘 필요가 있으며,queryDSL을 통해 쿼리를 작성해 원하는 방식대로 다양하게 조회할 수 있어야 DB수집기 한다. 6. Inverted Index(역색인)Elasticsearch는 inverted index( 역색인 )를 하여 검색 속도가 빠르다. - Index는 책에서 맨 앞에 볼 수 있는 목차- inverted index는 책 맨 뒤에 키워드마다 찾아볼 수 있도록 하는 찾아보기 Elasticsearch는 텍스트를 파싱해서 검색어 사전을 만든 후 inverted index 방식으로 텍스트를 저장한다. Lorem Ipsum is simply dummy text of the printing and typesetting industry 예를 들어, 이 문장을 모두 파싱해서 각 단어들( Lorem, Ipsum, is, simply .... )을 저장하고,대문자는 소문자 처리하고, 유사어도 체크하고... 등의 작업을 통해 텍스트를 저장한다.때문에 RDBMS보다 전문검색( Full Text Search )이 빠르다.

댓글목록

등록된 댓글이 없습니다.