[MariaDB] 1. DBMS와 MariaDB

2020. 9. 12. 01:33DB/MariaDB

반응형
  1. DBMS
    1. database
    2. DBMS
    3. database 구조적 분류
      1. Relational database와 SQL
      2. Key-Value database와 NoSQL
  2. MariaDB
    1. MariaDB?
    2. SQL

1. DBMS

1.1. database

여러 사용자들이 공유하고 사용하기 위해 통합 관리되는 정보들(data)의 집합으로, 논리적으로 연관된 자료를 구조화한 것입니다.

database 만으로는 구조화된 데이터를 활용할 수 없고, 보통 DBMS에 해당 내용을 적재하여 사용합니다.

1.2. DBMS

DataBase Management System

database 관리를 효율적으로 할 수 있도록 도와주는 관리 시스템.
database라는 데이터의 집합을 만들고, 데이터를 조작(추가/수정/삭제)하는 일련의 과정을 제공합니다.

데이터베이스는 아래와 같은 장점이 있습니다.

  • 데이터 중복 최소화
    • 저장공간 절약
    • 데이터 일관성(Consistency)
  • 데이터 표준화
    • 제약조건 설정을 통한 데이터 표준화
    • 데이터 무결성(Integrity)
  • 다양한 권한 부여를 통한 접근 제어
  • 데이터의 논리적/물리적 독립성
  • 기밀성(Confidential) 유지

다만, 데이터베이스 관리 시스템을 활용해서 필요한 데이터를 가공해야 하기 때문에 전문성이 필요하고 데이터의 백업이나 복구가 일반적인 문서에 비해 어렵다는 단점이 있습니다.

1.3. database 구조적 분류

database를 구조적 차이점에 따라 분류하자면 아래와 같이 나눌 수 있는데

  • 관계형 데이터베이스(Relational database)
  • 키-값 데이터베이스(Key-Value database)
  • 객체형 데이터베이스(Object database)

이 중, Object database는 잘 이용하지 않고, Relational database와 Key-Value database가 많이 이용합니다.

1.3.1. Relational database와 SQL

보통 데이터베이스는 SQL라는 구조적 질의어를 이용하여 데이터를 관리합니다.
SQL(Structured Query Language)은 관계형 데이터베이스의 데이터 관리를 위해 설계된 프로그래밍 언어입니다.

정형화된 데이터를 기반으로 Filtering, Grouping, Ordering, 데이터 표준화 에 강점을 가지고 있습니다.
복잡한 제약설정이 가능하며 강력한 Transaction기능과 검색의 최적화를 위한 Index 기능을 제공하지만 그만큼 오버헤드가 크고, 데이터 저장에 유연성이 없습니다.

Relational database 기반의 DBMS를 RDBMS라고 부르며
RDBMS의 대표적인 예로는 Oralce, MS SQL, MySQL, MariaDB 가 있습니다.

1.3.2. Key-Value database와 NoSQL

관계형 데이터베이스의 위의 단점과 상반되는 데이터베이스가 바로 Key-Value Database입니다.
이 데이터베이스는 hash 구조로 데이터가 저장되며, 이에 의해 json형식이나 xml형식으로 스키마 표현을 합니다.

Key-Value database는 저장되는 데이터 형식이 dictionary 인 만큼, SQL이 아닌 다른 형식으로도 조회가 가능합니다.

db.test.insert([
  {"name": "coco", "age": 23},
  {"name": "lily", "age": 31, "memo": "hi"},
  {"name": "kate", "age": 34, "memo": 2222}
]);

이런 특징때문에 Key-Value database 기반의 DBMS를 NoSQL(Not Only SQL)이라고 불립니다.
저장되는 schema가 고정되지 않고 유연하고(동일한 컬럼구조가 아니어도 됩니다.), 단순 검색과 데이터 추가에 최적화된 database입니다.

Key-Value database 기반의 DBMS인 NoSQL의 대표적인 예로는 MongoDB, Redis, Apache Cassandra가 있습니다.

database를 이용할 서비스에서 빈번히 사용할 기능이 검색(select)기능 이라면 RDBMS를 사용하는 것을 권장하고
업데이트(update, insert, delete) 기능 을 더 자주 사용한다면 NoSQL 을 사용하는 것을 권장합니다.


2. MariaDB

NoSQL이 최근 각광을 받고는 있지만, 여전히 데이터베이스계에서 주류를 자리잡고 있는 DBMS는 RDBMS입니다.

그 중 이 과정에서 사용하는 DBMS는 MariaDB 입니다.
다음 시간부터는 MariaDB를 설치하고 사용하는 방법과 효율적인 관리를 위한 다양한 설정 방법을 알아볼 것입니다.

2.1. MariaDB?

MySQL 5 버전에서 fork되어 개발된 오픈소스 RDBMS로, GPL 라이선스 기반의 오픈소스 소프트웨어입니다.

MySQL이 Oracle에게 인수되면서 무료버전인 MySQL Community와 상용버전인 MySQL Enterprise 버전으로 나뉘게 되면서 DB관리에 관한 고급기능이 유료화된 아쉬운점을 해소해줍니다.

MySQL의 오픈소스버전으로 등장했으나, MariaDB 5.5 이상 버전부터는 독자적인 기능과 문법을 추가하여 MariaDB 10.x 버전으로 넘버링을 붙였습니다.

MariaDB 5.5 이상의 버전의 경우 MySQL 5.5 이하 버전의 문법을 모두 호환됩니다.

MariaDB는 MySQL Enterprise 버전에서 제공하는 고급기능들을 독자적으로 구현하여 추가했으며, MySQL Community버전에서는 제공되지 않는 다양한 기능을 제공합니다.

2.2. SQL

Structured Query Language

SQL은 RDBMS를 사용하기 위해 필수적으로 알아야할 개념입니다.

간단하게 소개하자면 아래와 같은 특징이 있습니다.

  • 비절차적 언어
    • 조회할 데이터만 명시하고 결과를 출력한다.
    • 조회 방법은 별도로 고려하지 않는다.
  • 인터프리터 언어
    • SQL을 실행할 때 쿼리를 파싱하여 해석하는 일련의 과정을 거친다.
  • 키워드의 대소문자 구별을 하지 않는다.
    • 키워드: select, from, where 등...
  • DML 사용시 주의 사항
    • 조건을 설정하지 않을 경우 모두 조회/수정/제거합니다.
    • 트랜잭션을 설정하지 않을시, 추가/수정/제거 된 것을 되돌릴 수 없습니다.

SQL 문법은 3가지로 분류합니다.

  • DDL
    • Data Definition Language
    • 테이블의 스키마를 정의하거나 수정하는 기능입니다.
    • 테이블 생성, 컬럼추가, 타입변경, 제약 조건 추가와 같은 기능이 있습니다.
    • CREATE, ALTER, DROP
  • DML
    • Data Manipulation Language
    • 데이터의 조회/삽입/삭제/갱신(CRUD) 등을 처리합니다.
    • INSERT, UPDATE, DELETE, SELECT
  • DCL
    • Data Control Language
    • DB나 테이블의 접근권한이나 CRUD 권한을 정의하는 기능입니다.
    • 특정 사용자에게 테이블의 조회 권한 허가/금지할 때에도 이용합니다.
    • GRANT, REVOKE
728x90
반응형