본문 바로가기

Back-end/Database

(7)
[Database] Join이란? Join은 두 개 이상의 테이블을 서로 연결하여 데이터를 검색할 때 사용하는 방법으로 두 개의 테이블을 마치 하나의 테이블인 것처럼 보여주는 것입니다. 기본 사용 방법 두 개의 테이블에 하나라도 같은 컬럼이 있어야 함 두 컬럼의 값은 공유 되어야 함 보통 조인을 위해 기본키(Primary Key)와 외래키(Foreign Key)를 활용함
[Database] 정규화란? 정규화는 데이터의 중복 방지, 무결성을 충족 시키기 위해 데이터베이스를 설계하는 것을 의미합니다. 제1정규형: 모든 속성 값이 원자값을 갖도록 분해한다. 제2정규형: 제1정규형을 만족하고, 기본키가 아닌 속성이 기본키에 완전 함수 종속이도록 분해한다. 제3정규형: 제2정규형을 만족하고, 기본키가 아닌 속성이 기본키에 직접 종속하도록 분해한다. BCNF 정규형: 제3정규형을 만족하고, 함수 종속성 X->Y가 성립할 때 모든 결정자 X가 후보키가 되도록 분해한다.
[Database] 트랜잭션 격리 수준(Transaction Isolation Levels) 트랜잭션 격리 수준은 고립도와 성능의 트레이드 오프를 조절합니다. Read Uncommitted: 다른 트랜잭션에서 커밋되지 않은 내용도 참조할 수 있음 Read Committed: 다른 트랜잭션에서 커밋된 내용만 참조할 수 있음 Repeatable Read: 트랜잭션에 진입하기 이전에 커밋된 내용만 참조할 수 있음 Serializable: 트랜잭션에 진입하면 락을 걸어 다른 트랜잭션이 접근하지 못하게 함 (성능이 매우 떨어짐)
[Database] 트랜잭션 ACID ACID는 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 성질입니다. Atomicity(원자성): 트랜잭션의 연산은 모든 연산이 완벽하게 수행되어야 하며, 한 연산이라도 실패하면 트랜잭션은 실패해야 합니다. Consistency(일관성): 트랜잭션을 수행하기 전이나 후나 데이터베이스는 항상 일관된 상태를 유지해야 합니다. Isolation(고립성): 트랜잭션은 동시에 실행될 경우 다른 트랜잭션에 의해 영향을 받지 않고 독립적으로 실행되어야 합니다. Durability(내구성): 트랜잭션이 커밋된 이후에는 시스템 오류가 발생하더라도 커밋된 상태로 유지되는 것을 보장해야 합니다. 수행을 성공적으로 완료한 트랜잭션은 변경한 데이터를 영구히 저장해야 합니다.
[Database] 트랜잭션이란? 트랜잭션(Transaction) 이란 데이터베이스의 상태를 변화시키는 하나의 논리적인 작업 단위라고 할 수 있으며, 트랜잭션에는 여러 개의 연산이 수행될 수 있습니다. 트랜잭션은 수행중에 한 작업이라도 실패하면 전부 실패하고, 모두 성공해야 성공이라고 할 수 있습니다.
[Database] 데이터베이스에서 인덱스(Index) 를 사용하는 이유 및 장단점 데이터베이스에서 인덱스를 사용하는 이유는 검색 성능을 향상 시키기 위함입니다. 데이터베이스에서도 테이블의 모든 데이터를 검색하면 시간이 오래 걸리기 때문에 데이터와 데이터의 위치를 포함한 자료구조를 생성하여 빠르게 조회할 수 있도록 돕고 있습니다. 장점으로 빠른 검색 성능을 들 수 있습니다. 단점으로는 인덱스를 구성하는 비용 즉, 추가, 수정, 삭제 연산 시에 인덱스를 형성하기 위한 추가적인 연산이 수행됩니다. 검색 성능을 실질적으로 향상시키기 위해서는 해당 쿼리가 index를 사용하는지, 카디널리티, Selectivity 같은 요소들이 고려된 인덱스가 생성되어야 합니다. 따라서, 인덱스를 생성할 때에는 트레이드 오프 관계에 놓여있는 요소들을 종합적으로 고려하여 생성해야합니다.
[Database] RDBMS vs NoSQL RDBMS RDBMS(Relational)는 데이터베이스를 이루는 객체들의 릴레이션을 통해서 데이터를 저장하는 데이터베이스입니다. SQL을 사용해 데이터의 저장, 질의, 수정, 삭제를 할 수 있으며 데이터를 효율적으로 보관하는 것을 목적으로 하고 구조화가 굉장히 중요합니다. 장점: 명확한 데이터 구조를 보장하고, 중복을 피할 수 있습니다. 단점: 관계를 맺고 있어 시스템이 커질 경우 JOIN문이 많은 복잡한 쿼리가 만들어질 수 있으며, 성능 향상을 위해서 서버의 성능을 향상 시켜야하는 Scale-up만을 지원합니다. 스키마로 인해 데이터가 유연하지 못합니다. NoSQL NoSQL(Not Only SQL)은 RDBMS에 비해 자유로운 형태로 데이터를 저장합니다. 데이터 테이블은 그냥 하나의 테이블이며 테이..