0. 더는 안된다. 파일시스템.
데이터베이스의 등장 이전,
데이터들을 저장하기 위해서 파일시스템을 사용했었다.
하지만 파일시스템은 여러 문제를 야기했다.
통합되지 않으니까 따로따로 관리해야했다.
통합되지 않으니까 여기 저장한데이터를 저기에도 저장해야했다. (데이터 중복성)
통합되지 않으니까 여기에서 수정한 데이터가 저기에는 반영이 안됐다. (데이터 무결성(정확성, 일관성))
이외에도 다양한 문제들을 야기했다.
이러한 상황을 극복하고자 개발자들은
데이터베이스 관리 시스템을 만들었다.
데이터 저장을 전문적으로 하는 데이터 베이스를 만들고,
그 데이터베이스를 전문적으로 관리하는 시스템을 만들었다.
데이터베이스(DB)를 통해서 응용시스템들 마다 가지고 있던 파일들을 하나의 데이터 집합으로 통합하고,
(데이터 중복성, 불일치, 호환어려움, 비표준화 문제 해결)
데이터베이스시스템(DBMS)를 통해서 DB에는 반드시 DBMS를 통해서만 접근하도록 하였다.
(데이터 독립성(from 응용프로그램), 무결성(막저장 차단), 보안성(누구세요?) 문제 해결)
0-1. 용어정리
데이터베이스 (DB) : 데이터의 저장소
데이터베이스 관리 시스템 (DBMS) : 데이터베이스 관리 시스템, 데이터베이스를 운영하고 관리하는 소프트웨어
SQL : 구조화된 질의 언어, 관계형 데이터 베이스에서 사용되는 언어, 표준 SQL를 통해 대부분의 DBMS 사용 가능, 데이터베이스를 조작하는 표준 언어
데이터베이스의 구조화된 데이터를 관리하고 질의(Query)하는데 사용되는 표준 언어
NoSQL : SQL이 아닌 방식으로 데이터를 저장하고 관리하는 데이터베이스 유형
정형 데이터 : 미리 정해진 구조가 있는 데이터 (엑셀의 스프레드시트, 관계DB의 테이블 등)
반정형 데이터 : 구조에 따라 저장된 데이터지만, 내용 안에 구조에 대한 설명이 같이 있는 데이터.
구조 파악을 위한 파싱 과정이 필요하다. 보통 파일 형태로 저장된다. (HTML, XML, JSON문서, 센서데이터 등)
비정형 데이터 : 정해진 구조가 없는 데이터 (SNS텍스트, 영상, 이미지, 음성데이터 등)
쿼리 : 데이터베이스에서 데이터를 요청하거나 조작하기 위해 사용되는 명령어
(데이터 조회, 삽입, 수정, 삭)
스키마 : 데이터베이스의 구조를 정의하는 규칙 또는 설계를 의미
트랜잭션 : 데이터베이스에서 수행되는 하나의 작업단위
데이터베이스의 상태를 변환하는 연산들의 집합, 트랜잭션은 ACID보장해야 한다.
ACID : 원자성, 일관성, 격리성, 지속성
(원자성 : 완전히 실행되거나 전혀 실행되지 않거나, 일관성 : 항상 유효 상태, 격리성 : 서로 간섭없이, 지속성 : 완료되면 영구 기록)
샤딩 : 대규모 데이터베이스에서 데이터를 여러 서버에 분산하여 저장하는 기술
(데이터를 파티션으로 나누고, 각 파티션을 별도의 서버에 저장. For 수평적 확장(서버 추가 방식 확장))
1. 승리자 RDBMS와 SQL
많은 DBMS가 나왔지만 결국 RDBMS가 상용 데이터베이스로 승기를 잡았다.
그 선봉장에 Oracle이 있었다.
1990년대에 들어서자 유료 서비스 였던 Oracle에 대항(?)하여 오픈소스, 무료 데이터베이스에 대한 관심이 커졌다.
1995년에는 개인 홈페이지와 소규모 사이트에 적합한 오픈소스인 MySQL이 등장하여 많은 인기를 끌고 있다.
RDBMS와 상호작용하기 위한 언어로는 SQL이 표준언어가 되었다.
관계형 데이터베이스에서 사용되는 언어라고 생각하면 된다.
SQL은 국제표준화기구에서 표준을 정해서 발표하는데 DBMS를 만드는 회사와는 다르다.
(표준 SQL이 각 회사 제품의 모든 특성을 포용하지는 못한다.)
그렇기에 각각의 DBMS 제작 회사는 표준 SQL을 준수하면서도 각 제품의 특성을 반영하여 SQL을 사용한다.
대표적인 DBMS인 오라클, SQL서버, MySQL이 모두 표준 SQL을 포함하고 있다.
따라서 표준 SQL을 익히면 대다수 DBMS의 사용이 가능해진다.
2. 새로운 시도 NoSQL
2000년대에 들어서자 빅데이터에 대한 관심이 커졌다.
대량의 데이터를 특히나 SNS와 같은 데이터를 저장하기에 적절한 저장소가 필요해졌다.
관계형 데이터베이스와는 다르게 대규모 확장성과 유연성에 강점을 가진 데이터베이스가 필요해진 것이다.
그렇게 등장한 것이
비관계형 데이터베이스, NoSQL이었다.
2-1. SQL과 NoSQL
헷갈리지 말자!
SQL (Structured Query Language) | NoSQL (Not only SQL) |
RDBMS와 상호작용하는 데 사용되는 표준 언어 (일종의 데이터베이스 조작, 관리하는 언어) 즉, 언어 |
SQL만 사용하는 것이 아닌 다양한 방식의 데이터베이스 (비관계형 데이터베이스, 데이터베이스의 한 종류) 즉, 데이터베이스 시스템의 종류 |
3. 관계형 데이터베이스와 비관계형 데이터베이스
두 종류의 데이터베이스와 데이터베이스 선택 기준을 고민해보자!
관계형 데이터베이스 (RDB) | 비관계형 데이터베이스 |
구조화 쿼리 언어(SQL) 사용 미리 정의된 스키마 있다. (사전 정의된 테이블 형태의) |
구조화 되지 않은 데이터를 위한 동적 스키마 있다. |
테이블 기반 (행 열로 구성된 표와 같은) | 문서, 키-값, 그래프, 와이드 컬럼 스토어 |
수직적 확장이 가능 (CPU, RAM, SSD용량 추가로 단일 서버 감당 가능 부하 증가) |
수평적 확장이 가능 (샤딩 통해 감당 가능 처리 트래픽 증가) |
다중 행 트랜잭션에 더 적합 | 비정형 데이터(문서, JSON)에 더 적합 |
데이터가 일관되고 테이블 간의 관계가 잘 정의된 구조화된 데이터에 적합 |
데이터가 미리 정의된 스키마를 따르지 않고, 데이터 요소간의 관계가 잘 정의되어 있지 않은 반정형, 비정형 데이터에 적합 |
복잡한 쿼리 및 트랜잭션 관리가 필요한 어플리케이션에 적합 | 웹 애플리케이션 및 모바일 앱과 같이 높은 성능과 확장성이 필요한 경우에 적합 |
유연한 설계로 사용량과 부하변화에 따라 쉽게 확장 축소 오버헤드 없이 데이터를 빠르고 쉽게 저장하고 접근 |
4. 데이터베이스 종류
아래는 데이터베이스의 종류이다.
저장소의 종류를 말한다.
저장소를 조작할때는 당연히 쿼리언어 SQL을 사용한다.
(MongoDB와 같은 NoSQL의 경우 자체적인 쿼리언어 혹은 쿼리API 사용)
관계형 데이터베이스 | |
MySQL | 무료 오픈소스 대규모 커뮤니티, 광범위 테스트, 강화된 안정성 모든 주요 플랫폼 호환 복제 및 샤딩 사용 가능 광범위한 사용 사례 지원 |
Oracle | 빈번한 업데이트, 전문적 관리 및 우수한 고객 지원 포함 상용 데이터베이스 가장 비싼 데이터베이스 솔루션 중 하나 대규모 데이터베이스에서 사용 가능 간단한 업데이트, 트랜잭션제어, 모든 운영체제와 호환, 워크로드가 까다로운 기업 및 조직에 적합 |
MS SQL Server | MS에서 개발 관리하는 데이터베이스 SQL언어가 되는 Transact SQL(T-SQL) 윈도우 리눅스에서만 사용 가능 사용자 친화적, 오류 발견시 중간에 조정 어렵다 잘 작성된 문서 Oracle에 비용을 발생하지 않고 상용 데이터베이스 솔루션 원하는 중소기업에 적합 |
PostgreSQL | 하이브리드 SQL/NoSQL 데이터베이스 솔루션을 의미하는 객체지향 데이터베이스 관리 시스템 무료 오픈소스 다양한 운영체제와 호환, 활발한 커뮤니티, 높은 ACID준수, 순전한 SQL 사용 데이터가 관계형 모델에 맞지 않는 사용 사례에 가장 적합 대규모 데이터베이스 및 복잡한 쿼리 실행에 적합 |
비관계형 데이터베이스 | |
MongoDB | 가장 인기있는 NoSQL 데이터베이스 무료, 동적스키마, 수평확장 간단한 쿼리로 뛰어난 성능 발휘 기존 행이나 애플리케이션 성능에 영향을 주지않고 새 열과 필드 추가 급속한 성장 단계를 거치는 기업이나 비정형 데이터가 많은 기업에 가장 적합 |
참고❤️
데이터베이스의 역사2: 데이터베이스의 등장
이 글은 1탄과 이어집니다.파일시스템의 문제와 데이터베이스의 등장배경(링크)파일 시스템의 문제점을 보완하기 위해서 일단 응용프로그램들마다 각자 갖고있는 저 파일들을 하나의 데이터
velog.io
https://www.integrate.io/ko/blog/the-sql-vs-nosql-difference-ko/
SQL과 NoSQL 비교: 5가지 주요 차이점
가장 큰 결정 중 하나는 SQL 또는 NoSQL 데이터 구조를 선택하는 것입니다. 사용자가 염두에 두어야 할 5가지 주요 차이점이 있습니다.
www.integrate.io
[데이터베이스 이해하기] Database(DB), DBMS, SQL의 개념
데이터베이스(Database, DB)란? : 데이터의 저장소. DBMS(Database Management System, 데이터베이스 관리 시스템)란? 데이터베이스를 운영하고 관리하는 소프트웨어. 계층형, 망형, 관계형 DBMS 중 대부분의 DBM
hongong.hanbit.co.kr
'DB' 카테고리의 다른 글
2. MongoDB (1) | 2024.11.25 |
---|---|
1. MySQL (1) | 2024.11.18 |