DB 연결: JDBC Driver / DB 조작: JDBC APIs
·
DB
JDBC API는 3개로 구성되어 있다. 이 중 Connection 접속 시 DriverManager 사용하면 물리적 접속인 것.Connection 접속Statement 쿼리ResultSet 결과Java가 DB를 사용하기 위해 가장 먼저 필요한 것은 Java Application과 DB를 연결하는 것이다. Java에서의 DB 접속은 물리적 접속과 논리적 접속 두 방식 중 하나를 선택하면 된다.물리적 접속: 매 접속 때마다 DB에 직접 붙는 것으로 Connection Create/ Close의 반복JDBC API 3개 중 Connection 접속 시 DriverManager 사용하면 물리적 접속인 것.논리적 접속: 매 접속 때마다 DB에 접속되어있는 Connection Pool 중 하나 사용 후 반환하여 ..
Spring Boot와 DB 연결
·
DB
[DB와 Spring Boot 연결방식]Spring Boot 로컬/도커로 구동(2가지) + 데이터베이스 로컬/도커로 구동(2가지)여기서는 Spring Boot를 로컬로 구동하고, 데이터베이스를 도커로 구동할 예정이다.Spring Boot를 로컬로 구동데이터베이스를 로컬로 구동: 방법 1 -> 로컬에서 개발 및 디버깅시 사용하는 가장 초보적인 방법데이터베이스를 도커로 구동: 방법 2 -> 로컬에서 개발 및 디버깅시 사용하는 방법Spring Boot를 도커로 구동데이터베이스를 로컬로 구동: 방법 3데이터베이스를 도커로 구동: 방법 4 -> 배포와 비슷한 환경 테스트 혹은 실제 배포시 사용하는 방법1. 로컬 내 Docker를 통해서 데이터베이스 서버 구동하기: PostgreSQL1-1 . Docker 실행아래..
트랜잭션 격리 레벨(Isolation Level)
·
DB
여기에서는 MySQL의 Undo 영역을 통한 MVCC 지원을 예로 모든 격리 수준을 설명한다.MVCC: 데이터베이스에서 읽기와 쓰기 작업의 동시성과 일관성을 높이기 위해 데이터를 여러 버전으로 관리하는 기술이다.- Undo 영역: 데이터를 변경하기 전, 기존 데이터를 백업하여 저장하는 영역으로 이를 통해 트랜잭션이 완료되지 않았을 때도 이전 데이터를 기반으로 읽기 작업을 수행할 수 있다.- Snapshot: 읽기 작업 시 특정 시점의 데이터 상태를 제공하는 기술로, 읽기 작업이 쓰기 작업의 영향을 받지 않도록 보장한다.- Garbage Collection: 트랜잭션이 종료되고 더 이상 필요하지 않은 이전 버전을 삭제하여 저장 공간을 관리한다. 버저닝: 데이터의 이전 상태를 기록하며, 변경 전의 데이터를 ..
데이터베이스 동시성 제어(Concurrency Control)
·
DB
동시성 제어란 하나의 DB에 여러개의 CRUD 접근에 있어서 (한 어플리케이션이 다중 연결성을 갖거나, 다중 어플리케이션이 붙는 경우 등) 충돌이 없도록, Data Integrity가 위배되지 않도록 다중 접근에 대해 동시성 제어 정책을 통해 관리하는 것을 말한다. 관리할 수 있는 방법으로는 개발 언어를 통하거나, 데이터베이스 설정을 통해서로 나뉜다.  동시성 제어가 필요한 이유갱신손실: 두 트랜잭션이 같은 데이터를 동시에 업데이트하여 한 트랜잭션의 변경 내용이 손실되는 경우읽기-쓰기 충돌: 한 트랜잭션이 아직 커밋되지 않은 데이터를 읽고, 이를 기반으로 작업을 수행하여 잘못된 결과를 초래할 수 있음 데이터베이스 동시성 제어의 핵심은 "Locking Mechaanism"이다. Locking 제어 메커니즘..
데이터베이스의 확장
·
DB
데이터가 쌓일수록 데이터베이스의 읽기/ 쓰기 성능을 감소하고 병목지점이 될 수 있다. 이시점에서 속도와 확장성에 대한 고민은 필연적이다. 아래의 각각의 기술은 데이터의 분산, 복제, 분학 등을 통해 데이터베이스 시스템의 성능과 가용성을 향상하는데에 목적을 가지고 있다.데이터베이스의 확장(Scaling)"대규모 데이터베이스 시스템"에서의 부하 분산 및 확장성을 위해 아래 3개의 전략을 사용한다.1. Partitioning: 데이테베이스의 테이블을 분할하여 분산 저장하는 기술로, 이를 사용하면 데이터베이스의 용량이 증가해도 처리량이 유지될 수 있으며, 데이터의 논리적 분할에 따라 분산 처리를 수행할 수 있다.파티셔닝은 DML의 성능이 개선되고 유지보수성, 가용성이 향상된다는 장점이 있지만, join 복잡도가..
DBMS
·
DB
관계형 DBMS와 비관계형 DBMS의 특징과 차이를 잘 이해해야 서비스를 만들 때, 비지니스 및 서비스 특성에 따라 특성을 달리하여 적합한 DB를 만들 수 있다. 만약 관계형 DBMS를 적용해야하는 서비스에 비관계형 DBMS(NoSQL)을 적용한다면, 매번 데이터를 적재할 때 모든 값을 다 설정하여 넣어줘야하고(PK-FK, JOIN이 없으니까) 데이터 형태가 정해져있지 않아서 추후에 수많은 API 에러가 발생할 수 있다.1. DB와 DBMS1-1. DB: 값의 집합으로 데이터를 나열한 것. 1-2. DBMS (DB + 엔진(데이터나 스키나 조작, 쿼리 최적화) + 관리): 데이터에 대한 스키마(테이블)에 대해서 정의(DDL), 저장 및 분석(DML), 관리를 제공하는 응용프로그램-> 흔히 MySQL, N..