일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 13460 구슬탈출 2
- KotlinInAction
- 20055
- Kotlin in action 10장
- 객체 지향 설계와 스프링
- 코틀린인액션
- 기능개발 python
- spring
- 고급매핑
- 7장 고급매핑
- Python
- 백준 20055 컨베이어 벨트 위의 로봇
- Kotlin in action 6장
- 스프링 핵심 원리 이해
- 스프링 컨테이너와 스프링 빈
- Kotlin in action 5장
- 코틸린인액션
- Kotlin
- 컨베이어 벨트 위의 로봇 Python
- kotlin in action 정리
- 스프링 핵심 원리
- 자바 ORM 표준 JPA 프로그래밍 7장
- 백준
- 스프링 핵심 원리 - 기본편
- 싱글톤 컨테이너
- Kotlin in action 3장
- 20055 컨베이어 벨트 위의 로봇
- Kotlin In Action
- 백준 13460 Python
- 코틀린
- Today
- Total
목록2022/07/12 (26)
기록하는 습관

Hadoop 2006년 4월, 아파치에서 발표한 대용량 데이터를 분산 처리할 수 있는 자바 기반의 오픈 소스 프레임워크 map 함수가 모두 종료해야 reduce 함수가 실행됨. → 실시간 처리는 힘듦. map: 전체 데이터를 작은 단위로 나눈 청크에 대해 수행할 로직 reduce: 처리된 데이터를 병합하는 과정 map 함수의 결과가 디스크에 저장되고, 그걸 reduce 함수가 다시 읽어와야 합니다. 이것이 주는 성능상의 손실이 큼 따라서, 빅데이터 기반의 배치성 통계작업에 주로 사용됨. 맵리듀스 잡(작업)의 결과물은 hdfs에 저장해야만 하는데 hdfs는 분산파일시스템이기 때문에 저장과 로드에 상당한 비용(시간/자원소모)이 듦. 요약 저장은 HDFS에 저장하고, 분석작업은 맵리듀스를 통해 수행하고, 이러..
1. Offset 기반 페이지 단위로 데이터를 불러오는 방식. offset 기반 페이지네이션은 우리가 원하는 데이터가 '몇 번째'에 있다는 데에 집중 offset을 사용해도 되는 경우 데이터의 변화가 거의 없다시피하여 중복 데이터가 노출될 염려가 없는 경우 일반 유저에게 노출되는 리스트가 아니라 중복 데이터가 노출되어도 크게 문제 되지 않는 경우 검색엔진이 인덱싱 할 이유도, 유저가 마지막 페이지를 갈 이유도, 오래 된 데이터의 링크가 공유 될 이유도 없는 경우 애초에 row 수가 그렇게 많지 않아 특별히 퍼포먼스 걱정이 필요 없는 경우 문제점 각각의 페이지를 요청하는 사이에 데이터의 변화가 있는 경우 중복 데이터 노출 대부분의 RDBMS 에서 OFFSET 쿼리의 퍼포먼스 이슈 2. Cursor 기반 클..
ShedLock 같은 잡을 수행하는 각각 다른 서버에서의 인스턴스 A,B가 있을 때, A,B 둘 중 하나가 수행하도록, 2개 이상의 서버에서 중복 수행을 방지하도록 Lock 을 걸게 하는 라이브러리로 shedlock 이 있다. 순서 관계없이 lock을 설정한 시간 동안은 하나의 인스턴스만 작동하도록 되어있다. 0) 지원하는 저장소 MySQL Redis MongoDB In-Memory ... (굉장히 다양함) 1) 3가지 속성 name : 스케줄 작업의 고유 이름. 해당 문자열은 shedlock 테이블의 name 칼럼으로 PK 역할을 하게 되므로 스케줄 작업의 고유한 이름을 입력해야 함. name은 다른 scheduled 함수와 중복되지 않도록 고유하게 설정해야 함. lockAtLeastFor : 작업이 ..
AWS에서 제공하는 서버리스 컴퓨팅 플랫폼 사용한 컴퓨팅 시간, 용량에 대해서만 AWS에게 비용을 지불하면 됨. 장점 코드를 계속 실행시키기 보다는 특정한 시기에만 실행시키는 경우에 Lambda를 사용하면 유용하다. 서버 띄우지 않고 간단한 코드를 실행시키고 싶은 경우 특정 기간 또는 특정 주기로 코드를 실행시켜야 하는 경우 트리거가 실행될때만 코드를 실행시키고 싶은 경우 단점 코드 용량이 최대 250MB 이다. 함수 실행 시간은 최대 15분이다. 처음 함수 호출시 Cold Start를 하게되고 초기 지연시간이 발생한다. 비싸다. 적용 S3를 lambda 함수 트리거로 추가하여 객체 생성 이벤트가 발생할 때 lambda 함수를 실행시킬 수 있음. 아래 링크처럼, s3에 객체 생성 이벤트가 발생할 때 la..
S3 ##1. S3 특징 Simple Storage Service의 약자로 파일 서버의 역할을 하는 서비스 S3 자체가 수천 대 이상의 매우 성능이 좋은 웹 서버로 구성되어 있어서 EC2와 EBS로 구축했을 때 처럼 Auto Scaling이나 Load Balancing에 신경쓰지 않아도 된다. 웹하드 서비스와 비슷하지만, 별도의 클라이언트 설치나 ActiveX를 통하지 않고 HTTP 프로토콜로 파일 업로드/다운로드 처리 최소 1바이트에서 최대 5TB의 데이터를 저장하고 서비스 할 수 있으며, 저장할 수 있는 파일의 수가 제한이 없다. 파일에 인증을 붙여서 무단으로 엑세스 하지 못하도록 할 수 있다. 데이터를 여러 시설에서 중복으로 저장해 데이터의 손실이 발생할 경우 자동으로 복원한다. ##2. datac..
Redis ##1. 특징 메모리 기반의 key-value 구조의 데이터 관리 시스템 모든 데이터를 메모리에 저장하고 조회하기때문에 빠른 Read, Write 속도를 보장하는 NoSql 영속성을 지원하는 In-memory 데이터 저장소 읽기 성능 증대를 위한 서버 복제 지원 쓰기 성능 증대를 위한 클라이언트 측 sharding 지원 성능은 서버에 따라 다르나 초당 2만 ~ 10만회 수행 ##2. 기능 In-Memory 캐싱 Pub/Sub 메세지 큐 세션 스토어 ##3. 장점 리스트, 배열과 같은 데이터를 처리하는데 유용 리스트형 데이터 입력과 삭제가 MySql에 비해 10배정도 빠름. 메모리를 활용하면서 영속적인 데이터 보존(Persistence) 스냅샷 기능을 제공해 메모리 내용을 *.rdb 파일로 저장..
기본적으로 JPA에서 update를 하려면 다음과 같이 진행하는 것이 일반적이다. @Modifying @Query("UPDATE Post p SET p.title = :title WHERE p.id = :id") int updateTitle(String title, Long id); 예제 step 저장 - Post 객체 save() 수정 - post.updateTitle("변경진행") 조회 - findById(post.getId()) 위와 같은 코드를 짰을 때, 발생하는 문제점은 다음과 같다. updateTitle 함수 실행 후, 객체를 확인하면 값이 변경되어 있지 않다. findById()를 호출시, select 쿼리는 수행되지 않는다. → 이유: findById()는 DB를 확인하기 전에 우선적으로 ..
연관관계의 대칭성 일대다 ↔ 다대일 일대일 ↔ 일대일 다대다 ↔ 다대다 다대일(N:1) - @ManyToOne ex) 게시판(Board)과 게시글(Post)의 관계 요구 사항 하나의 게시판(1)에는 여러 게시글(N)을 작성할 수 있다. 하나의 게시글은 하나의 게시판에만 작성할 수 있다. 게시글과 게시판은 다대일 관계를 갖는다. 데이터베이스를 기준으로 다중성(게시글N : 게시판1)을 결정. 즉, 외래 키를 게시글(N)이 관리하는 일반적인 형태이다. 참고) 데이터베이스는 무조건 다(N)쪽이 외래 키를 갖는다. 단방향 Post(N) 객체에 Board(1) 객체 선언 후, @ManyToOne 어노테이션 추가. Board 객체에서는 참조하지 않음. 1 2 3 4 5 6 7 8 9 10 @Entity public ..