나만 알 수 없어서 만든 블로그
1-1. DATABASE (RDBMS/Non-RDBMS) 본문
RDBMS / Non-RDBMS
참고 링크: https://khj93.tistory.com/entry/Database-RDBMS%EC%99%80-NOSQL-%EC%B0%A8%EC%9D%B4%EC%A0%90
- Databse
일반적으로 컴퓨터 시스템에 전자 방식으로 저장된 구조화된 정보 또는 데이터의 체계적인 집합을 의미 - DBMS(DataBase Management System)
사용자와 데이터베이스 사이에서 사용자의 요구에 따라 정보를 생성해 주고 데이터베이스를 관리해 주는 소프트웨어 - SQL
- 관계형 데이터베이스 관리 시스템의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어
- 계형 데이터베이스 관리 시스템에서 자료의 검색과 관리, 데이터베이스 스키마 생성과 수정, 데이터베이스 객체 접근 조정 관리를 위해 고안
RDBMS (관계형 데이터베이스 관리 시스템)
- 기존의 RDBMS에서의 저장 방식은 SQL에 의해 저장되고 있으며 정해진 스키마에 따라 데이터를 저장해야 함
- 관계를 나타내기 위해 외래 키(foreign key)라는 것을 사용
- 외래 키를 이용한 테이블 간 JOIN 가능 ★
- 데이터가 자주 변경되는 시스템에 적합 ★
Non-RDBMS(NoSQL)
- 관계형 데이터베이스가 아닌 다른 형태의 데이터 저장 기술을 의미
- 빅데이터의 등장으로 인해 데이터와 트래픽이 기하급수적으로 증가함에 따라 일관성을 포기하되 비용을 고려하여 여러 대의 데이터에 분산하여 저장 (Scale-Out)
- 스키마에 맞추어 데이터를 관리해야 된다는 한계를 극복하고 수평적 확장성(Scale-out)을 쉽게 할 수 있다는 장점
- 정확한 데이터 구조를 알 수 없고 데이터가 변경 및 확장될 수 있는 경우에 적합
- 중복 데이터를 수정하려면 모든 컬렉션에서 수정해야 하므로 update가 많이 이루어지지 않는 시스템에 적합
- DB를 Scale-Out해야 하는 시스템에 적합
Key-Value Database |
데이터가 key, value의 쌍으로 저장 |
key는 value에 접근하기 위한 용도로 사용되며, 값은 어떠한 형태의 데이터라도 담을 수 있음 (이미지, 비디오 가능) | |
간단한 API를 제공하여 질의의 속도가 굉자히 빠른 편 | |
Redis, Riak, Amazon Dynamo DB | |
Document Database |
데이터가 Key와 Document (Value가 계층적인 형태)형태로 저장 |
Document는 객체와 유사하며, 하나의 단위로 취급 (여러 개의 테이블로 나눌 필요가 없음) | |
객체-관계 매핑 불필요 | |
검색 기능에 최적화 | |
사용이 번거롭고 쿼리가 SQL과는 다름 | |
질의의 결과가 JSON이나 xml 형태로 출력되어 전체적으로 사용 방법이 RDBMS와 다름 | |
Wide Column Database |
Column-family Model 기반 |
Key에서 필드를 결정하며, Key는 Row(키 값)와 Column-family, Column-name으로 구성 | |
연관된 데이터들은 Coulmn-family 안에 속하며, 각자 Column-name을 갖고 있음 | |
어트리뷰트가 계층적인 구조를 가지고 있다고 이해하는 것이 좋음 | |
저장된 데이터는 하나의 커다란 테이블로 표현 가능 | |
질의는 Row, Column-family, Column-name을 통해서 수행 | |
Hbase, Hypertable | |
Graph Database | 데이터를 Node와 Edge, Property와 함게 그래프 구조를 사용하여 데이터를 표현하고 저장 |
개체와 관계를 그래프로 표현한 것이므로 관계형 모델이라고 할 수 있음 | |
데이터 간의 관계 탐색의 키일 경우 적합 ex) 페이스북이나 트위터에서 같은 소셜 네트워크에서 친구의 친구를 찾는 질의,추천엔진, 패턴인식 |
|
Node4J |
RDBMS 와 Non-RDBMS의 장단점
RDBMS | Non-RDBMS | |
장점 | 명확한 데이터 구조 보장 | 유연하고 자유로운 데이터 구조 |
데이터를 중복 없이 한 번만 저장 | 언제든 저장된 데이터를 조정하고 새로운 필드 추가 가능 | |
데이터 분산에 용이하며 성능향상을 위해 Scale-up, Scale-out 가능 | ||
단점 | 관계 때문에 JOIN문으로 복잡한 쿼리 생성 | 데이터의 중복 발생 |
Scale-up만 지원 (비용 증가) | 중복된 데이터가 변경될 경우 모든 컬렉션에서 작업 수행 | |
유연하지 못한 데이터 구조 | 명확한 데이터 구조를 보장하지 못함 | |
스키마가 변경될 경우 번거롭고 어려움 | 데이터 구조 결정이 어려움 |
'개발 기본 지식' 카테고리의 다른 글
1.6 DATABASE (PL/SQL) (0) | 2022.03.24 |
---|---|
1-4. DATABASE (WHERE SELECT, EXISTS, BETWEEN, GROUP BY, HAVING, GROUPING, ROLLUP, RANK) (0) | 2022.03.24 |
1-3. DATABASE (JOIN 내부/외부, 연산자) (0) | 2022.03.24 |
1-2. DATABASE (표준 SQL 이해) (0) | 2022.03.24 |
00.교육커리큘럼 (0) | 2022.03.23 |