이 글은 최범균 님의 유튜브 “프로그래밍 초식 : DB 트랜잭션 조금 이해하기 02 격리”를 시청하고 작성되었습니다. 같은 데이터에 동시 접근? 동시성은 초심자가 놓치기 쉬운 문제를 발생시킴 ex) 당직 담당자를 최소 1명은 유지해야 한다. 2명의 담당자 A, B가 존재한다. A가 담당자 수를 SELECT ⇒ 결과: 2 B가 담당자 수를 SELECT ⇒ 결과: 2 A는 자신이 빠져도 최소 1명을 만족하므로 자신을 당직에서 제거하도록 UPDATE B가 자신이 빠져도 최소 1명을 만족하므로 자신을 당직에서 제거하도록 UPDATE 결과적으로 남은 당직자는 0명. 최소 1명을 유지해야 한다는 비즈니스 로직 위반 왜? A와 B가 동시에 같은 데이터(당직자 수)에 접근했기 때문 따라서 트랜잭션을 격리하여 이러한 동..
트랜잭션 (Transaction) 데이터베이스의 상태를 변화시키기 위해 수행하는 작업의 단위 트랜잭션이 필요한 이유 SELECT → UPDATE → INSERT 순으로 동작하는 비즈니스 로직이 있다고 가정하자. 만약 UPDATE를 성공적으로 수행한 후 INSERT를 수행하는 과정에서 오류가 발생해 성공적으로 INSERT가 수행되지 않았다면, 이는 로직을 작성한 개발자가 의도한대로 처리된 것이 아니라고 봐야 한다. 따라서 개발자는 어떻게든 수행된 UPDATE를 되돌려야 하고, 이는 복잡한 추가 작업을 요구한다. 트랜잭션을 도입하면 INSERT까지 모든 쿼리가 정상적으로 수행된 경우에만 변경 사항을 반영하고(Commit), 중간에 예외 등에 의해 일부 쿼리가 정상적으로 수행되지 못한 경우에는 수행된 쿼리의 ..
클라이언트에서도 데이터베이스에서 길이 제한 오류가 나지 않도록 문자열 길이에 제한을 둘 필요가 있다. 보통 한글과 같은 문자는 1 Byte가 아닌 2 또는 3 Bytes로 이루어진다. (주로 사용하는 UTF-8은 한글을 3 Bytes로 표현한다.) 따라서, VARCHAR가 Byte를 기준으로 한다면 VARCHAR의 길이 제한은 어떤 것을 입력하는지, 어떤 인코딩 방식을 사용하는지에 따라 달라질 것이다. 이를 모르고 사용하면 추후에 이슈가 생길 수도 있고, 데이터베이스 마이그레이션 시 문제가 발생할 여지도 있을 것 같아 주로 사용하는 DBMS 종류별로 정리해보았다. ✔ VARCHAR의 기준 - MySQL 버전 4.1 이전까지는 Bytes를 사용했다가 4.1부터는 Character를 사용한다고 한다. 즉, ..
이전에 정리했던 글이다. 교재: fundamental of database system 이전 글 2020/07/13 - [강의 정리/Database] - 데이터베이스시스템 - Chapther 1 2020/07/13 - [강의 정리/Database] - 데이터베이스시스템 - Chapther 2 2020/07/13 - [강의 정리/Database] - 데이터베이스시스템 - Chapther 3 [CHAPTHER 5 - The Relational Data Model and Relationship Database Constraints] ▶ 용어 정의 비공식 공식 relation table relation row(행) row tuple column(열) column attribute name(1열) attrib..
이전에 정리했던 글이다. 교재: fundamental of database system 이전 글 2020/07/13 - [강의 정리/Database] - 데이터베이스시스템 - Chapther 1 2020/07/13 - [강의 정리/Database] - 데이터베이스시스템 - Chapther 2 [CHAPTHER 3 - Data Modeling Using the Entity-Relationship (ER) Model] ▶ 데이터베이스 디자인 개요 * 데이터베이스 디자인은 Database design, Application design으로 나뉨 * 이번 장에서는 conceptual database design을 중점으로 학습 * (일반적으로) Application design은 프로그램의 interface에 ..
이전에 정리했던 글이다. 교재: fundamental of database system 이전 글 2020/07/13 - [강의 정리/Database] - 데이터베이스시스템 - Chapther 1 [CHAPTER 2 - Database System Concepts and Architecture] ▶ 데이터 모델 * 데이터베이스의 구조를 설명하기 위한 개념의 집합 * 요소(와 그 데이터 타입)와 요소 그룹(엔티티, 레코드, 표)을 포함 * 데이터 모델의 operations을 참조하여 DB의 검색, 업데이트를 지정 * 데이터 모델의 operations에는 basic model operations(삽입, 삭제, 업데이트)와 user model operations가 포함될 수 있음 ▶ 데이터 모델의 종류 ..