⚡대표적인 데이터 베이스
- RDB
- NoSQL
⚡RDB
:Relational DataBase (관계형 데이터베이스)
- 관계형 데이터 모델을 기본으로 두고 모든 데이터를 2차원 테이블 형태로 표현 하는 데이터 베이스 (쉽게 말해 엑셀 형태.)
- 서로 다른 테이블이 서로 관계를 맺고 모여있는 집합체.
- 관계를 나타내기 위해서 키(key)
- 각 테이블의 행들이 서로 연결되는 관계 (1:1, 1:N, N:M) 를 가질수 있다.
- 논리적 구성
- Relation (릴레이션) Entity (개체)
- Attribute (속성) 과 Tuple (튜플) 로 구성 되어 있다.
- 논리 데이터 모델에서는 Entity, 관계형 데이터 모델에서는 Tabel, 관계형 모델에서는 Relation 이라고 불림.
- Attribute (속성)
- Entity를 구성하는 논리적 단위.
- 데이터 항목 , 데이터 필드를 의미하며 테이블에서는 하나의 컬럼에 대응 된다.
- Tuple (튜플)
- 테이블에 있는 각각의 행을 의미한다.
- 파일 구조에서는 레코드와 같은 의미로 쓰인다.
- Domain (도메인)
- 하나의 속성이 가질수 있는 모든 값의 집합을 말한다.
- Relation (릴레이션) Entity (개체)
- RDB 종류
- Oracle, MySQL, MSSQL, MariaDB 등등
- 참조 사이트
⚡NoSQL (Not Only SQL)
- RDBMS (관계형 데이터) 베이스의 한계를 극복하기 위한 데이터 저장소의 새로운 형태이다.
릴레이션이 아니므로 고정된 스키마가 없고 조인이 힘들며, 빅데이터를 다룰때 기존 RDBMS로 트래픽을 감당하기
어려워졌고, 이를 해결하기 위해서 NoSQL이 탄생했다. - 특징
- key-velue 형식을 지원.
- 대용량 데이터를 저장.
- 읽기 작업보다 쓰기 작업이 더 빠르며, 일반적으로 RDBMS에 비하여 쓰기와 읽기 성능이 빠르다.
- Schema-less
- 데이터간의 관계를 정의하지 않기 때문에 Table간의 Join 불가능.
- CAP
- CAP 이론은 네트워크 공유 데이터 시스템을 설계할때 시스템 설계자가 절충점을 인식하도록 하는데 사용된다.
개발 요구 사항에 따라 NoSQL Database를 선택하는 기본 사항이기 때문에 CAP 이론을 이해하는 것은 매우 중요하다.
CAP는 분산 시스템에 대해 유사항 유형의 로직을 적용한다. 즉 분산 시스템은 다음 3개의 특성중 원하는 2개만 제공 할수있다. 분산형 구조는 일관성(Consistency), 가용성(Availability), 파티션 허용(Partitioning Tolerance)의 3가지 특징을 가지고 있다.- 일관성(Consistency)
- 일관성이란, 어떤 노드에 연결되었는지와 무관하게 모든 클라이언트가 동시에 동일 데이터를 볼수 있음을 의미한다. 이러한 상황이 발생하려면, 데이터가 하나의 노드에 기록될때마다 이 데이터는 쓰기가 '성공'으로 간주되기 전에 시스템의 다른 모든 노드로 즉시 전달되거나 복제되어야 한다.
- 가용성(Availability)
- 가용성이란 하나 이상의 노드가 작동 중지된 경우에도 데이터를 요청하는 클라이언트가 응답을 받음을 의미한다. 이를 다른 방법으로 설명해 보면, 분산 시스템의 모든 작업 중인 노드는 예외 없이 모든 요청에 대해 유효한 응답을 리턴한다.
- 파티션 허용(Partitioning Tolerance)
- 파티션이란 분산 시스템 내의 통신 단절, 즉 두 노드 간의 연결이 유실되거나 일시적으로 지연된 상태 이다. 파티션 허용이란 시스템의 노드 간에 다수의 통신 단절에도 불구하고 클러스터가 계속해서 작동해야 함을 의미한다.
- 일관성(Consistency)
- CAP 이론은 네트워크 공유 데이터 시스템을 설계할때 시스템 설계자가 절충점을 인식하도록 하는데 사용된다.
- NoSQL 데이터베이스 유형
- 현재, NoSQL 데이터베이스는 두개의 CAP 특성을 기반으로 분류가 된다.
- CP 데이터 베이스
- CP 데이터베이스는 가용성을 희생하면서 일관성과 파티션 허용을 제공합니다. 두 노드 간에 파티션이 발생하면, 시스템은 파티션이 해결될 때까지 일관되지 않은 노드를 종료(즉, 사용 불가능하게)해야 한다.
- AP 데이터베이스
- AP 데이터베이스는 일관성을 희생하면서 가용성과 파티션 허용을 제공한다. 파티션이 발생하면 모든 노드를 사용할 수 있지만, 파티션의 잘못된 끝에 있는 노드는 다른 데이터보다 이전 버전의 데이터를 리턴할 수 있다. (파티션이 해결되면, AP 데이터베이스는 일반적으로 시스템의 모든 불일치를 복구하기 위해 노드를 재동기화한다.)
- CA 데이터베이스
- CA 데이터베이스는 모든 노드에서 일관성과 가용성을 제공한다. 그러나 시스템에 있는 두 노드 사이에 파티션이 있는 경우 이를 수행할 수 없으므로, 결함 허용을 제공할 수 없다.
- NoSQL의 종류
- Key-value
- 가장 기본적인 패턴으로 키와 값이 하나의 묶음으로 저장되는 단순한 구조의 데이터 베이스이다.
- key는 유니크한 고유의 값으로 유지되어야 하며, key 안에서 (Column, Value) 형태로 된 여러개의 필드를 가진다.
- 값에 모든 데이터 타입을 허용한다. 개발시 데이터를 넣을때 검증 로직 구현에 신경을 써야한다.
- Redis, Riak, Oracle Berkely, AWS DynamoDB 등이 있다.
- Document
- key-value 에서 확장된 형태이다. XML, JSON 등 계층적 트리 형태의 데이터 저장방식의 데이터 베이스이다.
- 관계형 데이터 베이스에서 여러개 테이블 데이터를 하나의 Document에 모아둘수 있다.
(조회시, 한번의 조회로 필요한 데이터를 가져올 수있다. ) - Document 내에 Field를 정의한다 (key-value)
- 데이터를 여러 서버에 분산 저장이 가능하고, 복제와 회복이 가능한 형태이다. 장애가 발생하더라도 대응에 유리 하다.
- MongoDB, Azure Cosmos DB, CouchDB, MarkLogic, OrientDB 등이 있다.
- Wide Column
- key-value와 유사한 형태 이며, 내부적으로 key를 기준으로 정렬이 되서 저장되는 차이가 있다. NoSQL의 경우 정렬을 제공하지 않기 때문에 다영한 방법으로 활용이 가능하다.
- 행마다 key-value를 저장할떄 각각 다른값, 다른수의 스키마를 가질수 있다.
- Cassandra, HBase, Google BigTable, Vertica 등이 있다.
- Graph
- Document 기반 데이터 모델의 하위 범주로 생각할수 있지만, 개별 문서 간의 관계를 강조해 문서 모델 별도의 레이어가 추가된다는 점이 다른 데이터 베이스 이다.
- 데이터를 노드로 표현하고, 노드사이의 관계를 엣지로 표현 했다.
- Neo4j, Blazegraph, OrientDB 등이 있다.
- Key-value
- NoSQL의 경우 언제 사용해야 하는가?
- 정확한 데이터 구조를 알 수 없거나 변경 / 확장 될 수 있는 경우.
- 읽기 처리를 자주 하지만, 데이터를 자주 변경하지 않는 경우.
- 데이터 베이스를 수평으로 확장해야 하는 경우.
(막대한 양의 데이터를 다루는 경우)
⚡BUT
- 위의 기본적인 사용 방법의 경우, 여러 사이트에 더 자세하게 설명한 부분이 있을것이다.
하지만 언제 사용해야 하는가에 대한 질문의 경우 자신의 프로젝트 경험을 기반으로 한번 생각해볼 필요성이 있다고 생각한다.
하지만 특별히 NoSQL을 사용해야하는 이유를 찾지 못했다면 그냥 SQL을 사용하는것을 추천한다
반응형
'Java' 카테고리의 다른 글
[JPA] QueryDsl에서 Date Type 사용 방법 정리 (0) | 2023.02.05 |
---|---|
[JAVA] Tomcat error page 호출 관련 내용 정리 (0) | 2022.12.19 |
💀 디자인 패턴 및 리팩터링 개선 작업 내용 정리 (0) | 2022.11.27 |
Java 19 주요 내용 정리 (0) | 2022.09.20 |
[JAVA] 반복문 기능 및 성능 비교 정리 (0) | 2022.07.29 |