DataBase 기초

계리·2022년 11월 9일
0
post-custom-banner

DataBase란?

  • 많은 데이터를 저장하는 곳
  • 여러 사람이 공유할 목적으로 체계화(구조화)해 통합, 관리하는 데이터의 집합
  • 컴퓨터 언어로 제어가 가능하며 앱이나 웹을 통해 공유가 가능
  • 누구나 데이터베이스에 접근하고 편집이 가능하다는 장점

DateBase 특징

  • 실시간 접근성(Real-Time Accessibility) : 실시간 처리에 의한 응답이 가능해야 한다.
  • 계속적인 변화(Continuous Evolution) 새로운 데이터의 삽입(Insert), 삭제,(Delete), 갱신(Update)로 항상 최신의 데이터를 유지한다.
  • 동시 공용(Concurrent Sharing) : 다수의 사용자가 동시에 같은 내용의 데이터를 이용할 수 있어야 한다.
  • 내용에 의한 참조(Content Reference) : 데이터베이스에 있는 데이터를 참조할 때 사용자의 요구에 따른 데이터 내용으로 데이터를 찾는다.

데이터베이스 용어

파일 시스템데이터베이스 모델링관계형 데이터베이스
파일(File)엔티티(Entity)테이블(Table)
레코드(Record)튜플(Tuple)행(Row)
키(Key)식별자(Identifier)기본키(Primary Key), Unique
필드(Field)속성(Attribute)열(Column)
  • 테이블(Table) : 행(Row)과 열(Column)으로 이루어진 데이터 집합이다(=릴레이션(Relation))
  • 행(Row) : 관계된 데이터의 묶음. 튜플(Tuple) 또는 레코드(Record)라고 한다.
  • 열(Column) : 가장 작은 단위의 데이터를 의미. 필드(Field) 또는 속성(Attribute)라고 한다.
  • 키(Key) : 테이블에서 행의 식별자로 이용되는 식별자

Key의 종류

  • 후보 키(Candidate Key) : 유일성과 최소성을 만족하는 키(각 튜플을 유일하게 식별할 수 있는 속성의 집합)
  • 기본 키(Primary Key) : 후보 키에서 선택된 키(null값 혹은 중복 값을 가질 수 없음)
  • 외래 키(Foreign Key) : 서로 다른 테이블 간의 관계를 맺어주는 키(다른 테이블의 기본 키를 참조)
  • 슈퍼 키(Super Key) : 테이블의 행을 고유하게 식별할 수 있는 속성 또는 속성의 집합
  • 복합 키(Composite Key) : 2개 이상의 속성(Attribute)을 사용한 키
  • 대체 키(Surrogate Key) : 후보 키에서 선택되지 않은 키

유일성과 최소성

  • 유일성 : 하나의 키로 어떠한 행을 바로 찾아낼 수 있는 성질
    (ex 주민등록번호)
  • 최소성 : 레코드를 식별하는데 꼭 필요한 속성들로만 구성되어 있는 성질
    (ex "주민등록번호 + 학번"은 주민등록번호만으로도 행을 구분할 수 있기 때문에 최소성을 만족하지 못함)

스키마(Schema)

데이터베이스의 구조를 전반적으로 기술한 것. 데이터베이스를 구성하는 데이터 개체(Entity), 속성(Attribute), 레코드(Record) 간의 관계(Relationship) 등등 데이터베이스의 골격 구조를 나타는 일종의 도면으로 생각하면 된다.

  • 외부 스키마( = 사용자 뷰(가상 테이블) = 서브 스키마)
    사용자 입장에서 정의한 데이터베이스의 논리적 구조. 데이터들을 어떤 형식, 구조, 화면을 통해 사용자에게 보여줄 것인가에 대한 명세를 말하며 하나의 데이터베이스에는 여러 개의 외부 스키마가 있을 수 있다. 일반 사용자는 SQL을 이용하며 DB를 쉽게 사용할 수 있다. 응용 프로그래머는 C, 자바 등의 언어를 사용하여 DB에 접근한다.

  • 개념 스키마( = 전체적인 뷰)
    데이터베이스의 전체적인 논리적 구조. 모든 이용자가 필요로 하는 데이터를 총합한 조직 전체의 데이터베이스로 하나만 존재한다. 개체 간의 관계와 제약조건, 데이터베이스의 접근 권한, 보안 등에 관한 명세를 나타낸다. 데이터베이스 관리자에 의해서 구성된다.

  • 내부 스키마
    물리적 저장장치의 입장에서 본 데이터베이스 구조. 실제로 데이터베이스에 저장될 레코드의 물리적인 구조, 저장 데이터의 항목의 표현 방법, 내부 레코드의 물리적 순서 등을 나타낸다.


데이터베이스 언어 종류

DML(Data Manipulation Languge) - 데이터 조작어

  • SELECT : 데이터베이스에 들어있는 데이터를 조회하거나 검색하기 위한 명령어. RETRIEVE라고도 한다.
  • INSERT : 데이터 삽입
  • UPDATE : 데이터 수정
  • DELETE : 데이터 삭제

DDL(Data Definition Languge) - 데이터 정의어

  • CREATE : 새로운 데이터베이스 관계(Table) 뷰, 인덱스, 저장 프로시저 만들기
  • ALTER : 이미 존재하는 데이터베이스 개체에 대한 변경, RENAME의 역할을 한다
  • DROP : 이미 존재하는 데이터베이스 관계(테이블) 뷰, 인덱스, 저장 프로시저를 삭제한다.
  • TRUNCATE : 관계(테이블)에서 데이터를 제거한다.(한번 삭제 시 돌이킬 수 없음)

DCL(Data Control Languge) - 데이터 제어어

  • GRANT : 특정 데이터베이스 사용자에게 특정 작업에 대한 수행 권한을 부여한다.
  • REVOKE : 특정 데이터베이스 사용자에게 특정 작업에 대한 수행 권한을 회수한다.

TCL(Transaction Control Languge) - 트랜잭션 제어어
논리적인 작업의 단위를 묶어서 DML에 의해 조작된 결과를 작업단위(트랜잭션) 별로 제어하는 명령어

  • COMMIT : 트랜잭션 처리가 정상적으로 종료되어 트랜잭션이 수행한 변경 내용을 데이
    터베이스에 반영하는 연산이다. 내용을 변경한 트랜잭션이 완료되면 그 트랜잭션에 의해 데이터베이스는 새롭게 일관된 상태로 변경되며, 이 상태는 시스템 오류가 발생하더라도 취소되지 않는다.

  • ROLLBACK : 하나의 트랜잭션 처리가 비정상적으로 종료되어 데이터베이스의 일관성이 깨졌을 때, 트랜잭션이 행한 모든 변경 작업을 취소하고 이전 상태로 되돌리는 연산이다. ROLLBACK 연산 시 해당 트랜잭션은 받았던 자원과 잠금(LOCK)을 모두 반환하고, 재시작(Restart) 되든지 폐기가 된다.

  • SAVEPOINT : 현재의 트랜잭션을 작게 분할하는 명령어이다. 저장된 SAVEPOINT는 ROLLBACK TO SAVEPOINT문을 사용하여 지정한 곳 까지 ROLLBACK 할 수 있다. 여러 개의 SQL문을 수반하는 트랜잭션의 경우, 사용자가 트랜잭션 중간 단계에서 SAVEPOINT를 지정할 수 있다. 이 SAVEPOINT는 차후 ROLLBACK과 함께 사용되며, 현재 트랜잭션 내의 특정 SAVEPOINT까지 ROLLBACK 할 수 있다.

트랜잭션

  • 데이터베이스 내에서 한꺼번에 모두 수행되어야 할 연산들의 집합
  • 하나의 작업 처리를 위한 논리적 작업 단위
  • ACID를 제공함으로 트랜잭션 기능을 제공한다.

ACID(원자성, 일관성, 고립성, 지속성)

  • 원자성(Atomicity)
    트랜잭션과 관련된 작업들이 부분적으로 실행되다가 중단되지 않는 것을 보장하는 능력(중간 단계까지 실행되고 실패하는 일이 없도록 하는 것)

  • 일관성(Consistency)
    트랜잭션이 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 유지하는 것

  • 고립성(Isolation)
    트랜잭션 수행 시, 다른 트랜잭션의 연산 작업이 끼어들지 못하도록 보장하는 것을 의미. 트랜잭션 밖에 있는 어떤 연산도 중간 단계의 데이터를 볼 수 없음을 의미한다. 트랜잭션 실행내역은 연속적이어야 함을 의미한다.

  • 지속성(Durability)
    성공적으로 수행된 트랜잭션은 영원히 반영되어야 함을 의미한다. 시스템 문제, DB 일관성 체크 등을 하더라도 유지되어야 한다는 의미이다.


DBMS(Database Management System)

데이터베이스가 '데이터의 집합'이라고 한다면 데이터베이스를 관리하고 운영하는 소프트웨어를 DBMS라고 한다. 다양한 데이터가 저장되어 있는 데이터베이스는 여러 명의 사용자나 응용 프로그램과 공유하고 동시에 접근이 가능해야 한다.

  • HDBMS(Hierachical DBMS) : 계층적인 형태의 DBMS. 초기 세팅이 변화하면 이에 대처하기가 힘들어 잘 쓰이지 않음. 초기 DBMS의 형태.

  • NDBMS(Network DBMS) : 구성과 설계가 복잡하고 데이터 종속성을 해겨하지 못함.

  • ODBMS(Object-Oriented DBMS) : 정보를 객체의 형태로 표현하는 DBMS

  • RDBMS(Relational DBMS) : 관계형 데이터베이스 관리 시스템이라 하며 테이블과 테이블의 관계를 기반으로 하는 가장 범용적인 데이터베이스 관리 시스템. MySQL, Oracle, SQLite 등이 있다.

  • No-SQL(Not-Only SQL) : 데이터 간의 관계를 설정하지 않고 유여한 테이블 스키마를 가진다. 대용량 데이터/분산 처리에 적합하다는 장점이 있지만 데이터 일관성이 항상 보장되지 않는 단점이 있다. MongoDB, H Base, Cassandra, Redis 등이 있다.


RDBMS와 No-SQL 비교

RDBMS

  • 장점
  1. 관계형 데이터베이스는 데이터를 더 효율적으로 그리고 체계적으로 저장할 수 있고 관리할 수 있다.
  2. 데이터의 분류, 정렬, 탐색 속도가 비교적 빠르다.
  3. SQL이라는 구조화 된 질의를 통해 데이터를 다룰 수 있다.
  4. 작업의 완전성을 보장한다.
  5. Data의 Update가 빠르다.
  6. 정형화된 데이터를 저장하는데 유리하다(전자상거래 정보, 은행계좌 정보, 거래 정보 등등)
  • 단점
  1. 테이블을 미리 정의해야 함으로 테이블 구조 변화 등에 덜 유연하다
  2. 확장성이 쉽지 않다.
    • 테이블 구조가 미리 정의되어 있다보니 단순히 서버를 늘리는 것만으로 확장하기가 쉽지 않고 서버의 성능 자체도 높여야 한다.
    • 서버를 늘려서 분산 저장 하는 것도 쉽지 않다.
    • Scale up(서버의 성능을 높이는 것)으로 확장성이 됨.

No-SQL

  • 장점
  1. 데이터 간의 관계를 정의하지 않음(테이블 간의 관계(join) 불필요)
  2. RDBMS보다 복잡도가 떨어져, 훨씬 대용량의 데이터를 저장, 관리 할 수 있고 데이터의 구조 변화에 유연하다.
  3. 테이블의 스키마가 정해져있지 않아 데이터 저장이 비교적 자유로움
  4. 많은 양의 데이터를 저장, 처리할 수 있음
  5. 확장하기가 쉽다. 그냥 서버 수를 늘리면 된다(Scale out)
  • 단점
  1. Key값에 대한 입, 출력만 지원
  2. 스키마가 정해져 있지 않아, 데이터에 대한 규격화가 되어있지 않음.
  3. Data를 Update 하는데 비교적 느림
  4. 데이터의 완전성이 덜 보장된다.
  5. 트랜잭션이 안되거나 비교적 불안정하다.

자료 첨부
https://1-day-1-coding.tistory.com/2
https://coding-factory.tistory.com/77
https://inpa.tistory.com/entry/DB-%F0%9F%93%9A-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EA%B8%B0%EC%B4%88-%EA%B0%9C%EB%85%90
https://han-py.tistory.com/288
https://brunch.co.kr/@04925bf0d77f43e/8
https://velog.io/@mokyoungg/Data-Base-DB-%EA%B8%B0%EC%B4%88
https://cocoon1787.tistory.com/769
https://velog.io/@yejin20/DB-DB-%EC%9A%A9%EC%96%B4-%EC%A0%95%EB%A6%AC

profile
gyery
post-custom-banner

0개의 댓글