반응형

db 5

[후기] SQL 첫걸음

프로젝트를 진행하면서 SQL, 인덱스, MySQL innoDB 구조 및 원리 공부 필요성을 느끼게 됐다. 이 책은 SQL 첫걸음과 SQL 레벨업이라는 시리즈로 구성돼있다. SQL 레벨업을 읽기 전, SQL 첫걸음을 복습 겸 읽고 간단하게 후기를 남겨보려 한다. 좋았던 점 SQL 작동 결과에 대해 쉽게 이해할 수 있도록 다양한 예시로 어렵지 않게 설명되어있다. 입문자도 편안하게 접근할 수 있고, 숙련자라면 복습용으로 부담없이 읽을 수 있다는 점이 장점이다. 정규화를 예시로 들어보자. 이 책은 제1 정규화부터 제3 정규화까지 그림과 예시를 들어서 쉽게 설명해준다. 제1 정규화에서 요구되는 `하나의 셀에 여러 데이터가 들어갈 수 없다`는 내용을 테이블 예시를 들어서 설명한다. 중복 데이터를 제거하기 위한 테이..

독후감/IT 서적 2022.11.12

[DB] 트랜잭션의 ACID 성질

트랜잭션 관리는 백엔드 개발자에게 있어서 매우 중요한 일 중 하나이다. 트랜잭션이란 데이터를 다루는 일련의 수행 작업 단위를 의미한다. 예를 들어 A라는 사람이 B라는 사람에게 10만원을 빼앗는 작업을 수행한다고 하자. 이 때 A의 자산은 10만원이 증가해야 되고 B의 자산은 10만원이 감소한 상태로 작업이 완료돼야 한다. 만약, 해당 과정 수행 중에 문제가 생겼다면 아예 작업이 수행되기 전 초기 상태로 되돌아가야 한다. A의 자산은 10만원이 증가됐는데, B의 자산은 그대로인 경우가 존재하면 안된다. 위와 같이 트랜잭션은 데이터를 다루는 작업을 의미하기 때문에 매우 신중하게 관리해야 한다. 그렇기 때문에 트랜잭션은 ACID 성질을 보장해야 한다. ACID 성질이란 무엇일까? 원자성(Atomicity) ..

CS/Database 2022.10.14

[220930] DB 제3정규화 위반 문제점을 무시하고 프로젝트 연관관계 수정한 삽질 후기

프로젝트 엔티티 연관관계를 개선하는 과정을 진행하면서 여러 삽질을 했다. 약 5~6가지 삽질을 했는데, 이번 포스팅에선 그 중 하나인 4번째 삽질, DB 정규화 위반 문제점 중 하나인 갱신 이상을 무시하고 성능 및 가독성을 개선하려 한 후기에 대해 적어보려 한다. 삽질한 부분의 도메인 구조 회원이 모임(Team)에 가입할 때, 모임에서 사용할 닉네임을 지어 가입하게 된다. 이 때 TeamParticipation이 생성된다. TeamParticipation에는 모임에서 사용하는 닉네임이 들어있다. (즉, TeamParticipation은 Member와 Team의 중간테이블) 특정 모임(Team)은 여러 롤링페이퍼(Rollingpaper)를 소유할 수 있다. (1:N @ManyToOne 단방향) 특정 롤링페..

[H2] 맥에서 H2 database 실행하기 (feat. zsh: permission denied: ./h2.sh)

인텔리제이 테스트 환경에서는 기본으로 h2를 제공해주기 때문에, H2 database를 직접적으로 설치할 일이 많을지는 모르겠다. 하지만 인생은 어떻게 될지 모르니 혹시나 해서 기록해두려 한다. 1. h2 database 접속 후 설치 아래 링크로 들어가자. https://www.h2database.com/ H2 Database Engine (redirect) H2 Database Engine Welcome to H2, the free SQL database. The main feature of H2 are: It is free to use for everybody, source code is included Written in Java, but also available as native executa..

[Spring] @Transactional로 DB 동시성 문제를 방지하자

웹 데이터 애플리케이션을 만들 때, dao에서 sql문으로 db에 접근하고 service에서 dao 메서드들을 이용하여 하나의 트랜잭션을 관리한다. 그런데 만약 이 애플리케이션을 여러 명이서 동시에 사용한다면? 동시성 문제가 발생할 수 있다. 동시성 문제란, 두 개 이상의 세션이 공통된 자원을 읽고 쓸 때 발생할 수 있는 문제를 의미한다. 이번 포스팅에선 이러한 동시성 문제와 트랜잭션에 대해서 알아보고, @Transactional 어노테이션으로 해결하는 방법을 알아볼 것이다. +) 22.10.13. 트랜잭션 격리레벨 설명 수정 및 보충 트랜잭션이란? DBMS에서 데이터를 다루는 작업의 단위를 의미한다. 용어상 정의로는 이해하기 어렵지만, 트랜잭션의 성질을 알아보면 보다 더 쉽게 이해할 수 있을 것이다. ..

1
반응형