동시성 문제 해결 위치 데이터베이스와 애플리케이션에서의 동시성 문제 지난번 포스팅에서 동시성 문제를 해결하기 위해 낙관적 락, 비관적 락을 비교해보았다. 두 방법은 모두 데이터베이스에서 트랜잭션이 작업을 처리하는 도중에 락을 이용하여 동일 자원에 동시 접근을 방지하거나 동시 접근을 감지하여 재시도하는 방법으로 동시성 문제를 해결했다. 하지만 데이...
NoSQL NoSQL은 Not only SQL의 약자로, 기존의 관계형 데이터베이스가 아닌 방식으로 데이터를 저장하고 관리하는 데이터베이스 관리 시스템을 말한다. 즉 기존의 관계형 데이터베이스 처럼 특정 스키마를 정의하고 스키마와 같은 구조의 데이터를 저장하는 것이 아니라 스키마가 고정되어있지 않거나 아예 존재하지 않는 데이터베이스를 의미한다. 대...
동시성 문제 동시성(Concurrency) 동시성은 두 가지 이상의 동일한 사건이 같은 시간에 발생하는 것을 의미한다. 웹 서버는 여러 명의 사용자가 보낸 요청을 동시에 처리하며, 이는 작성한 코드에 의해 구현된 기능이 동시에 작동할 수 있다는 것을 의미한다. 동시성 문제는 경쟁 조건에 놓여있는 기능이 동시에 여러 번 동작하는 경우에 발생한다....
트랜잭션 격리 수준 트랜잭션의 전파는 트랜잭션이 어떻게 동작할 것인가를 결정하는 방식을 의미한다. 앞선 설명에서 다른 스레드이므로 다른 트랜잭션이 열린다. 다른 스레드이므로 이미 존재하는 트랜잭션의 값을 읽어올 수 없다..? 다른 스레드의 트랜잭션이 변경한 값을 읽어오는 게 가능한지는 알아봐여함 이미 존재하는 트랜잭션에 참여 ...
REST(Representational State Transfer) REST 아키텍쳐? Roy Fielding은 REST를 웹이라는 분산 하이퍼미디어 시스템을 위한 아키텍쳐로 정의한다. 이는 소프트웨어 공학 원칙을 적용하고 적용 과정에서 발생 가능한 문제점을 해결하기 위한 제약 조건들과 방법들에 의해 구성된다. REST를 정의 하기 위한 6가지 ...
데이터 검증(Validation) 서버로 들어오는 요청에 포함된 데이터는 여러가지 이유로 정해진 형식이 있을 수 있다. 예를 들어 비밀번호의 경우 복잡성을 높이기 위해 영문과 숫자를 포함하여 7자 이상으로 입력해야 하는 등의 조건이 있을 수 있다. 보통 1차적으로 프론트엔드에서 사용자의 입력값을 검증한 뒤에 검증이 끝난 값을 요청에 포함하여 서버로...
페이지네이션(Pagination) 페이지네이션은 여러 개의 데이터를 일정한 크기로 나누어 제공하는 것을 의미한다. 사용자의 요청에 따라 데이터를 반환할 때 데이터의 양이 많은 경우에는 서버의 부하가 커지고 전달 시간이 오래걸리기 때문에 여러 개의 데이터를 나누어 전송한다. 클라이언트의 관점에서는 일반적인 페이지네이션과 무한 스크롤의 두 가지 방식...
상속 관계인 클래스의 매핑 데이터베이스에는 상속 관계가 존재하지 않는 대신에 상속 관계와 유사한 형태의 슈퍼타입-서브타입 관계라는 모델링 기법이 존재한다. 슈퍼타입-서브타입 여러 가지의 엔티티들에서 공통적인 부분과 그외의 나머지 부분을 나누어 관리하는 데이터베이스 모델링 기법으로 공통된 속성을 부모 클래스로, 그외의 나머지 부분을 자식 ...
영속성 전이 - cascade type cascade type는 영속성 전이에 대한 방법을 어떻게 할 것이냐를 의미한다. 즉 연관관계로 연결된 엔티티를 영속성 컨텍스트로 관리할 때 해당 엔티티와 연결된 엔티티를 어떤 상태로 처리할 것이냐를 의미한다. 영속성 전이 설정은 연관관계의 주인이 아닌 객체에 설정하며 이에 따라 양방향 연결인 경우에 설정이 ...
연관관계 엔티티 객체는 대부분 다른 엔티티와 연결되어 동작하게 된다. 이러한 엔티티의 연결을 연관관계라고 하며 엔티티의 연관관계를 데이터베이스의 테이블과 매핑하는 것을 연관관계 매핑이라고 한다. 객체는 코드상에서 참조를 통해 연관관계를 형성하고 데이터베이스에서는 다른 테이블의 키를 외래키로 설정하여 연관관계를 형성하게 된다. JPA는 객체의 참...