SunYerim
2025. 8. 5. 14:53
2025. 8. 5. 14:53
- DML, DDL, DCL의 개념과 차이
- DML은 데이터 조작어로 데이터를 조작하는 명령어로 SELECT, INSERT, UPDATE, DELETE가 있습니다. 트랜잭션 처리 대상이 됩니다.
- DDL은 데이터베이스 구조를 정의하거나 변경하는 명령어로 CREATE, ALTER, DROP, TRUNCATE가 있습니다. 실행 시 자동으로 커밋됩니다.
- DCL은 데이터베이스 사용 권한을 제어하는 명령어로 GRANT, REVOKE, 등이 있습니다.
- (참고로, COMMIT, ROLLBACK 등은 TCL로 분류되며 트랜잭션을 직접 제어합니다.)
- DELETE, TRUNCATE, DROP 차이점
- DELETE는 조건을 줄 수 있어 필요한 데이터만 삭제할 수 있으며, 트랜잭션이 지원돼 ROLLBACK이 가능합니다.
- TRUNCATE는 테이블의 모든 데이터를 조건 없이 빠르게 삭제하지만, 트랜잭션 처리나 트리거는 보장되지 않고 롤백도 대부분 불가능합니다.
- DROP은 테이블 자체를 삭제하는 명령어로 구조와 데이터 모두 제거되며 가장 파괴적인 명령입니다.
- Partitioning, Sharding
- Partitioning은 하나의 테이블을 물리적으로 분할하는 것으로, 같은 서버 내에서 처리됩니다. 예를 들어 날짜 기준으로 주문 데이터를 분할하면 검색 성능이 향상됩니다.
- Sharding은 데이터를 수평적 나눠 여러 서버 또는 DB 인스턴스에 분산 저장하는 방식으로, 대규모 시스템에서 DB 부하 분산 및 수평 확장을 위해 사용됩니다.
- 보통 대규모 시스템에서 데이터베이스의 부하를 분산시키기 위해 사용되며 분산 시스템 설계와 연계됩니다.
- Index란? 사용 왜 하는지?
- 데이터베이스에서 검색 속도를 향상시키기 위한 자료구조입니다.
- 자주 조회되는 컬럼이나 조건절에 많이 사용되는 컬럼에 인덱스를 걸면 테이블 전체를 스캔하지 않고 빠르게 결과를 찾을 수 있습니다.
- 다만 추가적인 저장 공간을 사용하고, 쓰기 성능에 영향을 줄 수 있어서 필요한 컬럼에만 적용하는 것이 중요합니다.
- 역인덱스란?
- 텍스트 기반 검색 시스템에서 사용되는 인덱스 구조로, 특정 단어가 포함된 문서들을 빠르게 찾기 위해 사용됩니다.
- 일반 인덱스는 키에 해당하는 컬럼 값을 기준으로 행을 찾는 방식인 반면, 역인덱스는 단어를 기준으로 해당 단어를 포함한 문서 목록을 저장합니다.
- 검색엔진이나 Elasticsearch 같은 시스템에서 사용되며 대용량 텍스트 검색 성능을 높이는 데 핵심 역할을 합니다.
- 정규화란?
- 데이터베이스 설계 시 중복을 줄이고 삽입, 수정, 삭제시 발생할 수 있는 이상을 방지하기 위해 테이블을 분해하는 과정입니다.
- 데이터의 일관성과 무결성을 높이고 저장 공간 낭비를 줄이는 것이 목적입니다.
- (1NF: 컬럼은 원자값만 갖는다, 2NF: 부분 종속 제거, 3NF: 이행적 종속 제거)
- 비정규화란?
- 정규화된 테이블을 다시 의도적으로 결합해 중복을 허용하는 설계 방식입니다. 주로 조회 성능 향상, 복잡한 조인의 제거, 실시간 처리 최적화가 필요한 상황에서 사용됩니다.
- 다만, 데이터의 중복으로 인해 일관성 유지나 수정 시 주의가 필요합니다.
- Transaction의 개념과 ACID 원칙
- 트랜잭션은 데이터베이스에서 논리적으로 하나의 작업 단위를 의미하며, 중간에 실패할 경우 전체 작업이 취소되어야 합니다.
- 이를 보장하기 위해 ACID 원칙이 적용되며, 원자성, 일관성, 격리성, 지속성을 만족해야 트랜잭션이 안정적으로 처리됩니다.
- (특히 격리성은 동시성 문제를 방지하는 핵심 요소입니다.)
- INNER JOIN, OUTER JOIN
- INNER JOIN은 양쪽 테이블에 매칭되는 행이 모두 있는 경우만 결과에 포함되며, OUTER JOIN은 한쪽 테이블 데이터를 기준으로 매칭이 없어도 결과에 포함됩니다.
- (주로 LEFT OUTER JOIN이 가장 많이 쓰이며, 데이터 누락 여부를 확인하거나 보조 테이블을 기준으로 할 때 유용합니다.)
- Join의 종류
- JOIN은 테이블 간의 관계를 기반으로 데이터를 합치는 방식이며, 가장 많이 쓰는 건 INNER JOIN과 LEFT OUTER JOIN이고, 필요에 따라 CROSS JOIN이나 SELF JOIN도 활용됩니다.
- (FULL OUTER JOIN은 MySQL에서는 직접 지원되지 않음)
- View란?
- View는 실제 데이터를 저장하지 않고, SELECT 쿼리 결과를 가상의 테이블처럼 보여주는 객체입니다.
- (기본적으로 데이터를 직접 저장하지는 않지만, 단순 View일 경우에는 View를 통해 데이터를 수정할 수 있고 그 결과는 실제 테이블에 반영됩니다. 다만, 조인이나 집계가 포함된 복잡한 View는 읽기 전용이며 수정이 불가능합니다.)
- RDBMS, NOSQL
- RDBMS는 테이블 기반의 관계형 데이터베이스로, 정형 데이터 저장, 복잡한 JOIN, 트랜잭션 처리(ACID)에 적합합니다.
- NoSQL은 스키마가 유연하고, 수평 확장에 강해 비정형 대용량 데이터, 실시간 처리, 분산 환경에 주로 사용됩니다.
- RDBMS는 MySQL, PostgreSQL, NoSQL은 MongoDB, Redis, Cassandra 등이 대표적입니다.