본문 바로가기
반응형

분류 전체보기714

ApplicationContext 개요 개인프로젝트를 진행하면서, ApplicationContext로 직접 빈을 호출하여 사용한 부분이 있었습니다. 스프링 컨테이너를 관리하는 중요한 인터페이스이다 보니, 스프링 IoC 컨테이너와 스프링 빈도 관련된 내용을 정리했습니다. Application & BeanFactory The org.springframework.beans and org.springframework.context packages are the basis for Spring Framework’s IoC container. The BeanFactory interface provides an advanced configuration mechanism capable of managing any type of object. Applic.. 2022. 7. 8.
고급매핑 - 상속관계 *JPA에서 상속관계 구현방식은? 1. 관계형 데이터베이스는 상속 관계가 없다. 2. "슈퍼타입 서브타입 관계"라는 모델링 기법이 "객체 상속"과 유사하다. 4. 상속관계 매핑 : 객체의 상속과 구조와 DB의 슈퍼타입 서브타입 관계를 매핑한다. * 슈퍼타입 서브타입 논리 모델을 물리 모델로 구현하는 방법 1. 각각 테이블로 변환 (조인전략) @Entity @Inheritance(strategy = InheritanceType.JOINED) @DiscriminatorColumn(name = "DTYPE") public abstract class Item { @Id @GeneratedValue private Long id; private String name; private int price; } @Disc.. 2022. 7. 7.
JDBC란? * JDBC JDBC는 관계 데이터베이스에 접근하는 자바 API입니다. 클라이언트가 데이터베이스에 접근하는 방법을 정의한 어플리케이션 프로그래밍 API입니다. 자바와 데이터베이스 연결을 위해 사용되는 데이터 접근 기술입니다. JDBC는 데이터베이스와 커넥션을 만들고, SQL 작업을 위한 인터페이스를 제공하고, 결과를 처리합니다, JDBC API는 데이터베이스와 연결하기 위해 JDBC 드라이버를 사용합니다. JDBC Driver는 아래 4가지가 있습니다. JDBC-ODBC Bridge Driver Native API Driver (partially java driver) Network Protocol Driver (fully java driver) Thin Driver (fully java driver) .. 2022. 7. 5.
HikariCP란? * 개요 DataSource를 여러개 만드는 과정에서, connection Pool로 Hikari를 이용하는 예제를 보았습니다. Hikari는 성능이 좋아서 쓴다고 생각은 했지만, 어느정도 성능이 좋고 어떤 개념을 가지고 있는지 확인하려고 합니다. * Hikari란? Hikari는 connection pooling을 제공하는 JDBC DataSource의 구현체입니다. 이 프레임워크가 다른 connection pooling 보다 가장 빠른 이유는 몇몇 바이드코드 레벨의 구현이 있으며, 마이크로 최적화, ArrayList 사용 대신 FastList 직접 구현으로 처음부터 끝까지 모든 것을 스캔하는 과정 생략 등이 있습니다. 실제 성능의 테스트 결과를 보고 싶다면 다음 벤치마크를 확인해주세요. Hikari .. 2022. 7. 4.
Mysql Replication 구성하기 개요 이번 시간은 Mysql Replication 개념을 정리하고 읽기와 쓰기 작업에 Replication 구성 및 적용 과정을 알아보겠습니다. 복제(Replication) 복제(Replication)는 1개 이상의 레플리카(replica) 저장소가 소스 저장소와 동기화를 자동으로 유지하는 과정입니다. (기존의 일반적으로 사용하였던 master-slave라는 용어를 source-replica로 대체하는 추세입니다. 하지만 일부 문서를 하면서 전자 용어를 사용하는 부분도 있습니다.) 아래는 1개의 Master 저장소와 복제한 Slave 저장소가 있습니다. 기본적으로 복제는 비동기 방식입니다. 설정에 따라서 전체가 아닌 부분 데이터를 복제할 수 있습니다. 복제의 장점 1. 스케일 아웃 성능을 향상하기 위해 .. 2022. 6. 29.
일반 Join vs Fetch Join * 개요 Fetch Join를 공부하고 정말 좋은 기능이며 성능에 뛰어나다는 사실을 알았습니다. 그렇게 공부하던 중, 일반 Join과 Fetch Join은 구체적으로 어떤 차이가 있는지 궁금해졌습니다. 따라서 예제를 기반으로 내용을 정리합니다. * 조건 Author : Book이 1 : N로 연관관계를 가지고 있다고 가정합니다. 연관관계의 주인은 Author입니다. 특히, join은 FROM절에 N인 Book이 오느냐, 1인 Author가 오느냐에 따라서 성능이 차이가 납니다. 각 상황을 비교해봅니다. * Author @Entity public class Author implements Serializable { private static final long serialVersionUID = 1L; @I.. 2022. 6. 29.
Redis Persistence AOF vs RDB 개요 Redis는 In-memory 데이터 저장소이므로 서버를 재시작하면 모든 데이터를 유실합니다. 또한 복제 기능을 사용해도 잘못된 코드나, 사람의 실수가 발생하면 복제본도 똑같이 데이터가 삭제됩니다. 또한 복원을 할 수 없습니다. 따라서, Redis를 캐시 이외에도 용도로 사용한다면 적절한 데이터 백업이 필요합니다. Redis Persistence 종류 Persistence란 SSD같은 저장소에 데이터를 저장하는 것입니다. Redis는 영속성을 위해 여러가지 옵션을 제공합니다. 대표적으로 RDB, AOF 2가지 방식이 있습니다. RDB(Redis Database) RDB 영속화는 일정한 가격으로 특정 시점 스냅샷을 수행합니다. RDB 장점 1. RDB는 단일 파일이며, 특정 시점의 메모리에 있는 데이.. 2022. 6. 28.
Message Queues vs Pub/Sub Asynchronous Messaging Pattern 비동기 메세징은 확장성과 안정성, 성능 향상을 목적으로 발행자(producer)의 메세지 생성이 구독자(consumer)의 작업과 분리되는 방식입니다. 메세징 시스템을 다룰 때, 일반적으로 Message Queue와 Publish/Subscribe 2가지로 나뉩니다. Message Queues Message Queue는, 메세지를 만드는 발행자(publisher)와 메세지를 보관하고 있는 큐(Queue), 큐에서 메세지를 소비하는 여러개의 소비자(consumer)로 이루어져 있습니다. 이 통신 방식은 publisher가 consumer에게 명령을 내리는 방식으로 작동합니다. publishing 서비스는 메세지를 큐 혹은 exchange에 넣고, 1개.. 2022. 6. 26.
RabbitMQ와 Kafka 비교하기 RabbitMq와 Kakfa 모두 메세지 큐를 이용해 시스템의 부하를 줄이고 성능을 높이기 위한 용도로 사용됩니다. 각 기술의 특징과 차이점을 알아보도록 합니다.  각 차이점을 알기 전에 비동기 메세징 방식을 이해하면 좋습니다. Message Queue와 Pub-Sub의 개념에 간단히 정리했습니다. Message Queues vs Pub/SubAsynchronous Messaging Pattern 비동기 메세징은 확장성과 안정성, 성능 향상을 목적으로 발행자(producer)의 메세지 생성이 구독자(consumer)의 작업과 분리되는 방식입니다. 메세징 시스템을 다룰 때, 일반escapefromcoding.tistory.com  RabbitMQ와 Message Broker는 무엇인가? RabbitMQRa.. 2022. 6. 25.
반응형