본문 바로가기

CS

[DB] 데이터 베이스의 개념과 각각의 특징

[배경]

 데이터 베이스는 IT에 대한 관심이 없어도 한번쯤은 들어봤고 다른 분야에서도 보편적으로 사용하는 용어가 되었습니다. 우리의 삶이 데이터베이스와 직/간접적으로 연관되어 있다고 생각해도 무방합니다. 데이터베이스가 대체 무엇이고 어떤 종류가 있기에 여기저기 모든 것에 연관되어 있고 비전공자까지 관심을 가지는지 데이터베이스의 개념과 각각의 특징, 장단점에 대해 알아보겠습니다.

 


 

[내용]

1. 데이터 베이스의 정의

 데이터 베이스란 어떤 특정한 조직에서 여러 명의 사용자 또는 응용 시스템들이 공유하고 동시에 접근하여 사용할 수 있도록 구조적으로 통합하여 저장한 운영 데이터의 집합입니다.

 

2. 데이터 베이스의 특징

위의 정의를 지키기위해 데이터 베이스는 다음의 특징을 갖게 됩니다.

  • query(질의)에 대하여 실시간 처리로 응답해야 합니다. ( 실시간 처리 )
  • DB는 삽입, 삭제, 갱신에 의해 계속적으로 변하고 정확한 데이터를 유지할 수 있습니다. ( 변화 )
  • 자신이 원하는 데이터를 동시 공유할 수 있습니다. ( 공유성 )
  • 데이터의 위치나 주소가 아닌, 원하는 데이터의 내용에 따라 참조가 가능합니다. ( 내용에 따른 참조 )

정리하자면, DB는 실시간으로 모두가 공유하는 데이터를 내용에 따라 참조하여 변화시킬 수 있어야 합니다.

 

3. 데이터 베이스의 종류와 각각의 특징

 1) 관계형 데이터베이스 (RDBMS)

- 특징 :  데이터를 테이블(표) 형태로 저장하며, 테이블 간의 관계를 정의합니다. SQL(Structured Query Language)을 사용하여 데이터를 관리합니다.

 

- 장점 : 강력한 트랜잭션 관리와 데이터 무결성 보장됩니다.

- 단점 : 수평적 확장이 어렵고 스키마 변경이 어렵습니다.

 

 

 2) NoSQL 데이터베이스

 

- 특징 :  비정형 데이터 또는 반정형 데이터를 처리하며, 스키마가 유연합니다. 데이터 모델에 따라 키-값 저장소, 문서 저장소, 열 지향 저장소, 그래프 데이터베이스 등으로 분류됩니다.

 

- 장점 : 수평적 확장이 용이하며 대규모 처리에 적합합니다.

- 단점 : 무결성 보장이 약할 수 있으며 SQL같은 표준질의어가 부족합니다.

 

 3) RDB(SQL) VS NoSQL 비교

항목 RDB(SQL)   NoSQL
데이터 저장 모델 테이블 Json document / key-value / 그래프 등
개발 목적 데이터 중복 감소 애자일 / 확장가능성 / 수정가능성
예시 Oracle, MySQL, PostgreSQL 등 MongoDB, DynamoDB 등
장점 - 명확한 데이터 구조 보장
- 데이터 중복 없이 한 번만 저장(무결성)
- 데이터 중복이 없어서 데이터 update 용이
- 유연하고 자유로운 데이터 구조
- 새로운 필드 추가 자유로움
- 수평적 확장(Scaleout) 용이
단점 - 시스템이 커지면 Join문이 많은 복잡한 query
- 수평적 확장이 까다로워 비용이 큰 수직적 확장(Scale up)이 주로 사용 됨.
- 데이터 중복 발생 가능
- 중복 데이터가 많기 때문에 데이터 변경 시 모든 컬렉션에서 수정 필요
- 명확한 데이터 구조 보장x
사용 - 데이터 구조가 변경될 여지 없이 명확한 경우
- 데이터 update가 잦은 시스템
- 정확한 데이터 구조가 정해지지 않은 경우
- Update가 자주 이뤼지지 않는 경우
- 데이터 양이 매우 많은 경우

 

 

4. 분산 데이터 베이스의 CAP 이론

1) CAP 이론이란??

 - CAP는 Consistency(일관성), Availability(가용성), Partition Tolerance(분할 허용성)의 약자입니다. CAP 이론은 “적절한 응답 시간 내 세 가지 속성을 모두 만족시키는 분산 시스템을 구성할 수 없다”는 이론입니다.

 

일관성(Consistency)

- 모든 노드가 데이터를 일관되게 볼 수 있는 시스템 속성을 말합니다. 사용자가 여러 노드 중 어떤 노드를 선택하더라도 해당 데이터일관하게 보이는 것을 의미합니다. 즉, 모든 클라이언트(여기서는 사용자)는 어느 노드에 연결하든 동일한 데이터를 동시에 볼 수 있습니다.

가용성(Availability)

 - 모든 요청은 성공 혹은 실패 여부와 무관하게 응답을 받습니다. 다시 말해, 모든 요청은 유효한 데이터를 읽거나 쓸 수 있어야 하며, 이는 네트워크 인프라에 실패가 발생하더라도 보장되어야 합니다.

분할 허용성(Partition tolerance)

 -  네트워크 분할이 발생하더라도 시스템은 계속 작동해야 합니다. 네트워크 분할은 일부 노드가 다른 노드와 통신하지 못하게 하는 네트워크 오류를 의미합니다.

 

 그래서 다시 말하자면 CAP 이론이란 분산 데이터베이스 시스템은 분할이 생겼을 때 일관성과 가용성 중 하나를 희생해야 한다는 것을 의미합니다. 분산 데이터베이스 시스템은 반드시 네트워크 장애나 여러 이유들로 인해 장애가 발생할 수 밖에 없습니다. 그러므로 분산 데이터베이스 시스템은 반드시 분할 허용성을 가지고 있어야 하며, 일관성가용성 중 하나를 선택해야만 합니다.
예를 들어 두 노드로 이루어진 분산 시스템에서 분할이 생겼을 때 데이터의 일관성을 보장하기란 불가능합니다. 그러므로 분할이 생겼더라도 정상적으로 요청을 처리해 일관성을 희생하고 가용성을 높이던지, 잠시 요청 처리를 중단하고 중단된 노드가 재실행될 때까지 기다려 가용성을 희생하고 일관성을 지키는 방법 중 하나를 선택해야 합니다. 따라서 NoSQL 데이터베이스는 CP 시스템과 AP 시스템으로 분류된다. CA 시스템은 일반적으로 하나의 노드에서 동작하는 모놀리식 데이터베이스 시스템을 의미합니다.

 


[결론]

데이터 베이스에 대해 알아보았는데, 데이터 베이스란 어떤 특정한 조직에서 여러 명의 사용자 또는 응용 시스템들이 공유하고 동시에 접근하여 사용할 수 있도록 구조적으로 통합하여 저장한 운영 데이터의 집합입니다. 그래서 종류별 데이터 베이스의 특징은 다음과 같습니다.

 

  • 관계형 데이터베이스 (RDBMS): 구조적 데이터와 복잡한 쿼리에 강하지만, 확장성이 떨어집니다.
  • NoSQL 데이터베이스: 비정형 데이터 처리와 수평적 확장이 용이하지만, 데이터 무결성 관리가 약합니다.

데이터베이스 유형은 특정한 요구사항과 환경에 맞추어 선택할 수 있으며, 데이터의 성격과 시스템의 요구에 따라 적합한 데이터베이스를 사용하는 것이 중요합니다.

 

 


[출처 및 참조]