- 데이터베이스 특징
- 데이터 무결성이란?
- 데이터베이스의 Key와 특징
- 인덱스(Index)
- 트랜잭션과 특징
1. 데이터베이스 특징
Question
데이터베이스와 데이터베이스의 특징에 대해 설명해주세요
데이터베이스란 공유 목적으로 데이터를 통합하고 체계적으로 관리하는 데이터의 집합입니다. 데이터베이스는 실시간 처리가 가능하고, 지속적인 변화에도 데이터를 유지하며, 데이터를 동시에 공유하고, 원하는 데이터의 내용에 따라 참조가 가능해야하는 특징이 있습니다.
2. 데이터 무결성이란?
Question
데이터 무결성에 대해 설명해주세요
데이터 무결성이란 데이터가 정확하고 일관성있게 유지되는것으로 데이터에 결함이 없는 상태를 의미합니다.
→ 무결성의 종류에 대해 이야기해주세요
무결성에는 참조 무결성, 개체 무결성, 도메인 무결성, 고유 무결성, NULL 무결성 등이 있습니다.
→ 각 무결성에 대해 설명해주세요
참조 무결성이란 참조 관계에 있는 두 테이블의 데이터가 항상 일관된 값을 갖도록 유지되는 것을 의미합니다. 개체 무결성이란 각 테이블의 기본키는 NULL이나 중복값을 가질 수 없다는 특징입니다. 도메인 무결성은 각 속성의 값은 정의된 도메인에 속한 값이여야 한다는 의미입니다. 고유 무결성이란 특정 속성에 대해 각 튜플의 값들이 서로 달라야하는 규정입니다. NULL 무결성이란 특정 속성값이 NULL이 될 수 없는 규정입니다.
3. 데이터베이스의 Key와 특징
Question
데이터베이스의 Key와 특징에 대해 설명해주세요
데이터베이스의 Key는 Primary key, Foreign Key, Unique Key 등이 있습니다.
Primary key는 주 식별자키로 모든 데이터를 식별하는 컬럼입니다. 테이블 전체에 대한 유일성을 보장하며, 중복이나 Null값이 불가능한 특징이 있습니다.
Foreign key는 테이블간의 관계를 의미하는 참조키입니다. 두 테이블간 종속관계를 표현하는 키로 서로 참조할 수 있도록 관계를 맺어주는 키 입니다.
Unique key는 기본키처럼 중복값을 허용하지는 않지만 NULL을 허용하는 키 입니다. 기본키와 다르게 한 테이블에 여러개의 Unique key를 가질 수 있습니다.
4. 인덱스(Index)
Question
인덱스에 대해서 설명해주세요.
데이터베이스와 같은 큰 데이터 집합에서 레코드를 찾기 쉽게 하기 위해 사용하는 기능입니다. 주로 검색 성능 향상을 위해 사용합니다.
→ 인덱스의 장점과 단점에 대해 설명해주세요
인덱스를 사용하면 빠른 검색이 가능해 Select, Delete, Update시 작업 성능이 향상됩니다. 하지만 추가적인 저장공간이 필요하다는 단점이 있습니다.
→ 어떤 컬럼을 인덱스로 지정해야 할까요?
검색 쿼리가 자주 사용되는 컬럼이나 테이블 크기가 크거나 레코드 수가 많은 데이터베이스에 인덱스를 생성합니다.
5. 트랜잭션과 특징
Question
트랜잭션과 트랜잭션의 특징에 대해 설명해주세요.
트랜잭션이란 데이터베이스 일관성 유지를 위해 여러 작업을 하나의 단위로 묶는것입니다. 트랜잭션의 주요 속성으로는 원자성, 일관성, 격리성, 영속성이 있습니다.
원자성은 트랜잭션 내 작업은 모두 성공하거나 실패해야함을 의미합니다. 일관성은 트랜잭션 완료 후 데이터베이스가 일관된 상태를 유지해야 하는 것을 의미합니다. 격리성은 각 트랜잭션은 서로 영향을 주지 않아야 함을 의미합니다. 영속성은 트랜잭션이 성공적으로 완료되면 결과가 영구적으로 저장되어야 함을 의미합니다.
Question
기본키의 타입을 UUID와 Long 타입으로 설정했을 때 인덱스에 미치는 영향
UUID는 16바이트이고, Long은 8바이트입니다. UUID가 Long보다 크기 때문에 인덱스에 더 많은 저장 공간을 필요로 하고, 이는 메모리 및 디스크 I/O에 영향을 미칩니다. 인덱스의 크기가 크면, 더 많은 메모리와 디스크 공간을 사용하게 되고, 이는 쿼리 실행 시 불러오는 데이터 양에 영향을 미쳐 캐시 효율성이 떨어질 수 있습니다. UUID는 데이터가 분포되어 저장되기 때문에 인덱스가 비효율적으로 사용될 수 있어, 검색 속도가 느려지는 반면, Long은 일반적으로 순차적으로 생성되기 때문에 인덱스가 더 연속적이고 효율적으로 활용돼 검색 속도를 높이는데 유리합니다.