관계형 데이터 베이스 (SQL)
관계형 데이터 베이스 (SQL)
- 동일한 구조(릴레이션)의 관점에서 모든 데이터를 논리적으로 구성
- 선언적인 질의어를 통한 데이터 접근을 제공
- 응용 프로그램들은 데이터베이스 내의 레코드들의 어떠한 순서와도 무관하게 작성됨.
- 사용자는 원하는 데이터(what)만 명시하고, 어떻게 이 데이터를 찾을 것인가(how)는 명시할 필요가 없음.
- 관계 데이터 모델은 지금까지 제안된 데이터 모델들 중에서 가장 개념이 단순한 데이터 모델 입니다.
SQL의 특징
- 바탕이 되는 데이터 구조로서 간단한 테이블(릴레이션)을 사용
- 중첩된 복잡한 구조가 없음
- 집합 위주로 데이터를 처리
- 숙련되지 않은 사용자도 쉽게 이해할 수 있음
- 표준 데이터베이스 응용에 대해 좋은 성능을 보임
SQL 용어
- 릴레이션(relation) : 2차원의 테이블(스프레드 시트와 유사)
- 레코드(record) : 릴레이션의 각 행
- 튜플(tuple) : 레코드를 좀 더 공식적으로 부르는 용어 = 로우(row)
- 속성(attribute) : 릴레이션에서 이름을 가진 하나의 열 = 컬럼(column)
도메인(domain)
- 한 속성에 나타날 수 있는 값들의 집합
- 각 속성의 도메인의 값들은 원자값
- 프로그래밍 언어의 데이터 타입과 유사함
- 동일한 도메인이 여러 속성에서 사용될 수 있음
- 복잡 속성나 다치 애트리뷰트는 허용되지 않음
차수(degree)와 카디날리티(cardinality)
- 차수 : 한 릴레이션에 들어 있는 속성들의 수(필드 수)
- 유효한 릴레이션의 최소 차수는 1
- 속성이 1개이상 있어야 릴레이션(테이블)이 됩니다.
- 릴레이션의 차수는 자주 바뀌지 않음.
- 보통 테이블 스키마는 자주 못바꿉니다.
- 스키마 변경시 전체 로우에 반영되어야 하기 때문에 처리가 중단됩니다.
- 유효한 릴레이션의 최소 차수는 1
- 카디날리티 : 릴레이션의 튜플(로우 수)
- 유효한 릴레이션은 카디날리티 0을 가질 수 있음.
- 릴레이션의 카디날리티는 시간이 지남에 따라 계속해서 변함.
비관계형 데이터베이스 (NoSQL)
비관계형 데이터베이스 (NoSQL)
- NoSQL이라고도 부르며, Not Only SQL(SQL 뿐만이 아닌. 이라는 뜻)의 줄임말이라고 합니다.
- 이 말은 곧 SQL뿐만 아니라 다른 여러 장점을 가지고 있다는 소리입니다.
- 기존의 관계형 데이터베이스의 한계를 뛰어넘기 위해 만들어진 새로운 형태의 데이터베이스라서, 관계형 데이터베이스보다 더 융통성 있는 데이터 모델을 사용하며, 데이터의 저장 및 검색에 특화된 메커니즘을 제공합니다.
- NoSQL은 분산 환경에서의 데이터 처리를 더욱 빠르게 하기 위해 개발되었습니다.
NoSQL 특징
- 거대한 Map으로서 key-value 형식을 지원함.
- 관계형 db와 달리 PK,FK JOIN등 관계를 정의하지 않음.
- 스키마에 대한 정의가 없다.
NoSQL 종류
- 문서형(Document) 데이터베이스
- 데이터를 테이블이 아닌 문서처럼 저장하는 데이터베이스를 의미합니다.
- 많은 문서형 데이터베이스에서 JSON과 유사한 형식의 데이터를 문서화하여 저장합니다.
- 각각의 문서는 하나의 속성에 대한 데이터를 가지고 있고, 컬렉션이라고 하는 그룹으로 묶어서 관리한다.대표적인 문서형 데이터베이스에는 MongoDB 가 있습니다.
- Key-Value 타입
- 속성을 Key-Value의 쌍으로 나타내는 데이터를 배열의 형태로 저장합니다.
- 여기서 Key는 속성 이름을 뜻하고, Value는 속성에 연결된 데이터 값을 의미합니다.
- Redis, Dynamo 등이 대표적인 Key-Value 형식의 데이터베이스입니다.
- Wide-Column Store 데이터베이스
- 데이터베이스의 열(column)에 대한 데이터를 집중적으로 관리하는 데이터베이스입니다.
- 각 열에는 key-value 형식으로 데이터가 저장되고, 컬럼 패밀리(column families)라고 하는 열의 집합체 단위로 데이터를 처리할 수 있습니다.
- 하나의 행에 많은 열을 포함할 수 있어서 유연성을 높습니다.
- 데이터 처리에 필요한 열을 유연하게 선택할 수 있다는 점에서 규모가 큰 데이터 분석에 주로 사용되는 데이터베이스 형식입니다.
- 대표적인 wide-column 데이터베이스에는 Cassandra, HBase 가 있습니다.
- 그래프(Graph) 데이터베이스
- 자료구조의 그래프와 비슷한 형식으로 데이터 간의 관계를 구성하는 데이터베이스입니다.
- 노드(nodes)에 속성별(entities)로 데이터를 저장한다.각 노드간 관계는 선(edge)으로 표현한다.대표적인 그래프 데이터베이스에는 Neo4J, InfiniteGraph가 있습니다.
NoSQL 장점
- 대용량 데이터 처리를 하는데 효율적임.
- 읽기 작업보다 쓰기 작업이 더 빠르고 관계형 데이터베이스에 비해 쓰기와 읽기 성능이 빠름.
- 데이터 모델링이 유연함.
- 뛰어난 확장성으로 검색에 유리함.
- 최적화된 키 값 저장 기법을 사용하여 응답속도나 처리효율 등에서 성능이 뛰어남.
- 복잡한 데이터 구조를 표현할 수 있음.
NoSQL 단점
- 쿼리 처리시 데이터를 파싱 후 연산을 해야해서 큰 크기의 document를 다룰 때는 성능이 저하됨.