전공공부/데이터베이스 (Database)

[데이터베이스] 데이터베이스 요점 훑어보기

jooona 2021. 10. 29. 12:22
반응형

관계형 데이터베이스

 

관계형 데이터베이스: 데이터가 테이블에 저장되며, 각 테이블은 행과 열 (Tuple & Attribute)로 구성.

이러한 일련의 테이블을 정의한 것을 스키마(Schema)라고 부른다.

 

키(Key)

테이블에서 특정 행을 유일하게 식별할 수 있게 하는 특정 열 또는 여러 열의 모음. 보통 키 중 하나를 프라이머리 키(Primary Key)로 지정. --> 테이블 각 행에는 프라이머리 키 값이 반드시 있어야 하고, 유일해야 한다.

프라이머리 키 예시) 학생 테이블의 학번. 이름은 중복된 경우가 있을 수 있어 사용 불가.

외부 키를 이용하여 다른 테이블과 링크시키는 것이 가능. 모든 외부 키 값이 참조하는 테이블의 값으로 존재한다면, 그 데이터베이스는 참조 무결성 조건을 만족.

 

SQL

 

SQL은 관계형 데이터베이스를 조작하는 만국공통어.

 

예시)

SELECT name From Student;

SELECT name From Student WHERE grade > 80;

SELECT name, year From Student, Tutor WHERE Student.s_no = Tutor.t_no;

SELECT AVG(grade) FROM Student;

 

NoSQL

 

NoSQL은 SQL로 구현되는 관계형 모형에 부합하지 않는 데이터베이스를 의미. 그중 객체 데이터베이스와 키-값 데이터베이스에 대해 알아보자.

 

1. 객체 데이터베이스

데이터를 관계형 데이터베이스에서처럼 테이블에 저장하지 않고, 객체지향 프로그래밍에서와 같이 객체 모형으로 저장. 보통 계층적 구조를 지니고 SQL 대신 API를 통한 함수 호출을 통해 데이터를 관리.

 

장점: 객체 모형과 객체 데이터베이스 스키마 사이에서 일관성을 유지할 수 있음. (객체 모형 그대로 사용하면 되기 때문) 속도 면에서도 유리할 수 있음. (계층 구조 덕분에 노드를 따라가며 특정 데이터 원소에 빠르게 액세스 가능)

 

단점: 데이터 속성을 바탕으로 한 질의에는 비효율적.

 

2. 키-값 데이터베이스

키-값 데이터베이스는 키를 고유한 식별자로 사용하는 키-값 쌍의 집합으로 데이터를 저장

 

SQL의 유연성을 포기하고 확장성, 신뢰성을 증가. (관계 모형에서 임의적으로 결합할 수 있게 하는 유연성 때문에 성능이 제한되는 문제를 해결) 수평적으로 확장을 하기 때문에 서버만 추가해주면 계속적인 확장이 가능.

 

장점: 성능, 특히 읽기 성능의 최적화.

 

단점: 비정규화와 중복에 따른 데이터 일관성 및 무결성 유지의 어려움.

 

사진 출처: AWS (https://aws.amazon.com/ko/nosql/key-value/)

 

트랜잭션

 

트랜잭션이란 한 단위를 이루는 일련의 연관된 데이터베이스 조작을 의미. 한 트랜잭션에 속하는 작업 중 하나라도 실패하면 트랜잭션 전체가 실패한 것으로 간주하여 데이터베이스를 전부 원래대로 되돌려 놓는다(RollBack). 반대로 모든 작업이 성공적으로 처리되면 모든 변경 내용을 한꺼번에 반영시킨다(Commit). 데이터 무결성을 위해 가장 좋은 방법으로 사용.

 

트랜잭션의 네 가지 특성

1. 원자성(Atomicity): 트랜잭션에 포함되는 모든 작업이 성공적으로 처리되지 않으면 트랜잭션에 있는 어떤 작업도 처리되지 않아야 한다.

2. 일관성(Consistency): 트랜잭션이 시작되기 전과 종료된 후 데이터베이스가 올바르고 일관된 상태가 되도록 처리되어야 한다.

3. 고립성(Isolation): 한 트랜잭션에서 데이터베이스를 변경한 내용은 트랜잭션이 커밋될 때까지 다른 질의나 트랜잭션으로부터 고립되어야 한다.

4. 영속성(Durability): 일단 커밋이 되고 나면 트랜잭션에 의해 변경된 내용은 영구적이어야 한다.

 

트랜잭션에 대해 조금 더 자세한 내용은 아래 링크에서.

https://jooona.tistory.com/180

 

분산 데이터베이스

 

데이터가 네트워크로 연결된 여러 위치에 저장. 분산 데이터베이스에서는 중복성과 지연 시간 감소 및 상황에 따른 비용 절감과 같은 장점이 존재.

 

CAP 정리: 데이터베이스는 다음 세 가지 속성 중 두 가지만 만족할 수 있다.

1. 일관성 (Consistency): 모든 읽기 작업에서는 가장 최근에 쓰여진 것을 반환한다.

2. 접근성 (Accessibility): 모든 요청에 대해 응답이 따른다.

3. 구분성 (Partitionability): 시스템을 노드로 구분할 수 있으며 네트워크 상의 노드 사이에서 데이터가 유실되더라도 시스템은 계속 제 기능을 한다.

 

 

 

내용 참고: 프로그래밍 면접 이렇게 준비한다 (존 몽건, 노아 킨들러, 에릭 기게리)

반응형