전체 글 194

Akka Http

Akka Http소개akka actor, akka stream을 이용한 full server- and client-side Http StackWeb Application 제작하는 곳의 사용은 적절하지 않다REST/HTTP Interface를 제공하는 것에 특화가 되어있다.akka actor와 akka stream을 활용한 프로그래밍이 가능하다.Http Server API도 제공, Http Client API로 제공을 한다. Using Akka Httpgradlecompile group: 'com.typesafe.akka', name: 'akka-http_2.12', version: '10.1.3'compile group: 'com.typesafe.akka', name: 'akka-stream_2.12',..

Programing/Akka 2018.07.28

Log 성격을 가진 데이터의 수집 / 분석 아키텍처

Log 성격을 가진 데이터의 수집 / 분석 아키텍처 서비스를 개발을 하다보면 Log 성의 데이터가 필요할수가 있다.예를 들면, 사용자의 click 정보, push 전송 정보 결과, 이메일 전송 결과실시간 성격이 가진 로그가 있을수도 있다.예를 들면, 중복 방지를 위해 userId와 push 전송 결과에 대한 데이터 처리이 경우에는 KEY (userId)을 통해 빠른 시간에 데이터를 가지고 올수가 있어야 된다.통계 성격이 가진 로그가 있을 수 있다.예를 들면, 하루에 전송된 Push Message의 양로그 저장소 Log File -> Log Stash -> S3File로 로그를 저장을한다.Log Stash 등을 이용하여 S3/HDFS 저장소로 저장이 된다.저장 기간이 상대적으로 많이 길다.압축을 하거나 o..

아키텍처 2018.07.27

입력 데이터에 의해 오류를 방지할 코드가 필요하다.

입력 데이터에 의해 오류를 방지할 코드가 필요하다.입력 데이터에 대한 유효성에 대해 고민을 해야 된다.로그 분석 등에서의 데이터 분석에서는 입력 데이터가 어떤 형태로 들어올지가 예측이 안되기 때문에 방어코드가 필요하다.방어 코드를 작성하고 방어 코드에 대한 유닛테스크 코드를 반드시 추가한다.String -> Long, Integer로 변환되는 경우String -> List 로 변환되는 경우Input 데이터의 null 값이 들어있는 경우Object -> String, Long 등 cast이 되는 경우

Java Object 비교 ==

Long, Integer, String 등과 같은 Object를 비교를 할때에는 아래와 같은 방식으로 하면 원하는 작동이 나오지 않는다. Long a = 1L;Long b = 1L; if( a == b ) System.out.println("a==b")객체에서의 ==은 referecne비교, 따라서 a, b는 서로 다른 reference를 가지고 있기 때문에 false로 나온다. Long a = 1L;Long b = 1L; if( a.equals(b) ) System.out.println("a==b")equals 를 사용하여 object를 같은지 유무를 비교를 한다.a가 null 인경우에는 null 포인트 에러가 발생이 되기 때문에 방어 코드가 필요하다.String 인 경우에는 StringUtils의 i..

Programing/Java 2018.07.25

Mysql Query Plan

Mysql Query Plan`EXPLAIN` 키워드를 사용을 하면 해당하는 Query의 실행 계획을 볼수 있다. 여러가지 정보를 볼 수있는 그중에 필요한 컬럼의 의미에 대해서 정리를 한다. idSelect의 identifierNull 인경우에는 union의 결과값은 id M, N의 결과의 union 결과값select_typeSIMPLEPRIMARYUNIONUNION RESULTSUBQUERYtable사용되는 테이블 이름 - union 된 select 값 N 번 select 값typejoin typepossible_keys사용이 가능한 인덱스 key의 예비후보 null 인경우에는 index와 상관이 없다.key사용되는 인덱스이름rows결과값을 얻기위해 검색을 해야되는 row의 갯수Reference- ht..

Database/MySQL 2018.07.24

Mysql Index HInts

Mysql Index HintsMysql를 사용을 하다보면 원하는 인덱스가 아니고 다른 인덱스를 사용하여 쿼리 성능이 느린 경우가 있다. 이때 Mysql에서 제공하는 Index Hints를 쓰면 강제적으로 할당한 Index를 이용하여 쿼리가 실행이 된다. 하지만 JPA(hibernate)에서 사용이 불가능하기 때문에 JdbcTemplate 등을 이용하여 Native Query로 활용해야 된다.사용방법tbl_name [[AS] alias] [index_hint_list] index_hint_list: index_hint [index_hint] ... index_hint: USE {INDEX|KEY} [FOR {JOIN|ORDER BY|GROUP BY}] ([index_list]) | IGNORE {INDE..

Database/MySQL 2018.07.24

람다 아키텍처

람다 아키텍처new data, batch layer와 speed layer로 데이터가 들어온다.batch layer, batch layer는 2가지가 존재를 한다. 데이터를 저장하는 저장소 (append-only, immutable)와 view를 위해 미리 처리된(pre-complete)로 구별이 된다.serving layer, low latency와 adhoc 쿼리에 대한 뷰를 제공을 한다.speed layer, 최근 데이터와 대한 high latency의 update를 제공을 한다.query, batch view, realtime view를 통해 결과를 얻을수가 있다. Speed ComponentsApache StormApache Spark StreammingApache SamazaApache S4S..

아키텍처 2018.07.22

Apache Hive

Apache HiveApache Hive란? 하둡에서 작동되는 데이터 웨어하우스, Apache HDFS이나 Apache Hbase의 데이터가 저장 시스템에 저장되어있는 대용량 데이터를 분석한다. - HiveQL이라는 부르는 SQL를 통해 손쉽게 데이터를 분석할수 있다. - HDFS 대신 AWS S3를 저장소를 하여 사용을 할수가 있다.- Metadata를 통해 테이블의 데이터 위치, 데이터 스키마등을 관리한다.- OLTP보다는 OLAP 적합하다. HaddopHDFS - Hadoop DistrubutedFile SystemdMapReduce - Parrell Programming model for processing large amount data Architecture Working Progress- H..

빅데이터 처리 2018.07.15