데이터베이스

데이터베이스 (4) - SQL과 NoSQL의 차이

1. 개요 애플리케이션은 회원 정보, 주문 내역, 게시글처럼 계속 늘어나는 데이터를 안전하게 저장하고 다시 찾아야 한다. 이때 자주 비교하는 선택지가 SQL 데이터베이스 와 NoSQL 데이터베이스 다. SQL은 보통 정해진 구조의 테이블을 관계로 연결해 다루는 관계형…

·8분
데이터베이스

데이터베이스 (3) - SQL Injection

1. 개요 SQL 인젝션(SQL Injection) 은 사용자가 입력한 값이 SQL 문장의 일부로 해석되도록 만들어, 의도하지 않은 조회나 변경을 일으키는 공격이다. 로그인, 검색, 게시글 조회처럼 외부 입력을 데이터베이스 쿼리에 사용하는 기능에서 발생할 수 있다. 핵…

·3분
데이터베이스

데이터베이스 (2) - JOIN

1. 개요 관계형 데이터베이스에서는 회원, 주문처럼 성격이 다른 데이터를 보통 별도의 테이블에 나누어 저장한다. 조인(JOIN) 은 공통된 값을 기준으로 여러 테이블의 행을 한 번의 조회 결과로 연결하는 SQL 기능이다. 이 글에서는 회원과 주문 테이블을 예로 들어 조…

·10분
데이터베이스

데이터베이스 (1) - 키의 종류와 역할

1. 개요 관계형 데이터베이스의 테이블에는 비슷해 보이는 행이 여러 개 들어갈 수 있다. 이때 키(Key) 는 특정 행을 구별하거나, 다른 테이블의 행과 연결하는 데 쓰는 열 또는 열의 조합이다. 회원과 주문을 예로 키가 왜 필요한지 살펴보고, 후보키·기본키·대체키·외…

·6분
Backend

JpaRepository 에 대한 간단한 이해

1. 개요 공연 예매 서비스에서 Performance 는 공연 제목과 공연장 정보를 가진 엔티티다. 이 엔티티를 데이터베이스에 저장하거나 ID로 다시 찾으려면 SQL을 직접 작성할 수도 있지만, Spring Data JPA의 JpaRepository 를 사용하면 기본적…

·8분
Backend

낙관적 락과 비관적 락

1. 동시에 같은 데이터를 수정하면 문제가 생긴다 여러 요청이 같은 데이터를 동시에 읽고 수정하면 한 요청의 변경 내용이 사라질 수 있다. 예를 들어 재고가 10개일 때 두 사용자가 동시에 1개씩 주문한다고 생각해 보자. 두 번의 주문이 처리됐지만 최종 재고는 8이 아…

·7분