빅데이터 파이프라인을 복잡하게 구축한 회사에서는 엘라스틱 서치를 어떻게 사용할까? 어떻게 사용하는지 알아보겠다. 1. 우버에서 "가이로스" 실시간 데이터 통찰 플랫폼의 사용 우버에서 "가이로스"를 통해 가격 책정, 최대 도착예정시간 계산, 수요/공급 예측 을 한다. Kafka와 Hadoop생태계(HDFS/Hive/Presto)를 연계하여 실시간 분석과 장기적 분석을 지원하여, 동적인 가격 정책과 환경 친화적인 운전 경로를 운전자에게 제공하도록 하고 있다. 아래 그림을 보면, 카프카 토픽을 통해 데이터를 받아 파이프라인을 거쳐 분석대상 데이터가 엘라스틱 서치에 저장되며, 고객의 질의가 가이로스 질의 서비스를 거쳐 엘라스틱의 검색/집계 쿼리를 활용하도록 한다. 장기적인 데이터 분석으로 위해 HDFS에 백업되..
이전까지는 ELK 스택이 검색엔진을 만들기 위해 쓰는 스택인줄 알았다. 하지만 새로운 환경에서 업무를 진행하게되는 상황이 생겼다. 여기의 Data Pipeline은 스크립트를 통해 고객 행동을 Logstash를 통해 수집하고 log를 적재한다. 그리고 그 로그를 kafka를 통해 Elasticsearch Cluster에 저장한다. 그 저장한 Elasticsearch 에 저장된 데이터를 Hadoop에 백업 하여 데이터 분석을 하는 로직으로 구성이된다. 이런 상황에서 ELK스택에 대한 학습이 필수적이다고 생각하여 ELK 스택에 대해서 공부하기로 하였다. 검색엔진이 아닌 빅데이터 플랫폼에서 사용하는 것을 기준으로 학습을 하려 한다. 어떤점에서 ELK가 쓰이는지, 왜 써야되는지 다른 대안이 있다면 무엇인지 알아..
[JAVA 초급 질문] 1. JAVA 컴파일 과정에 대해서 말해보시오. 1.1 compiler vs Interpreter 차이에 대해서 말해보시오. 2. String, StringBuffer, StringBuilder의 차이에 대해서 말해보세요. 2.1 thread safe에 대해서 설명해보세요. 2.2 java String이 불변객체인 이유는 무엇인가요? 3. java의 접근 제어자의 종류와 특징에 대해서 아시나요? 4. OOP의 4가지 특징에 대해서 설명해주세요. 4.1 캡슐화와 은닉화의 차이는 무엇인가요? 5. OOP의 5대 원칙에 대해서 말해주세요. (SOLID) 6. JVM 메모리 구조에 대해서 설명해주세요. 7. 클래스, 객체, 인스턴스의 차이에 대해서 설명해주세요. 8. interface와 ..
* 중앙집중형 데이터베이스 - 데이터베이스 시스템 구축 시에 한 대의 물리적 시스템에 데이터베이스 관리 시스템(DBMS)을 서치하고 여러 명의 사용자가 그 DBMS에 접속하여 DB를 사용하는 구조를 중앙 집중형 데이터베이스라고 한다. * 분산 데이터베이스 - 물리적으로 떨어진 데이터베이스에 네트워크로 연결하여 단일 데이터베이스 이미지를 보여주고 분산된 작업 처리를 수행하는 데이터베이스를 분산 데이터 베이스 라고 한다. - 분산 데이터베이스를 사용하는 고객은 시스템이 네트워크로 분산되어 있는지의 여부를 인식하지 못하면서, 자신만의 데이터베이스를 사용하는 것처럼 사용할 수 있다. (데이터 베이스 투명성 제공) - 투명성은 분산 데이터베이스에서 중요한 요소이며 투명성에는 분할, 위치, 지역사상, 중복, 장애 ..
Index Range Scan에서는 Root -> Branch -> Leaf로 조회 범위를 순차적으로 Scan하면서 ROWID를 가지고 Random Single Block I/O Access를 하는 형태이기 때문에 클러스터링 팩터가 매우 안좋을 경우에는 조회 건수 만큼 I/O가 발생할 수 있다. (넓은 범위를 조회하게 되면 성능이 나빠짐) 만약 특정 조건으로 넓은 범위를 읽어야 하고, 그 조건이 파티션 키 이면 해당 파티션을 Full Scan하여 Multi Block IO를 할 수 있기 때문에 Index Scan보다 유리하다. 또한 Full Scan이기 때문에 Parrallel Hint도 가능하다. * 클러스터링 팩터 - 데이터가 한 블록에 있는지? Index Scan시에 3개의 Row가 연속적으로 같은..
1. 반정규화? - 데이터베이스 Select 시 성능 향상을 위하여, 데이터 중복을 허용하고 조인을 줄이기 위한 목적이 있음. - 데이터 모델의 유연성이 낮아짐 * 반정규화를 해야 하는 경우? - 특정 범위의 데이터만 자주 처리되는 경우 - 요약/집계 정보가 자주 요구되는 경우 - 다량의 범위를 자주 처리하는 경우 2. 반정규화 절차 * 무작정 반정규화 부터 고려하면안됨. 1) 대상 조사 및 검토 - 데이터 처리 범위, 통계성 등을 확인해서 반정규화 대상을 조사함. 2) 다른 방법 검토 - 쿼리 튜닝, 인덱스 튜닝, 클러시터링, 파티션, 코드단에서 해결 등 다른 방법으로 해결 할 수 있는지 먼저 확인한다. 3) 반정규화 수행 - 테이블, 속성, 관계 등을 반정규화 한다. 3. 반정규화 기법 1. 계산된 ..
데이터 모델링? - 데이터 모델링은 현실세계를 데이터베이스로 표현하기 위해 추상화한다. - 고객과의 의사소통을 통해 고객의 업무 프로세스를 이해해야한다. - 업무 프로세스를 이해하면, 데이터 모델링 표기법을 사용해서 모델링한다. - 데이터 모델리은 복잡하지 않도록 모델링을 해서 고객이 쉽게 이해할 수 있어야 한다. - 데이터 모델링은 고객의 업무 프로세스를 추상화하고, 소프트웨어를 분석 설계 하면서 점점 더 상세해진다. - 고객의 비즈니스 프로세스를 이해하고 비즈니스 프로세스의 규칙을 정의한다. 정의된 비즈니스 규칙을 모델로 표현한다. 1. 데이터 모델링의 특징 - 데이터 모델링은 추상화 해야한다. 공통적인 특징을 찾고 간략하게 표한한다. 1) 추상화 : 현실세계를 간략하게 표현한다. 2) 단순화 : 누..
1. 속성(Attribute) - 속성은 업무에서 필요한 정보인 엔터티가 가지는 항목이다. - 속성은 더 이상 분리되지 않는 단위로, 업무에 필요한 데이터를 저장할 수 있다. - 인스턴스의 구성요소이고 의미적으로 더 이상 분해되지 않는다. - 테이블의 칼럼 같은 느낌 * 분해 여부에 따른 속성의 종류 1) 단일 속성 - 하나의 의미로 구성된 것(회원 id) 2) 복합속성 - 여러 개의 의미 (주소) 3) 다중값 속성 - 속성에 여러 개의 값을 가질 수 있는 것(상품 리스트) - 다중값 속성은 엔터티로 분해된다. * 특성에 따른 속성의 종류 1) 기본속성 - 비즈니스 프로세스에서 도출되는 본래의 속성 2) 설계 속성 - 데이터 모델링 과정에서 발생하는 속성 - 유일한 값을 부여(상품코드, 지점 코드) 3)..
엔터티란? - 엔터티는 업무에서 관리해야 하는 데이터 집합을 의미하며, 저장되고 관리되어야 하는 데이터이다. - 엔터티는 개념, 사건, 장소 등의 명사이다. 1) 식별자 - 엔터티는 유일한 식별자가 있어야 한다. - ex) 고객 테이블 - 회원 id / 계좌 - 계좌번호 2) 인스턴스 집합 - 2개 이상의 인스턴스가 있어야 한다. - 고객 테이블에서 고객 데이터 2명이상은 있어야 됨 3) 속성 - 엔터티는 반드시 속성을 가지고 있다. - 고객 테이블에서 컬럽이 있어야 된다는 뜻. - 고객 테이블에는 회원 id, 비밀번호, 이름, 주소 전화번호 등이 있음 4) 관계 - 엔터티는 다른 엔터티와 최소한 한 개 이상 관계가 있어야 한다. - 고객은 계좌를 개설한다. (관계) 5) 업무 - 엔터티는 업무에서 관리..