본문 바로가기
728x90

분류 전체보기257

[SQL] 파티션(Partition) 사용하여 데이터 조회하기. 파티션은 데이터를 효율적으로 저장하고 관리하기 위한 기술로, 테이블이나 인덱스를 더 작은 논리적(물리적) 단위로 분할하는 것을 의미한다. 주요 특징1.성능 향상: 특정 파티션에 대한 쿼리르 실행할 때는 해당 파티션에만 접근하면 되므로 데이터 검색이 빨라질 수 있다. 2.유지 보수 용이성:대용량 테이블을 파티션으로 나누면 데이터 관리가 용이해진다. 특히, 특정 파티션의 데이터를 백업하거나 삭제하는 작업이 간편해진다.3.병렬 처리:파티셔닝은 쿼리를 병렬로 실행할 때 도움이 된다. 각 파티션을 서로 독립적으로 처리될 수 있으므로 병렬 처리를 통해 전체 쿼리의 성능을 향상시킬 수 있다. *파티션 유형: List partition, Range partition, Hash partition, Composite pa.. 2024. 2. 9.
[SQL] WITH 문법 (feat. recursive) WITH를 사용하여 복잡한 쿼리를 간결하게 표현하고, 임시 결과를 생성하여 가독성을 향상시킬 수 있다. SQL WITH절은 임시적인 결과 집합을 생성하여 쿼리 내에서 사용할 수 있게 해주는 기능이다. 주로 서브커리의 가독성 향상이나 동일한 서브쿼리를 여러번 사용 하는 등의 경우에 유용하게 사용할 수 있다. 일반적인 사용 예시 > WITH cte_name (column1, column2, ...) AS ( -- 임시 결과 집합을 생성하는 쿼리 SELECT column1, column2, ... FROM your_table WHERE your_conditions ) -- 기본 쿼리에서 WITH 절에 정의된 임시 결과를 활용 SELECT * FROM cte_name; 위의 쿼리에서 'cte_name'은 임시 .. 2024. 2. 9.
[Junit] Jasper Report PDF 문서 검증하기 (feat. JpdfUnit) JasperReport 라이브러리를 사용하여 PDF형식의 보고서를 생성할 때 데이터가 제대로 가공되어 보고서가 정상적으로 생성 되는지 테스트 하기 위해 JpdfUnit을 사용하게 되었다. *JasperReport에 대한 내용은 해당 글 참조. https://inbeom.tistory.com/entry/JasperReports-JasperReports%EB%9E%80-feat-Jaspersoft-Studio 기존 Java에서는 Junit을 사용하여 데이터를 검증하고 서비스 로직 등을 테스트 하지만 JasperReport를 사용하여 생성한 PDF형식의 보고서의 데이터를 검증하기 위해서는 다른 방법이 필요하여 리서치를 통해 여러 개발자들이 PDF 데이터 검증에 활용하고 있는 JpdfUnit이라는 오픈소스 프레.. 2024. 1. 23.
[Junit] Elasticsearch Unit(Integration) Test Code 작성하기 Spring에서 Junit을 사용하여 Elasticsearch 테스트 코드를 작성하는 방법 Spring 프로젝트에서 Junit으로 Test Code를 작성할 때 RDB(Mysql, Postgresql, Orcle 등)는 JPA나 MyBatis의 Queyr(method)를 사용하여 결과값을 간단히 검증할 수 있지만 Elasticsearch의 경우 org.elasticsearch에서 제공하는 Library를 활용하여 TEST CODE를 효율적으로 작성할 수 있다. 기존에는 ES 임베디드 환경을 사용하여 테스트가 가능했지만 7.0 버전부터 사용이 불가능해진 것으로 보이며 ES의 개발자가 대안으로 RestHighLevelClient를 사용한 In Memory 테스트 방법을 추천한다. https://discuss.. 2024. 1. 23.
[Jenkins] Jenkins란? Jenkins는 오픈 소스 자동화 서버로 CI/CD를 지원하는 도구이다. 소프트웨어 개발 및 배포 프로세스를 자동화하여 개발자들이 소스 코드 변경 사항을 통합하고 테스트하며, 안정적으로 프로덕션 환경에 배포할 수 있다. Jenkins 주요 특징 / 개념 지속적 통합(CI): Jenkins는 여러 개발자들이 작업한 코드 변경 사항을 자동으로 통합하고 빌드하는데 사용된다. *코드 변경이 더 빈번하게 통합되고 테스트되기 때문에 품질 향상과 버그 감소의 효과가 있다. 자동화된 빌드 및 배포: 소스 코드의 빌드 및 테스트를 자동화하여 자동으로 배포 프로세스를 시작할 수 있다. 플러그인 지원: 다양한 플러그인을 지원하여 다양한 개발 / 배포 환경에 대한 통합을 제공한다. 플러그인을 통해 Email 알림, VCS 통.. 2024. 1. 14.
[SpringDataElasticsearch] Spring Data Repository의 기본과 Elasticsearch 세부 사항 Data Repositories Spring Data Repository의 기본과 Elasticsearch 세부 사항 설명. 1. 핵심 개념 (feat. Entity 상태 감지 전략) 2. Repository Interface 정의 Fine-tuning 저장소 정의 Spring Data Module 사용 3. Elasticsearch Repositories 4. Reactive Elasticsearch Repository (반응형) 사용 구성 5. Repository Instances 생성 (Instance & Bean) Java 구성 XML 구성 Filter 사용 6. Query Method 정의 7. Query Methods 쿼리 조회 쿼리 생성 Method 반환 타입 @Query 어노테이션 8. P.. 2023. 12. 16.
[SpringDataElasticsearch] Entity Callbacks. 특정 메서드가 호출되기 전후에 Entity 수정 사항을 적용하는 방법 Entity Callbacks 특정 메서드가 호출되기 전후에 Entity 수정 사항을 적용하는 방법. SpringData 인프라는 특정 메서드가 호출되기 전/후에 엔티티를 수정할 수 있는 훅을 제공하며, 이러한 EnttiyCallback 인스턴스는 Entity를 콜백 형식으로 확인하고 수정하는 편리한 방법을 제공한다. EntityCallback은 동기 및 반응형 API와의 통합 지점을 제공하며 ProcessChain 내에서 실행 순서를 보장하고, 수정된 Entity나 반응형 래퍼 유형을 반환할 수 있다. 엔티티 콜백 구현 (Implementing Entity Callbacks) EntityCallback은 일반적으로 제네릭 타입 인수를 사용하기 때문에 해당 도메인 타입과 직접적인 연관관계를 가진다. In.. 2023. 12. 16.
[SpringDataElasticsearch] Java 객체 JSON 데이터 매핑 방법. Object Mapping Java 객체(DomainEntity)를 Elasticsearch에 저장된 JSON 타입의 데이터에 매핑하고, 또 그 반대로 매핑하는 방법. Meta Model Object Mapping (메타 모델 객체 매핑) 메타모델(Metamodel) 기반 접근 방식은 Elasticsearch와의 데이터 읽기/쓰기를 위해 도메인 유형 정보를 사용한다. 이는 특정 도메인 유형 매핑을 위해 Converter 인스턴스를 등록하는 것을 허용한다. 1. Mapping Annotation Overview (매핑 주석 개요) MappingElasticsearchConverter는 메타데이터를 사용하여 객체를 문서로 매핑한다. 이 메타데이터는 Entity의 속성에서 가져오며, 이를 위해 다양한 주석을 .. 2023. 12. 16.
[SpringDataElasticsearch] Index 생성/삭제, Entity 저장/검색, Query 사용 등 조작 방법. Spring Data Elasticsearch는 여러 인터페이스를 사용하여 Elasticsearch 인덱스에 대해 호출할 수 있는 작업을 정의한다. 인터페이스는 Elasticsearch API 구조로 되어 있으며 인덱스 관리, 도메인 유형에 대한 읽기/쓰기 매핑 지원, 풍부한 쿼리 및 기준 API, 자원 관리 및 예외 번역 등의 기능 사용할 수 있게 해준다. 1. IndexOperations (인덱스 작업) IndexOperations는 인덱스 수준에서 동작하는 작업을 정의하는 인터페이스이다. 주로 인덱스를 생성하거나 삭제하는 등의 관리 작업을 수행한다. IndexOperations indexOps = elasticsearchRestTemplate.indexOps(MyEntity.class); index.. 2023. 12. 16.
728x90