본문 바로가기

Data Base

(5)
SQL FullText Search / 웹 어플리케이션 로딩 성능이 낮다면, 쿼리 조회 성능을 확인! 이 포스팅에서는 MySQL의 FullText Search에 대해 주로 다뤄보고자 한다. 웹 어플리케이션을 설계할 때, 고려할 점은 참 많다. 그 중에서도 이번에는 Restful API에서 RDBMS 를 사용할 때 쿼리 조회 성능을 올리는 방법에 대해 소개하려고 한다. 검색에 대해 패턴 일치 검색 기능(LIKE 기능)을 사용한 조회 쿼리의 경우 조회 성능이 가장 낮다고 할 수 있다. 하지만 놀랍게도 많은 초심자들은 이 쿼리에는 문제가 없다고 생각한다(그리고 다른 곳에서 문제를 찾으려고 한다). 패턴 일치 검색 기능은 %를 사용함으로써 컬럼에 인덱스가 지정되어 있어도 인덱스를 사용하지 못할 수도 있다.  RDBMS는 정형화된 데이터를 저장하기에 매우 편리한 데이터베이스지만, 설계와 사용에서의 아주 세심한 주..
Elasticsearch 퍼포먼스 튜닝 방법 - 인덱스 디자인 측면에서 Elasticsearch 퍼포먼스 튜닝 방법Apach 루씬을 기반으로 한 검색, 분선엔진인 Elasticsearch는 데이터를 실시간에 가깝게 보여주고 분석해준다. Real-Time 형태의 분석과 검색을 위해 퍼포먼스를 튜닝하려면, 많은 처리량, 낮은 검색 지연시간을 요구한다. 효율적인 인덱스 디자인1. 인덱스를 설계할 때하나의 인덱스에 모든 데이터를 넣고 쿼리로 찾을 것인지여러 인덱스로 나눌 것인지쿼리에 filter가 들어가고 그 값이 Enumerable 할 때는 인덱스를 나눠서 설계해야 한다. 기간이 정해져 있는 데이터의 경우, 기간별로 인덱스를 구성하여 사용하면 좋다. 일, 주, 월별 데이터를 모을 수 있기 때문에 날짜별로 데이터를 모으면 더 빠르게 데이터에 접근할 수 있다.  2. ID 부여할 때..
Elasticsearch 기본 엘라스틱 서치란엘라스틱 서치는 NoSQL 기반의 문서 지향 데이터베이스로 RDBMS와 같은 방법론으로 설계하는 것은 옳지 않다. 엘라스틱 서치에서는 기존에 알려진 방식으로 데이터 모델링을 할 수 없다. 엘라스틱 서치의 데이터 모델링은 데이터의 유형, 검색 조건, 집계·시각화 여부 등에 따라 적절한 데이터 모델링 방법을 선택하여 적용해야 한다. NoSQL (No Structured Query Language)분산 처리를 통해 빠른 검색 가능HTTP를 통해 JSON형식의 Restful API 이용RDBMS에서 LIKE 검색할 때와 달리 검색어의 대소문자에 유연비정형 데이터도 검색 가능분석 통계 유용전문 검색(Full-text Search; 내용 전체를 색인해서 특정 단어가 포함된 문서를 검색) 가능멀티테넌시..
Data Lake, Data Warehouse, Data Mart Data Lake데이터 레이크는 비즈니스에서 필요한 다양한 타입의 데이터를 저장하는 공간과도 같다. 데이터 수집 방식은 모든 데이터를 dump 처리하여 저장한다고 생각하면 된다. Data Lake는 다음과 같은 두가지 경우에 주로 사용한다. 1. 제품이 많은 기능을 갖고 있거나, 기업 규모가 큰 경우 비즈니스를 위해 데이터를 분석하는 다양한 방식이 있을 것이다. 이런 경우 대량의 데이터를 다양한 타입으로 저장하는 가장 저렴한 방식이 필요하다.예를 들면 B2C의 경우 Twitter를 생각해보면, 텍스트(Tweets), 이미지, 비디오, 링크, 다이렉트 메세지, 라이브 스트림 등과 같은 타입의 데이터가 있을 것이다. B2B의 경우 거래, 환불, 교환, 고객 사인, 로그온 ID 등과 같은 데이터가 있을 것이다..
하둡 에코 시스템의 기본 하둡의 코어 프로젝트(Framework)는 HDFS, MapReduce이지만 그 외에도 다양한 서브 프로젝트들이 많다. 하둡 에코 시스템은 그 Framework를 이루고 있는 다양한 서브 프로젝트들의 모임이다. 하둡 코어 프로젝트: HDFS(분산데이터 저장), MapReduce(분산처리)하둡 서브 프로젝트: 나머지 프로젝트들 -> 데이터 마이닝, 수집, 분석 등을 수행  Hadoop Framework 종류Zookeeper (분산 코디네이터)분산 환경에서 서버들간의 상호 조정이 필요한 다양한 서비스 제공하나의 서버에서 처리하 결과를 다른 서버들과도 동기화 -> 데이터 안정성 보장!운영(active) 서버에서 문제가 발생하여 서비스 제공할 수 없는 경우 -> 다른 대기중인 서버를 운영 서버로 바꿔 서비스 중..