컴퓨터에 체계적으로 저장한 데이터를 데이터베이스(Database)라 하며, 데이터베이스를 관리하는 시스템을 DBMS(DataBase Management System)라 한다. 'DBMS'와 '데이터베이스'라는 용어는 크게 구분하지 않고 사용된다.
파일 시스템은 원시 데이터 파일을 컴퓨터의 하드 디스크 등에 저장하는 시스템이다. 중복 데이터가 많이 발생하고 데이터의 일관성이 떨어지며 보안, 백업·복구가 불편한 문제가 있었다
데이터베이스는 그러한 파일 시스템의 단점을 보완하고 데이터의 모델링, 무결성, 다수 사용자를 위한 동시성 제어 등을 제공한다
데이터베이스는 데이터를 바라보는 관점에 따라 관계형 데이터베이스, 계층형 데이터베이스, 그래프 데이터베이스 등으로 나눌 수 있다
관계형 데이터베이스는 데이터를 관계(relation)로 나타낸다
일반적으로 DBMS라고 하면 RDBMS(Relational DBMS)를 가리킨다. 오라클 데이터베이스 서버, 마이크로소프트 SQL 서버, MySQL과 MariaDB, PostgreSQL 등이 이에 해당한다
SQLite: SQLite는 가장 널리 사용되는 데이터베이스 엔진으로2, 임베디드 디바이스, 사물 인터넷, 데이터 분석, 작은 규모의 웹사이트에 사용하기 적합하다
SQLite 특징
- SQLite는 임베디드 SQL 데이터베이스 엔진으로 독립적인 서버 프로세스를 갖지 않는다
- 설치 과정이 없고 설정 파일도 존재하지 않는다
- 테이블, 인덱스, 트리거, 뷰 등을 포함한 완전한 데이터베이스가 디스크 상에 단 하나의 파일로 존재한다
- 퍼블릭 도메인5으로서 개인적 또는 상업적 목적으로 사용할 수 있다
계층형 데이터베이스는 데이터를 계층적인 트리(tree)로 표현한다. 데이터는 레코드(record)로서 저장되며 레코드들은 링크(link)를 통해 연결된다. 레코드는 필드(field)들의 모음이며 필드는 단일한 값을 갖는다
그래프 데이터베이스는 데이터를 그래프 형태로 표현한다
💡 NoSQL
근래에 들어 관계형 데이터베이스 모델을 벗어난 몽고DB(MongoDB), 카산드라(Cassandra), Neo4J 등을 NoSQL로 통칭한다
관계형 데이터베이스에서는 데이터를 ‘관계’로 나타내며, 이는 ‘테이블’로 구현된다. ‘행’과 ‘열’에 해당하는 것을 ‘튜플’과 ‘속성’이라는 용어로 가리킨다. ‘레코드’와 ‘필드’라는 용어도 많이 사용한다
relation(관계, 릴레이션) = table(테이블)
tuple(튜플)= row(행, 로우) = record(레코드)
attribute(속성, 어트리뷰트) = column(열, 컬럼, 칼럼) = field(필드)
1) 소프트웨어 애플리케이션이다
2) 행(row)과 열(column)의 형식으로 데이터를 구조화한다
3) 정보를 셀(cell)에 조직화(organize)한다
4) 제한적인 양의 데이터에 대한 액세스를 제공한다
5) 수동으로 데이터를 입력한다
6) 일반적으로 한 번에 한 명의 사용자
7) 사용자에 의해 통제된다
1) SQL과 같은 질의 언어(query language)를 사용해 액세스하는 데이터 스토어(data store)다
2) 규칙(rule)과 관계(relationship)로 데이터를 구조화한다
3) 정보를 복합적인 컬렉션에 조직화한다
4) 대량의 데이터에 대한 액세스를 제공한다
5) 엄격하고 일관적인 데이터 입력
6) 다중 사용자
7) 데이터베이스 관리 시스템(database management system)에 의해 통제된다