DB, DBMS, RDBMS를 한페이지로 정리!

Jay·2021년 11월 27일
3
post-thumbnail

DB

: DB(DataBase)는 set of data stored in computer. 즉, 컴퓨터에 저장되는 데이터 집합입니다. 이런 데이터들은 쉽게 접근, 사용하기 위해서 구조화된 형태로 존재합니다. (Table, key-value 형태 등등)

DBMS에 대해서

: DBMS(DataBase Management System)은 말 그대로 해석하면 DB를 관리하는 시스템을 의미합니다.

다시 한번 정리하면 DB는 여러 사람들이 공유하고 사용하는 목적으로 관리되는 정보를 의미합니다. Oracle Korea에서는 DB를 이렇게 정의하고 있습니다. '일반적으로 컴퓨터 시스템에 전자적으로 저장되는 구조화된 정보 or 데이터의 조직화된 모음' 이라구요. 이런 정보는 우리가 잘 아는 엑셀 파일로도 관리할 수 있고 테이블 형태로 저장할 수도 있습니다.

다시 DBMS 이야기로 돌아가서, 이런 DB는 그 자체로는 어떠한 작업을 할 수 없는 그저 정보이기 때문에 다루기 위해서 DBMS라는 소프트웨어 프로그램이 필요합니다. DBMS에서는 DB와 유저, 프로그램 사이의 인터페이스 역할을 수행하고 유저가 정보를 생성, 검색, 수정, 삭제 등등의 작업을 관리할 수도 있게 해줍니다. 추가적으로 SQL 튜닝이나, 데이터 백업, 복구, 모니터링까지도 가능하게 해줍니다.(SQL 기반 DBMS경우)

결국 최고의 DBMS는 데이터를 효과적으로 처리하며 사용자의 데이터를 정확한 기록으로 유지할 수 있도록 도와주며 데이터 구성, 조작, 검색을 제공하고 적시에 원하는 정보에 엑세스하도록 하는 것입니다.

Relational Database

: 데이터베이스 유형 중의 하나로, 관계형 데이터 베이스라고 불립니다. 얘네는 '구조화'가 특징인데요, 데이터 베이스 안에서 데이터들 사이의 관계성을 가지는 데이터들을 다루며, 구조적으로 데이터를 저장합니다.(테이블 형태로)

🌫 테이블

하나의 테이블에서는 데이터(tuple, record라고도 부름, 행)를 수백, 수천, 수만, 수백만개 저장하고 있습니다. 그리고, 데이터는 많은 속성(attributes, 열)들을 가지고 있습니다. 속성들에는 나이, 이름, 사는 지역, 핸드폰 번호 등등 데이터의 특징을 나타낼 수 있는 범주로 구성됩니다. 이런 속성들은 number, varchar2 와 같은 데이터 타입들로 나타냅니다. 이런 데이터 타입이나 comment, 컬럼 이름들은 Schema(스키마) 라는 것으로 테이블의 큰 정보를 저장합니다.


https://ko.wikipedia.org/wiki/관계형_데이터베이스

Relation DBMS

: RDMBS는 Relational DataBase Management System의 약자이고, 관계형 DB 관리 시스템이라는 뜻입니다. 1970년 Edgar Codd는 RDBMS에 대한 이론적 기초를 확립한 논문을 발표했으며, 지난 40년이상 동안 지배적인 DBMS로 자리잡고 있을만큼 영향력이 큰 DBMS입니다.

그렇다면, R 즉, 관계형?의 의미가 무엇일까 정리해봅니다. 정보를 저장할때, Table이라는 형태로 저장을 하는데, 단순하게 생각하면 엑셀에 표를 생각하면 편합니다(위에 그림). 이런 테이블은 정보(유저 정보, 상점 정보, 결제 정보 등)들로 각각 구성이 되는데, 이런 테이블 사이의 연관성을 관계성이라고 뜻합니다. RDBMS에서는 키(key)를 통해서 연관된 정보들을 함께 조회하는데 특화되어 있습니다.

RDMBS 특징

  1. 2차원 구조 모델(열 : 속성, 행 : 튜플, 데이터)을 기반으로한 수평적 구조를 사용, 테이블 형식으로 데이터를 저장합니다. 각 테이블들은 많은 행과 열로 구성되며, 테이블은 구조화된 데이터를 저장하기 위한 엄격한 구조를 제공합니다.
  2. ACID(원자성, 일관성, 독립성, 지속성) 트랜잭션을 보장하는 기능을 가지는데, 이 기능들은 모든 트랜잭션이 완전하고 정의된 모든 규칙에 따라서 일관성을 가지게 함으로써 오류, 시스템 충돌과 같은 문제가 없는지 확인할 수 있도록 합니다. 이로써 데이터 무결성, 완전성, 정확성을 보장합니다.
  3. Structed Query Language(SQL)를 사용해서 데이터 접근을 하며 CRUD 조작을 허용합니다.
  4. 여러 플랫폼에서 사용이 가능한데, Android, iOS, Solaris, Linux, Window, VxWorks, Unix 등 여러 OS(플랫폼)에서 사용할 수 있습니다.
  5. 최고의 RDBMS는 사용자가 테이블을 분할하고 데이터를 복제할 수 있는 기능을 포함합니다. 데이터베이스 사용자는 테이블과 인덱스를 만들어 데이터를 관리할 수 있습니다. 이런 분할(파티셔닝) 및 복제 기능들은 비즈니스 요구 사항을 충족하면서 전반적인 성능 개선을 도출할 수 있습니다.

ACID

  • Atomicity : 원자성은 트랜잭셔과 관련된 작업들이 부분적으로 실행되다가 중지되는 것이 아니라 하나의 원자 단위로 수행되는 것을 보장하는 특징입니다. 즉, 중간 단계까지 실행되는 것이 아니라 처음부터 끝까지 완전하게 실행되며 중간에서 실패하는 일이 없도록 합니다.
  • Consistency : 일관성은 트랜잭션이 완료되면 언제나 일관된 DB 상태를 유지하는 것을 의미합니다.
  • Isolation : 독립성은 트랜잭션을 수행 할 시, 다른 트랜잭션의 연산 작업이 끼어들지 못하도록 보장하는 것을 의미하는데, 다시말해 다른 트랜잭션의 연산이 중간 단계의 데이터를 볼 수 없음을 의미합니다.
  • Durability : 지속성은 성공적인 트랜잭션은 영원히 반영되어야 함을 의미합니다. 시스템 에러, DB 일관성 체크 등을 하더라도 유지되어야함을 의미합니다. 트랜잭션은 로그에 모든 것이 저장된 후에만 Commit 상태로 간주될 수 있습니다.

RDMBS 종류와 각각의 특징(점유율 순서)

Oracle

1979년 오라클사에서 만들어 판매중인 상업용 DB이며, 점유율 1위 DBMS입니다.

오라클 DB는 관계형 모델에서 객체-관계형 DB로 확장하면서 복잡한 비즈니스 모델을 RDBMS에 저장할 수 있도록 만들었습니다. 객체지향 데이터베이스를 지원한다는 것은 개발자가 스스로 데이터형과 메서드를 자유롭게 정의하여 DB를 개발할 수 있도록 돕습니다. (사용자 정의 유형, 상속 및 다형성과 같은 객체 지행 기능을 구현 가능)

Window, Linux, Unix 등 다양한 OS에 설치 가능하며 대기업에서 주로 사용하는데 이는 MySQL, MS-SQL 과 비교하여 대량의 데이터 처리에 용이한 특징이 있기 때문입니다.

(그래서인지 은행 산업같은 대규모 애플리케이션에서 많이 사용합니다. 은행을 위해서 특별히 구축된 필수 기능들도 포함하고 있으며 기술과 포괄적이고 사전 통합된 비즈니스 애플리케이션의 강력한 조합을 제공하여 세계 최고의 은행들 대부분이 Oracle을 사용합니다.)

단점이라고 한다면 비공개 코드 소스에 폐쇄적인 운영과 고비용이기 때문에 오픈소스 및 무료 DBMS들에 비해서 접근성이 떨어집니다.

MySQL

1995년 상용버전으로 서비스 시작해서 현재는 Oracle에 합병되었습니다. 중소기업 뿐만 아니라 최근 많은 대기업에서도 사용하고 있는 DBMS인데 상업적으로 사용할때 비용이 발생하나, Oracle에 비해서 저렴하고 오픈소스이며 기본적으로 무료 프로그램이라는 장점 때문에 현재 시장 점유율 2위를 기록하고 있습니다.

Window, Linux, Unix 등 다양한 OS에 설치 가능하고, 클라이언트/서버 시스템에 적용 가능하며 임베디드 시스템에서도 동작이 가능합니다.

웹 기반 애플리캐이션을 개발한다면 최고의 DB라고 할 수 있습니다. 프로시저를 통해서 데이터 레코드 삽입, 삭제와 같은 단계를 하나로 묶어서 사용될 수 있으며 이벤트식으로 동작하는 트리거도 존재합니다. 5천건 이하의 데이터를 다루는데 적합하며, 속도, 안정성, 확장 가능성을 가장 추구하는 DBMS라고 할수 있습니다.

MS-SQL(Microsoft SQL Server)

Microsoft 사에서 개발한 사업용 DB이며 현재 점유율 3위입니다.

리눅스 버전은 오픈소스이지만, 비공개 소스에 폐쇄적인 운영을 하고 있습니다. 다른 OS에서도 사용이 가능하나 Window OS에 특화되어 있다는 것이 특징입니다.

높은 보안성 수준을 보여주며 신뢰성, 생산성, 지능적 특징을 가지는 DBMS입니다.

PostgreSQL

1980년대 버클리 대학의 프로젝트로 시작하였고, 1989년 처음 상용 서비스 형태로 시작하였습니다.

강력한 오픈소스 객체-관계형 DBMS라는 특징을 가지고 있으며, 복잡한 데이터 워크로드를 안전하게 저장하며 Oracle, Mysql, SQL-Server와 동일하게 SQL 언어를 사용하고 Oracle DBMS와 마찬가지로 오픈 소스 객체 관계형 데이터베이스 시스템입니다. 현재 시장 점유율은 4위입니다.

PostgreSQL에서는 데이터 무결성, 신뢰성, 정확성 등에 높은 평판을 가지며, 다양한 기능, 확장성, 오픈소스 커뮤니티 헌신으로 인해 성능과 헌신적 솔류션을 지속적으로 제공해왔습니다.

Linux, UNIX, Window 포함한 주요 플랫폼(OS)에서 실행가능하며 사내, 웹, 상용 소프트웨어 응용 프로그램을 개발할 수 있는 개발 플랫폼이다. 관리할 수 있는 데이터의 양과 수용할 수 잇는 동시 사용자 수 모두에서 확장성이 뛰어납니다.

  • 네이버에서 정리해 놓은 PostgreSQL : NAVER D2

IBM DB2

Transaction 및 Warehousing Workload에 고급 데이터 관리 및 분석 기능을 제공하는 관계형 데이터베이스이며 현재 시장 점유율 6위입니다.

Linux, Unix, Window 운영 체제에서 지원되며, 고성능, 데이터 가용성, 안정성을 제공하도록 설계가 되어있습니다.(DB2 소프트웨어는 In-Memeory 기술, 고급 관리 및 개발 도구, 스토리지 최적화, 워크로드 관리, 실행 가능한 압축 및 지속적인 데이터 가용성과 같은 고급 기술이 포함되어 있음)

최근에는 AI 기능이 추가되어 Data Science 및 AI 기술을 채택하여 경쟁 차별화를 가지고 있습니다.

SQLite

임베디드에 사용될 목적으로 개발된 RDMBS입니다. 그래서인지 적은 메모리 상에서 DBMS를 구현하는데 사용합니다. SQLite는 모든 휴대폰, 대부분 컴퓨터에 내장되어 있어 사람들이 매일 사용하는 수많은 다른 응용 프로그램에 번들로 제공됩니다. (세계에서 가장 널리 배포된 데이터베이스)

특징은 작고 빠르며 독립형, 서버리스, 제로 구성, 트랙잭셔널 SQL DB 엔진을 구현합니다. 신뢰성이 높고 완전한 기능을 갖춘 SQL 데이터베이스 엔진을 구현하는 C언어 라이브러리(ANSI-C로 작성)

SQLite 파일 형식은 안정적이며 크로스 플랫폼(Android, *BSD, iOS, Mac, Linux, Solaris, VxWorks, Windows 가 기본으로 제공되며 다른 시스템으로 쉽게 포팅가능)에서 동작 가능합니다. 경우에 따라서 Direct Filesystem I/O보다 빠르며, SQLite를 관리하는데 사용할 수 있는 독립적인 CLI 클라이언트가 제공된다.

Microsoft Access

원격 or 중앙 스토리지에서 일반적으로 엑세스가 사용되지는 않으며, 소규모 DB에서 주로 사용됩니다.

(컴퓨터활용능력 1급에는 Microsoft Access에 대한 필기, 실습 시험이 존재합니다.)

Maria DB

MySQL이 오라클에 합병되면서 불확실한 라이선스 문제를 해결하기 위해 나온 RDBMS입니다. MySQL 개발자에 의해서 만들어졌습니다. (언어는 C++이며 MySQL과 동일한 소스 코드 기반으로 개발되었습니다.)

스토리지 엔진, 플러그인, 여러 기타 도구로 인해 풍부한 에코 시스템으로 빠르게 확장이 가능하며, 강력해서 다양한 용도로 사용될 수 있습니다. 오픈소스로 개발되었으며 데이터 접근을 위한 AQL 인터페이스를 제공함 최신 Maria DB 에는 GIS, JSON 기능도 포함되어 있다고 합니다.

*MySQL과 비교해서 애플리케이션 부분속도가 약 4~5천배 빠름

Hive

데이터 쿼리 및 분석을 제공하는 데이터 웨어하우스 소프트웨어 시스템입니다. Hive는 SQL 같은 인터페이스를 제공하여 하둡과 통합되는 다양한 데이터베이스 및 파일 시스템에 저장된 데이터를 다룹니다. (하둡 생태계를 위한 ETL 도구입니다.) 배경은 맵리듀스는 복잡도가 높은 프로그래밍 기법이 필요했는데, 이는 업무 분석가와 관리자들에게 빅데이터 접근을 어렵게 만들었습니다. 이를 해결하기 위해서 페이스북에서 SQL과 매우 유사한 방식으로 하둡 데이터에 접근성을 높인 Hive를 개발하게 되었습니다.

아파치 HDFS 나 아파치 HBase 와 같은 데이터 저장 시스템에 저장되어 있는 데이터 셋을 분석합니다. Hive Query Language(HiveQL)를 사용해서 질의를 처리하고, 맵리듀스의 모든 기능을 지원합니다. 쿼리를 빠르게 하기 위해서 비트 맵 인덱스를 포함한 다양한 인덱스 기능을 제공한다고 합니다.

(구성요소 : UI, Driver, Compiler, MetaStore, Execution Engine)

현재 넷플릭스 등과 같은 회사에서 사용되고 있으며 개발되고 있습니다.

Microsoft Azure SQL DB

Azure SQL Database는 최신 안정 버전의 Microsoft SQL Server 데이터베이스 엔진을 기반으로하는 범용 관계형 DBaas(Database as a Service)입니다.

SQL Database는 인프라를 관리 할 필요없이 선택한 프로그래밍 언어로 데이터 기반 응용 프로그램 및 웹 사이트를 구축하는 데 사용할 수 있는 고성능의 안정적인 클라우드 데이터베이스입니다.

Teradata

기업이 데이터 관리 도구를 사용하여 결과를 개선할 수 있도록 하는 확장 가능한 개방형 데이터베이스 관리 시스템입니다. 주로 비즈니스의 빅 데이터를 효율적으로 관리하기 위해 나오게 되었습니다.

테라데이터는 방대한 양의 빅데이터(50PB)이상을 지원하고, 다양한 BI 도구와 통합이 가능합니다. OLAP를 지원하기 때문에 사용자가 복잡한 분석을 수행할 수 있도록 해줍니다. 또한 데이터 웨어하우징과 관련된 일련의 서비스를 제공합니다.

주된 특징들은, SQL언어를 사용하며 노드 수를 확장하여 전체 시스템 성능을 향상시킬 수 있습니다. 무제한 병렬 처리를 가능하게 함으로써 큰 작업을 더 작은 작업으로 나눌 수 있게 됩니다. 자동 배포를 통해 디스크의 데이터 배포에 직접 개입이 필요하지 않습니다. 효율적인 쿼리를 위한 고급 옵티마이저도 제공합니다. 그 외에도, TCO가 낮으며, 강력한 유틸리티, 다양한 메인프레임 및 네트워크 연결 시스템과 연결성이 좋다는 특징이 있습니다.

(최근에는 Snowflake가 많이 빠르게 치고 올라오고 있네요;; Snowflake도 조사해보고 정리해봐야겠습니다. 😉)

[도움이 된 자료]
1. https://wch18735.github.io/database/RDBMS/
2. https://sorrow16.tistory.com/39
3. https://sw-ko.tistory.com/189
4. https://interconnection.tistory.com/98
5. https://www.predictiveanalyticstoday.com/top-free-relational-database-management-system-rdbms/
6. https://searchdatamanagement.techtarget.com/definition/RDBMS-relational-database-management-system
7. https://www.trustradius.com/relational-databases
8. https://www.codecademy.com/articles/what-is-rdbms-sql
9. https://m.blog.naver.com/icbanq/221720815999

profile
도전을 하면 실패를 하고 실패를 해야 성공을 한다.

0개의 댓글