일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Eclipse
- 람다식
- Flex Box 기본
- spring
- node.js
- 이클립스
- SQL 연산자
- REACT
- SQL 명령어
- 스프링
- Flexbox Froggy
- 자바 스프링
- 타입
- java설치
- 오산대맛집
- HTML5
- 플랙스박스기본
- numpy
- ubuntu
- SQL
- 리액트
- 자바스프링
- Hooks
- 환경설정
- 객체지향프로그래밍
- java spring
- spring 환경설정
- 노마드코더
- 관계형데이터베이스
- SQL 문제
- Today
- Total
이것저것
DBMS와 RDBMS, NoSQL이란 본문
DBMS
DBMS는 DataBase Management System의 약자로 데이터베이스를 관리하는 시스템이다.
다수의 사용자들이 데이터베이스 내의 데이터를 접근할 수 있도록 해주는 소프트웨어 도구의 집합이다.
DBMS는 사용자 또는 다른 프로그램의 요구를 처리하고 적절히 응답하여 데이터를 사용할 수 있도록 해준다.
DBMS는 데이터를 계층 또는 탐색 형식으로 저장한다. 파일 시스템을 사용해 저장하기 때문에 테이블 간에는 아무런 관계가 없다.
Sybase, dbase, Microsoft Access 등이 있다.
RDB
관계형 데이터 모델에 기초를 둔 데이터 베이스이다.
모든 데이터를 2차원의 테이블 형태로 표현한다.
RDBMS
RDBMS는 Relational DataBase Management Sysytem의 약자로 관계형 모델을 기반으로 하는 DBMS 유형이다.
RDB를 생성하고 수정하고 관리할 수 있는 소프트웨어이다.
RDBMS의 테이블은 서로 연관되어 있어 일반 DBMS보다 효율적으로 데이터를 저장, 구성 및 관리할 수 있다.
- 관계형 데이터베이스는 다른 테이블과의 관계를 맺고 모여있는 집합체이다.
- 아래의 표에서 보면 형광색으로 된 학번은 외래키(foregin key)로 두 테이블 간의 Join이 가능하게 할 수 있다.
학번 | 이름 | 전화번호 |
192012 | 김미미 | 010-0000-3333 |
212233 | 김미미 | 010-2222-5555 |
학과 | 학년 | 학번 |
정보통신 | 1 | 212233 |
컴퓨터 | 3 | 203243 |
현재 사용되는 대부분의 데이터베이스는 관계형 데이터베이스 모델(RDBMS)을 기반으로 한다.
MSSQL, MySQL, Oracle을 예로 들 수 있다.
장점
- 정해진 스키마에 따라 데이터를 저장하여야 하므로 명확한 데이터 구조를 보장하고 있다.
- 관계는 각 데이터를 중복 없이 한 번만 저장할 수 있다.
단점
- 테이블이 서로 관계를 맺고 있어 시스템이 커질 경우 Join문이 많은 복잡한 쿼리가 만들어질 수 있다.
- 성능 향상을 위해서는 서버의 성능을 향상해야 하는 Scale-up만을 지원하기 때문에 비용이 기하급수적으로 늘어날 수 있다.
- 스키마로 인해 데이터가 유연하지 않다. 스키마 변경 시 번거롭고 어렵다.
NoSQL
NoSQL은 (Not only SQL)의 약자로 RDB형태의 데이터베이스가 아닌 다른 형태의 데이터 저장 기술을 의미한다.
RDBMS는 데이터와 트래픽이 늘어날수록 성능을 향상시키기 위해서 비용이 늘어나는 단점 때문에 데이터의 일관성을 포기하되 비용을 고려하여 여러 개의 데이터에 분산하여 저장하는 목표로 생긴 것이 NoSQL이다.
1. Key-Value DataBase
Key&Value라고 많이 말하며 Key와 Value의 쌍으로 저장된다.
Key는 Value에 접근하기 위한 용도로 사용되고, 값은 어떠한 형태의 데이터라도 담을 수 있다. 심지어 이미지나 비디오도 가능하다. 또한 간단한 API를 제공하는 만큼 질의의 속도가 굉장히 빠른 편이다.
Key-Value 모델로는 Redis, Riak, Amazon Dynamo DB 등이 있다.
2. Document DataBase
Key와 Document의 형태로 저장된다.
Key-Value와 다른 점은 Value가 계층적인 형태인 Document로 저장된다는 것이다. 객체지향에서의 객체와 유사하며, 하나의 단위로 취급되어 저장된다.
Key-Value 모델과 동일하게 검색에 최적화되어있다. 단점은 상용이 번거롭고 쿼리가 SQL과는 다르다는 점이다.
Document 모델에서는 질의의 결과가 JSON이나 xml형태로 출력된다.
Document 모델로는 MongoDB, CouthDB 등이 있다.
3. Wide Column DataBase
Column-family Model 기반의 DataBase로 다른 모델들은 Key-Value 값을 이용해 필드를 결정한다면, 이 모델은 키에서 필드를 결정한다. 키는 Row와 Column-family, Column-name을 가진다.
연관된 데이터들은 같은 Column-family 안에 속해 있고, 각자의 Column-name을 가진다.
관계형 모델로 설명하자면 어트리뷰트가 계층적인 구조를 가지고 있는 셈이다. 저장된 데이터는 하나의 커다란 테이블로 표현이 가능하고, 질의는 Row, Column-family, Column-name을 통해 수행된다.
Column DataBase 모델로는 HBase, Hypertable 등이 있다.
4. Graph DataBase
Graph DataBase는 Node와 Edge, Property와 함께 그래프 구조를 사용하여 데이터를 표현하고 저장하는 DataBase이다.
개체와 관계를 그래프 형태로 표현한 것이므로 관계형 모델이라고 할 수 있으며, 데이터 간의 관계가 키일 경우에 적합하다. 예를 들면 페이스북이나 인스타와 같이 SNS에서 나와 연관된 친구를 찾아주는 것에 적합하다. 연관된 데이터를 추천해주는 추천 엔진이나 패턴 인식 등의 DataBase로도 적합하다.
Graph DataBase 모델로는 Neo4J가 있다.
장점
- 스키마가 없기 때문에 유연하고 자유로운 데이터 구조를 가질 수 있다.
- 데이터 분산이 용이하고 성능 향상을 위한 Scale-up 뿐만이 아닌 Scale-out(수평적 확장성) 또한 가능하다.
단점
- 데이터 중복이 발생할 수 있고 중복 데이터가 변경될 경우 모든 컬렉션에서 수정을 해야 한다.
- 스키마가 존재하지 않기 때문에 명확한 데이터 구조를 보장하지 않고 데이터 구조 결정이 어려울 수 있다.
'Database' 카테고리의 다른 글
[SQL] 여러문제 (0) | 2020.06.04 |
---|---|
[SQL]서브쿼리문 (0) | 2020.06.03 |
[SQL]JOIN (0) | 2020.06.02 |
[SQL] UNION, 연산자, ROLLUP, GROUPING (0) | 2020.06.01 |
[SQL]데이터 조회, 연산자 (0) | 2020.05.29 |