논리적 연결 / 물리적 연결📚 DB와 Java 애플리케이션 연결 및 DB 쿼리 수행하기Java 애플리케이션은 JVM 위에서 실행되며, 데이터베이스는 별도의 시스템이다. 이를 연결하기 위해선 다음 두 단계를 거친다. 1️⃣ DB 연결Java 애플리케이션이 데이터베이스와 통신하기 위해선 먼저 데이터베이스에 접속해야 한다.Java에서의 DB 접속은 물리적 접속 논리적 접속 두 방식 중 하나를 선택한다.물리적 접속은 매 접속 때마다 DB에 직접 붙는 것으로 Create와 Close를 반복한다.논리적 접속은 매 접속 때마다 DB에 접속되어 있는 Connection Pool 중 하나를 사용 후 반환하여 재사용한다.1-1. 물리적 접속 (DriverManager)DriverManger는 데이터베이스에 직접 접속(C..
분류 전체보기
Spring Data JPA 첫 단추서론Spring Data JPA를 배우기에 앞서 알아야 할 내용들이 많다.JDBCORMJPAHibernate(JPA 구현체)Spring Framework 트랜잭션의 이해 Spring Data JPA 구조와 주요 인터페이스해당 내용들은 앞으로 하나씩 포스팅해가며 이해할 예정이다. 시작하기전 데이터베이스와 Spring Boot가 어떻게 연결되는지에 대해 알아보자. 사실 관련 내용 Dockerize를 통해 들은 이미 언급한 바 있다. https://1000sang-dev.tistory.com/72 [Docker] Dockerize #2Docker를 통한 Database 구동Database: 사용하려는 DB의 Base Docker Image 기반에 추가 설정목적: Docker..
Partitioning, Sharding, Replication데이터베이스 확장 (Scaling)확장(Scalling)은 데이터베이스가 대규모 데이터를 처리할 수 있도록 성능과 확장성을 개선하는 전략이다. 대규모 데이터베이스 환경에서3개의 전략을 주로 사용한다.Partitioning(Vertical Partitioning)Sharding(Horizontal Partitioning)Replication1️⃣ PartitioningPartitioning은 하나의 테이블 데이터를 논리적으로 분할하여 저장하는 기술이다.1-1. (Vertical) Partitioning: 컬럼(열) 분할컬럼(열) 기준으로 데이터를 나눈다.예: 사용자 정보 테이블을 기본 정보와 로그 데이터로 분리장점: 특정 필드에 대한 쿼리 최적..
다수의 사용자 다중의 트랜잭션 사이에 데이터베이스 일관성 보장데이터베이스 동시성 제어 (Concurrency Control)멀티유저 환경에서 데이터베이스는 여러 사용자가 동시에 접근할 때에도 데이터 일관성(Data Integrity)을 유지해야 한다. 이를 위해 DBMS에서는 동시성 제어 매커니즘을 도입한다. 동시성 제어는 다중 요청이 같은 데이터에 접근해도 데이터 손상이나 일관성 문제를 방지하도록 설계되었다. 1️⃣ 동시성 제어란?멀티유저 환경에서 동시 접근 멀티유저: 단일 DB 인스턴스 내 다수 스레드 + 여러 인스턴스다수의 트랜잭션이 동시에 같은 데이터에 접근하는 상황주요 목표Data Integrity(데이터 무결성)보장Data Consistencty(데이터 일관성) 유지데이터 충돌 방지 및 성능..
트랜잭션 간 독립성 보장트랜잭션 격리 수준 (Isolation Level)트랜잭션 격리 레벨은 데이터베이스에서 동시에 실행되는 트랜잭션 간의 간섭을 관리하기 위한 기준이다. ACID 원칙 중 "일관성(Consistency)"를 보장하기 위한 핵심 요소이다. 1️⃣ 트랜잭션 격리 수준이란 ? 트랜잭션 격리 수준은 여러 트랜잭션이 동시에 실행될 때, 특정 트랜잭션이 다른 트랜잭션의 데이터를 볼 수 있는 정도를 결정하는 설정이다.격리 수준은 아래와 같이 낮은 수준(Low Isolation) 에서 높은 수준(High Isolation)으로 나뉜다.READ UNCOMMITTEDREAD COMMITTEDREPEATABLE READSERIALIZABLE격리 수준이 높아질수록 데이터 정합성(Data Integrity)..
RDBMS vs NoSQL 관계형 데이터베이스: RDBMS관계형 데이터베이스(RDBMS)는 데이터를 테이블(행과 열) 구조로 저장하고 관리하는 데이터베이스 관리 시스템으로, 데이터 간의 관계를 기반으로 동작한다. ACID 원칙을 준수하며 높은 신뢰성과 데이터 무결성을 보장한다. 행렬 & 관계형 & Fixed Schema행렬: 2차원 배열 데이터 → 복잡한(다차원) 데이터 표현하기엔 한계가 있다. 따라서 Relation이 필요하다.관계: 복잡한(다차원) 데이터를 다수의 2차원 Entity(테이블)들로 쪼개어 놓는다. (PK-FK)Fixed Schema: 고정된 Column 정의대로 데이터를 적재한다.1. 고신뢰성 (High Reliability) 및 데이터 무결성(Data Integrity)ACID 준수..
Docker Compose : 두 개 이상의 도커 이미지 빌드 / 컨테이너 구동Docker Compose목적: Docker Compose를 통한 Spring Boot + Database(MySQL) 동시 구동이번 챕터에선 Docker Compose를 사용하여 앞서 진행했던 Spring Boot 애플리케이션과 MySQL 데이터베이스를 동시에 구동하는 방법과 그 과정에 대해 알아보자. Docker Compose를 통해 여러 개의 Docker 컨테이너를 손쉽게 관리할 수 있다. DockerFile: 하나의 애플리케이션(이미지)을 정의하고 빌드할 때 사용한다.Docker Compose: 둘 이상의 애플리케이션(이미지)을 정의하고 함께 실행할 때 사용한다. 각 컨테이너 간의 네트워크 설정 및 환경 변수 설정을 쉽..
Docker를 통한 Database 구동Database: 사용하려는 DB의 Base Docker Image 기반에 추가 설정목적: Docker를 통한 Database(MySql) 구동 ← docker 명령어 사용데이터베이스 구동은 Dockerfile 통한 이미지 생성 없이, 베이스 이미지로 바로 구동한다.1. MySQL 도커 구동아래 명령어를 통해 바로 구동이 가능하다주의: 도커 내 포트는 3306이지만, 로컬 노출 포트는 33066docker run --name mysql-container \-e MYSQL_ROOT_PASSWORD=root \-e MYSQL_USER=asac \-e MYSQL_PASSWORD=1234 \-e MYSQL_DATABASE=example \-p 33066:3306 -d my..