Posts Database 기초
Post
Cancel

Database 기초

1. About Database


1.1 DB

  • Database의 약자
  • 데이터를 통합하여 관리하는 데이터의 집합


1.2 DBMS

  • Database Management System의 약자
  • 데이터베이스를 관리하는 미들웨어 시스템을 데이터베이스 관리시스템이라고 함


1.3 RDBMS

  • Relational Database Management System의 약자
  • Oracle, Mysql, Postgresql, Sqlite 등이 있음
  • 데이터 테이블 사이에 키값으로 관계를 가지고 있는 데이터 베이스
  • 데이터 사이의 관계 설정으로 최적화된 스키마를 설계 가능


1.4 NoSQL

  • Not Only Structured Query Language 의 약자 (약자는 여러가지가 있으나, 해당 의미가 가장 대중적으로 쓰임)
  • Mongodb, Hbase, Cassandra 등이 있음
  • 데이터 사이의 관계가 없으므로 복잡성이 줄고 많은 데이터를 빠르게 저장이 가능함


1.5 Database Ranking

  • RDBMS에서는 Oracle, Mysql, MSsql이 가장 많이 사용됨
  • NoSQL에서는 Mongodb가 많이 사용됨
  • 2020년 기준
  • 출처 : https://db-engines.com/en/ranking_trend


2. About MySQL


2.1 특성

  • MySQL은 오픈소스이며, 다중 사용자와 다중 스레드를 지원한다.
  • 다양한 운영체제에 다양한 프로그래밍 언어를 지원함
  • 표준 SQL을 사용함
  • 세계적으로 Oracle과 양대 산맥의 사용자를 가지고 있음
  • 작고 강력하며 Oracle대비 가격이 저렴함


2.2 역사

  • 1995년 : MySQL AB사에 의해 첫 버전이 발표됨
  • 2008년 : 썬 마이크로시스템이 MySQL AB를 인수, 5.1 버전 발표
  • 2009년 : 오라클이 썬 마이크로시스템 인수
  • 2917년 : 최신버전인 5.7.20 발표


2.3 License

  • MySQL을 포함하는 하드웨어나 소프트웨어 기타 장비를 판매하는 경우 라이센스가 필요함
  • 배포시 소스를 공개하면 무료이지만, 소스공개를 원하지 않는 경우 상용 라이센스가 필요함
  • 서비스에 이용하는건 무료로 가능함


3. RDBMS


3.1 특성

  • 데이터 분류, 정렬, 탐색속도가 빠름
  • 오래 사용된 만큼 신뢰성이 높음
  • 스키마 수정이 어려운 단점이 있음


3.2 구조

  • 열(column)과 행(row)로 구성된 테이블(table)의 구조를 가지고 있음


3.2.1 Table

  • 열(column)과 행(row)로 이루어져 있으며, 데이터베이스를 이루는 기본단위
  • Storage Engine
    • MyISAM : full text index 지원, table 단위 lock, select가 빠르고 구조가 단순함
    • InnoDB : transaction 지원, row 단위 lock, 자원을 많이 사용하고 구조가 복잡함


3.2.2 Column

  • 테이블의 세로축 데이터
  • Field, Attribute라고도 불림


3.2.3 Row

  • 테이블의 가로축 데이터
  • Tuple, Recode라고도 불림


3.2.4 Value

  • 열(column)과 행(row)에 포함되어 있는 데이터


3.2.5 Key

  • 행(row)의 식별자로 사용


3.2.6 Relationship

  • 1:1 관계 : 1개의 데이터가 1개의 데이터만 관계를 가짐
  • 1:n 관계 : 1개의 데이터가 여러개의 다른 데이터와 관계를 가짐
  • n:n 관계 : 여러개의 데이터가 다른 여러개의 데이터와 관계를 가짐


3.2.7 Schema

  • Schema(스키마)는 데이터 베이스의 구조를 만드는 디자인


4. NoSQL


4.1 특성

  • RDBMS의 한계를 극복하기 위해 만들어진 데이터 베이스
  • 확장성이 좋음 - 데이터의 분산처리가 용이함
  • 데이터 저장이 유연함 - RDBMS와 다르게 구조의 변경이 불필요함
  • 스미카 및 join이 없음
  • Collection 별로 관계가 없기 때문에 모든 데이터가 들어있어야 함
  • 저장되는 데이터는 Key - Value 형태의 JSON 포멧을 사용함
  • Select는 RDBMS보다 느리지만 Insert가 빨라 대용량 데이터 베이스에 많이 사용됨
  • 트랜젝션(transaction)이 지원되지 않는 단점이 있어 동시 수정에 대한 신뢰성이 지원되지 않음


4.2 Mongodb

  • C++ 로 작성된 오픈소스 데이터 베이스
  • 뛰어난 확장성과 성능을 가짐
  • NoSQL에서는 인지도가 가장 높음


4.2.1 Collection

  • RDBMS의 Table과 같은 개념
  • Document의 집합
  • 정규화된 데이터 구조인 스키마가 정의되어 있지 않음


4.2.2 Document

  • RDBMS의 Row와 같은 개념
  • JSON 형태의 Key : Value 형태로 데이터를 표한함
  • 데이터 형태가 자유로워서, 특정 필드의 데이터 정보를 좀 더 다른 Document로 상세화 가능함
  • 데이터의 상세화를 위해 Document안에 Document를 삽임이 가능함
  • Document가 모여서 Collection이 되고 Collection이 모여 Database가 됨


4.2.3 Key

  • RDBMS의 Column과 같은 개념
This post is licensed under CC BY 4.0 by the author.