[배경]
데이터 베이스는 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 데이터베이스: 비정형 데이터 처리와 수평적 확장이 용이하지만, 데이터 무결성 관리가 약합니다.
데이터베이스 유형은 특정한 요구사항과 환경에 맞추어 선택할 수 있으며, 데이터의 성격과 시스템의 요구에 따라 적합한 데이터베이스를 사용하는 것이 중요합니다.
[출처 및 참조]
- 최범균의 JSP 2.3 웹 프로그래밍: 기초부터 중급까지
- https://www.oracle.com/kr/database/what-is-database/
- https://velog.io/@chappi/DB%EC%A0%95%EB%A6%AC%EB%8A%94-%ED%95%A0%EA%BB%80%EB%8D%B0-%ED%95%B5%EC%8B%AC%EB%A7%8C-%ED%95%A0%EA%BB%8D%EB%8B%88%EB%8B%A4.-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4%EB%9E%80
- https://hongong.hanbit.co.kr/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-databasedb-dbms-sql%EC%9D%98-%EA%B0%9C%EB%85%90/
'CS' 카테고리의 다른 글
[CS] 깨진 창문 이론과 소프트웨어 테스트 (0) | 2024.07.15 |
---|---|
[Web] 웹 서버 vs. WAS: 당신의 프로젝트에 맞는 서버는? (0) | 2024.07.03 |
[DB] DB 관리의 혁신: 복제 DB, DB엔진 , 쿼리 최적화의 통합 전략 (1) | 2024.07.02 |
[DB] 파티셔닝 vs 샤딩: 데이터베이스 성능을 높이는 최적의 선택은? (1) | 2024.07.01 |
[CS] 캐시(Cashe), 인메모리 데이터 저장소 Redis, 캐시메모리 개념정리 (0) | 2024.06.24 |