데이터베이스는 2가지 종류가 있다.
관계형 데이터베이스는 데이터를 테이블 형태로 저장한다.(엑셀 표에 데이터를 저장하는 것과 동일)
각 데이터 항목은 행(row)에 저장되고 데이터 속성은 열(calumn)에 저장된다.
열(column) : 필드(field) 라고도 부르며, 항목의 속성(명칭)을 나타낸다. 필드 마다 각각 정수, 텍스트 같은 데이터 유형을 정할 수 있다.
행(row) : 레코드(record) 라고도 부르며, 각 데이터 항목을 저장한다.
스키마(schema) : 필드는 데이터 유형뿐만 아니라 제약사항도 지정할 수 있는데 이러한 제약사항을 스키마라고 부른다. 예를들어 필드는 중복 값을 해당 행에 저장할 수 없다거나, 반드시 값을 가져야 한다(not null)는 조건 등을 걸 수 있다.
테이블을 분리시키고 각 테이블 간 행과 행 사이에 관계를 형성
Structured Query Language.
SQL은 RDBMS에서 사용하는 프로그래밍 언어라고 보면 된다. SQL을 통해 RDBMS에서 데이터를 검색하고, 추가하고, 업데이트하고, 삭제하는 작업 등 데이터를 관리한다.
데이터베이스상태를 변화시키기 해서 수행하는 작업의 단위
ACID(원자성, 일관성, 고립성, 지속성)는 데이터베이스 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 성질
원자성 (Atomicity) : 원자성이란 트랜잭션이 수행하는 연산들을 모두 정상적으로 처리하거나 모두 처리하지 않아야 한다는 all-or-nothing 방식을 의미한다.
일관성 (Consistency) : 일관성은 트랜잭션이 성공적으로 수행된 이후에도 데이터베이스의 데이터는 일관된 상태를 유지해야 한다는 의미이다.
격리성 (Isolation) : 격리성은 하나의 트랜잭션이 완료될 때까지 다른 트랜잭션이 간섭하지 못하도록 하여 각각의 트랜잭션이 독립적으로 수행되어야 한다는 의미이다.
지속성 (Durability) : 지속성은 트랜잭션이 성공적으로 완료된 이후에 데이터베이스의 데이터들이 영구적으로 보존되어야 한다는 의미이다.
기존 관계형 DBMS가 갖고 있는 특성뿐만 아니라, 다른 특성들을 부가적으로 지원
기존의 관계형 데이터베이스보다 더 융통성있는 데이터 모델을 사용하고 데이터의 저장 및 검색을 위한 특화된 메커니즘을 제공
단순 검색 및 추가작업에 있어서 매우 최적화된 키 값 저장 기법을 사용하여 응답속도나 처리효율 등에 있어서 매우 뛰어난 성능을 나타냄
1) 관계형 모델을 사용하지 않으며 테이블 간 연결해서 조회할 수 있는 조인 기능이 없음
2) 데이터 조회를 위해 직접 프로그래밍하는 등의 비 SQL 인터페이스를 통한 데이터 접근
3) 대부분 여러 데이터베이스 서버를 묶어서(클러스터링) 하나의 데이터베이스를 구성
4) 관계형 데이터베이스에서는 지원하는 데이터 처리 완결성(Transaction, ACID 지원)이 보장되지 않음
5) 데이터의 스키마와 속성들을 다양하게 수용하고 동적으로 정의(Schemaless)
6) 데이터베이스의 중단없는 서비스와 자동 복구 기능 지원
7) 대다수의 제품이 Open Source로 제공
8) 대다수의 제품이 고 확장성, 고 가용성, 고 성능 특징을 가짐
저장되는 데이터의 구조(Data Model)에 따라 아래와 같이 나누어 볼 수 있습니다.
1) Key-Value DB(널리 쓰임)
: Key와 Value의 쌍으로 데이터가 저장되는 유형으로써 Amazon의 Dynamo Paper에서 유래되었습니다. Riak, Vodemort, Tokyo등의 제품이 알려져 있습니다.
2) Wide Columnar DB
: Big Table DB라고도 하며, Google의 BigTable Paper에서 유래되었습니다. Column Family 데이터 모델을 사용하고 있고, HBase, Cassandra, Hypertable이 이에 해당됩니다.
3) Document DB
: Lotus Notes에서 유래되었으며, JSON, XML과 같은 Collection 데이터 모델 구조를 채택하고 있습니다. Mongo DB, Cough DB가 이 종류에 해당됩니다.
4) Graph DB
: Euler & Graph Theory에서 유래한 DB입니다. Nodes, Relationship, Key-Value 데이터 모델을 채용하고 있습니다. Neo4J 등의 제품이 있습니다.
https://db-engines.com/en/ranking -db엔진 순위