Oracle FlashBack Query 오라클에서 FlashBack Query를 통해 특정 시점의 테이블 데이터를 복원할 수 있습니다. 예제 테이블은 이전의 계층형 쿼리의 예제 테이블로 현재 row 8건을 가지고 있습니다. 예제 쿼리를 보면 FlashBack Query를 통해 예제 테이블의 10분 전 데이터를 조회하고 있습니다. ID가 8인 row가 추가되지 않은 것을 확인할 수 있습니다. AS OF TIMESTAMP는 특정 시점의 데이터를 조회하고 SYSTIMESTAMP - INTERVAL '10' MINUTES는 현재 시간 기준 10분 전의 시점을 지정하고 있습니다. 조금 더 복잡한 쿼리를 작성해야 되면 AS OF TIMESTAMP 절 뒤에 WHERE 절을 추가하면 됩니다. 오라클에서 데이터를 모르고 삭제하거나 수정한 경우 FlashB.. Oracle Hierarchical Query 오라클에서 한 테이블의 상속관계 row들을 계층형 쿼리로 조회할 수 있습니다. 다른 RDBMS에서 상속관계 row들을 조회하려면 join을 통해야 하는데 오라클 계층형 쿼리를 사용하면 쉽게 조회할 수 있습니다. 예제 테이블을 보게 되면 PARENT_CD를 통해 row들이 계층형 관계를 갖고 있습니다. 예제 쿼리 1을 보게 되면 START WITH를 통해 조회할 데이터의 루트 노드를 지정하는데 ID가 1인 row를 루트 노드로 지정합니다.(3라인) CONNECT BY PRIOR를 통해 부모 노드에 속하는 자식 노드들을 조회합니다.(4라인) PRIOR 뒤에 자식 노드의 ID 컬럼이 부모 노드를 참조하면 부모 노드부터 자식 노드를 순뱡향 조회합니다. 예제 쿼리 2와 3을 보면 각각 ID가 2인 3인 노.. Oracle Pivot 오라클에서 여러 행의 특정 컬럼을 하나의 행으로 조회하려면 Pivot을 사용하면 됩니다. 예제 테이블의 CODE 컬럼 기준으로 집계하여 Pivot을 통해 COL1, COL2 컬럼 합계를 구하겠습니다. 위의 예제 쿼리를 설명하면 서브 쿼리에서 CODE 컬럼 기준으로 집계하여 COL1, COL2 컬럼의 합계를 구합니다.(8 ~ 13라인) 서브 쿼리 결과를 Pivot에서 변환합니다.(14 ~ 23라인) 앞의 서브 쿼리에서 CODE 컬럼 기준으로 COL1, COL2 합계값을 구했기 때문에 MAX(COL1_SUM), MAX(COL2_SUM)을 통해서 Pivot에서 값을 구합니다. FOR CODE IN을 통해 각 CODE 별 컬럼을 생성합니다. 여기서 CODE는 SQL 예약어가 아니라 예제 테이블의 컬럼명입니다.. Spring Async CompletableFuture 앞에서 작성한 글에 이어서 비동기로 호출한 메소드들의 결과값을 처리하는 방법입니다. 비동기로 호출한 메소드들의 결과값을 처리하려면 Async와 CompletableFuture를 사용하면 됩니다. 페이징 처리를 예시로 들면 일반적으로 데이터 목록을 조회하는 메소드와 데이터 갯수를 조회하는 메소드 2개를 호출하는데 이렇게 하면 동기로 순차적으로 처리되기 때문에 비효율적입니다. 2개의 메소드가 서로에게 영향을 끼치지 않기 때문에 비동기로 호출하는 것이 효율적입니다. 위의 ElasticSearchRepositoryImp 자바 코드를 보게 되면 데이터 목록을 조회하는 메소드와 데이터 목록 개수를 조회하는 메소드들을 각각 비동기로 호출하고 결과값을 리턴하고 있습니다. @Async 어노테이션을 통해 메소드를 비동기.. Spring Async 비동기 처리 스프링에서 메소드 호출을 비동기로 처리해야 하는 경우 Async를 사용하면 됩니다. 예를 들면 첨부파일을 ElasticSearch와 DB에 저장해야 하는 경우 순차적으로 저장하는 것보다 비동기로 처리하면 성능을 개선할 수 있습니다. 비동기 처리를 설정하는 AsyncConfig 클래스입니다. @Configuration 어노테이션을 통해 이 클래스가 스프링 설정을 담당하고 있음을 나타냅니다.(10라인) @EnableAsync 어노테이션을 사용하여 스프링의 비동기 설정을 처리합니다.(11라인) 비동기 작업을 지원하는 ThreadPoolTaskExecutor 빈을 생성하는 taskExecutor 메소드입니다.(14 ~ 23라인) 이 메소드에서 생성하는 빈 이름은 "taskExecutor"입니다.(14라인) 기.. Spring ElasticSearch Snapshot Backup Restore 스프링에서 ElasticSearch 데이터를 스냅샷으로 백업하고 복원하는 방법입니다. 이전에 작성한 ElasticSearch 스냅샷 생성하는 방법은 직접 kibana에서 작업해야 했는데 이번에는 REST API를 통해 스프링에서 처리하는 방법입니다. https://tiqndjd12.tistory.com/278 ElasticSearch Snapshot Backup RestoreElasticSearch 데이터를 스냅샷으로 백업하고 복원하는 방법입니다. 스냅샷을 생성하기 전에 먼저 elasticsearch.yml 파일에 스냅샷이 저장될 레포지토리를 설정합니다. elasticsearch.yml 파일은 /usr/share/tiqndjd12.tistory.com 스냅샷 레포지토리 생성과 등록은 사전에 완료되었다고.. ElasticSearch Snapshot Backup Restore ElasticSearch 데이터를 스냅샷으로 백업하고 복원하는 방법입니다. 스냅샷을 생성하기 전에 먼저 elasticsearch.yml 파일에 스냅샷이 저장될 레포지토리를 설정합니다. elasticsearch.yml 파일은 /usr/share/elasticsearch/config/ 디렉토리에 있습니다. docker로 ElasticSearch 실행 중이라 elasticsearch.yml 파일 위치는 다를 수 있습니다. 수정한 elasticsearch.yml 파일의 내용을 반영하기 위해 ElasticSearch를 재부팅해야 합니다. docker로 ElasticSearch 실행 중이기 때문에 컨테이너 재부팅했습니다. 스냅샷을 생성하기 전에 먼저 디렉토리를 생성합니다. test_backup은 생성될 스냅샷.. Spring ElasticSearch 첨부파일 조회 스프링에서 ElastiSearch 첨부파일 조회하는 방법입니다. 클라이언트로부터 검색할 키워드를 받아서 검색하는 selectFile 메소드입니다.(88 ~ 110라인) attachment.content 속성에 색인된 첨부파일 내용을 wildcard를 통해 첨부파일의 내용을 조회합니다.(92 ~ 93라인) wildcard는 RDBMS로 비유하면 LIKE 검색과 같은 것입니다. ElastiSearch 조회 결과의 실질적 데이터를 사용자에게 전달하기 위해 조회 결과를 파싱 하여 리턴합니다.(95 ~ 109라인) REST API의 GET 메소드 방식을 사용해서 첨부파일의 내용을 조회합니다. kibana 조회 화면과 postman으로 조회한 결과를 비교하면 동일한 데이터가 확인된 것을 확인할 수 있습니다... 이전 1 2 3 4 ··· 34 다음