🎛️정규화 vs 반정규화
·
CS/DB
Intro.데이터베이스 중 특히 RDB라면 절대 빠질 수 없는 이야기인 정규화에 대해서 얘기해보도록 하겠다. 정규화?정규화란 쉽게 말해 데이터의 중복을 최소화하고, 무결성을 유지하기 위해 테이블을 쪼개는 과정이다. 그렇다면 왜 굳이 잘 있는 테이블을 쪼개서 복잡하게 만드는 걸까? 이상 현상(Anomaly) 방지만약 정규화를 하지 않고 모든 데이터를 하나의 거대한 테이블에 다 때려 넣으면, 데이터가 중복해서 저장된다. 이 중복은 필연적으로 다음과 같은 이상 현상(Anomaly)을 유발한다.삽입 이상(Insertion Anomaly): 새 데이터를 넣으려는데, 불필요한 데이터까지 억지로 넣어야 하는 상황. (예: 신입생을 등록하려는데, 아직 수강 신청한 과목이 없어서 '과목명' 컬럼에 NULL을 넣어야만 ..
🗂️인덱스, 넌 누구니?
·
CS/DB
Intro.지난 게시글에서 데이터의 신뢰를 지키는 Transaction과 ACID에 대해 알아보았다. 데이터가 정확하게 저장되는 것을 보장했다면, 이제는 그 데이터를 '얼마나 빨리 찾을 것인가'에 대한 고민이 필요하다. 서비스의 규모가 커지고 데이터가 쌓일수록, DB 성능 최적화는 선택이 아닌 필수가 된다. 이번 게시글에서는 그 최적화의 가장 기본이자 핵심인 Index(인덱스)에 대해 설명해 보도록 하겠다. 인덱스?인덱스는 두꺼운 책에 우리가 원하는 내용을 빠르게 찾으려고 붙이는 색인과 같다. 만약 '트랜잭션'이라는 단어를 책에서 찾고 싶은데 색인이 없다면? 첫 페이지부터 마지막 페이지까지 한 장씩 다 넘겨봐야 할 것이다. 이를 DB에서는 Full Table Scan이라고 부른다. 데이터가 1억 건이라면..
📱트랜잭션과 ACID
·
CS/DB
Intro.전 시간에 DB의 양대산맥인 RDB와 NoSQL에 대해서 알아보았다. 오늘은 그중 특히 RDB에서 데이터 무결성을 보장하기 위해 고안된 개념인 ACID와 트랜잭션에 대해서 알아보도록 하겠다. 데이터 무결성에 대해서는 지난 시간에 설명했으니 생략하고 넘어가겠다. 2026.03.22 - [CS/DB] - 📦RDB와 NoSQL 📦RDB와 NoSQLIntro.어쩌면 다른 분야도 마찬가지겠지만, 소프트웨어에는 만병통치약 같은 기술 스택이나 방법이 존재하지 않는다. 흔히 'No Silver Bullet'이라고 표현된다. 지금까지 그랬고 앞으로도 그럴 것이고asht1214.tistory.com ACID 원칙데이터 무결성을 지키기 위해 데이터베이스는 ACID라는 4가지 핵심 원칙을 따른다. Atomici..
📦RDB와 NoSQL
·
CS/DB
Intro.어쩌면 다른 분야도 마찬가지겠지만, 소프트웨어에는 만병통치약 같은 기술 스택이나 방법이 존재하지 않는다. 흔히 'No Silver Bullet'이라고 표현된다. 지금까지 그랬고 앞으로도 그럴 것이고 이번에도 그렇다. 데이터를 저장하는 방법은 여러 가지가 있는데, 우리가 자주 접하는 표 방식도 있고 그래프 방식도 있고 JSON처럼 키-벨류로 써서 저장하는 방식 등 여러 가지가 있다. 정답인 것은 없다. 언제 무엇을 쓰는지 한 번 알아보자. RDB?RDB는 Relational DataBase의 약자로, 행과 열을 갖는 표의 형태로 데이터들을 저장하는 것을 뜻한다. 표 하나를 테이블(Table)이라고 한다. 그런데 왜 관계형이냐? 그 이유는 바로 여러 개의 테이블들이 서로 관계를 갖기 때문이다. 고..