[SQL 첫걸음] 01. 데이터베이스

devholic (David)·2023년 4월 19일
0
post-thumbnail

개요

📗 데이터

  • 데이터: 컴퓨터 안에 기록되어 있는 숫자
    • 더 자세히 본다면, 정형화되고 기록할 만한 가치가 있다고 판단되는 어떤 현상이나 사건, 아이디어에 대한 묘사를 의미한다.

📚 데이터베이스

  • 데이터베이스: 데이터의 집합 → 특정 데이터를 확인하고 싶을 때 간단하게 찾아낼 수 있도록 정리된 형태
    • 조직이나 개인이 사용하는 조작 가능한, 저장된 데이터의 모임을 뜻한다.
    • 데이터베이스는 매우 가치있는 데이터들의 집합이며, 많은 사람들과 애플리케이션이 가끔씩 같은 시간에 접속할 수 있어야 한다.
  • 데이터베이스 내의 데이터는 영구적으로 보존되어야 한다. 따라서 하드디스크, SSD 등 비휘발성 저장장치에 저장한다.

⚙️ 시스템 내의 데이터베이스

  • 데이터베이스는 일반적으로 데이터센터의 서버에서 운용되었으나, 현재는 데이터베이스가 개인용 컴퓨터나 휴대용 기기에 내장되어 있기도 하다.
  • 웹 쇼핑 사이트에서 쇼핑을 하거나 예약을 할 때는 웹 시스템을 통해 데이터베이스에 접근한다.
  • 편의점에서 물건을 살 경우, 시스템을 직접 사용하지 않고 POS 계산대에서 데이터가 데이터베이스로 전송된다.
  • 휴대전화의 전화번호 목록은 휴대용 기기 안에 저장되어 있다.

DB와 DBMS

데이터베이스를 DB라고 하며, 이러한 데이터베이스를 관리하는 프로그램DBMS라 한다. DBMS를 사용하는 목적은 생산성 향상기능성, 신뢰성 확보를 하기 위함이다.

📄 DBMS 이전 - 파일 시스템

DBMS 이전에는 파일 기반으로 데이터를 저장했다. 디스크 안에 직접 프로그램, 데이터, 문서 등을 저장했으며, 초기에는 데이터베이스 애플리케이션이 직접 파일 시스템 위에 있었다.

동시성 처리 어려움

많은 사람들이 접근할 때의 처리를 하기 까다롭다. DBMS를 사용하면 즉각적으로 처리가 되는데, 파일 시스템은 일일히 값을 변경해줘야 한다. 이는 데이터 수정에 대한 일관성을 유지하기 힘든 것과도 연결된다. A 파일과 B 파일에 모두 존재하는 데이터의 상태가 서로 달라지기 쉽기 때문이다.

취약한 보안

다양한 파일, 접근 경로 등으로 인해 보안에 취약하다.

까다로운 검사

중복된 데이터 또는 잘못된 데이터가 입력되더라도 사람이 직접 검사하지 않는 한 이를 막을 수 없다.

😃 DBMS 장점

데이터 중복 최소화

데이터 중복이 최소화된다. DBMS는 데이터 중복을 허용하지 않기 때문이다.

데이터 공유

데이터를 공유한다. 애플리케이션들은 하나의 데이터베이스에서 데이터를 가져오면 된다.

무결성 유지

무결성을 유지할 수 있다. 예시로 특정 테이블이 다른 테이블을 참조하고 있을 때, 이 참조된 값은 참조된 테이블에 반드시 저장되어 있음을 보장한다.

보안 보장

보안을 보장한다. 데이터베이스에 접근할 때 관리자 이름과 비밀번호 등을 등록할 수 있다.

생산성 향상

생산성이 향상된다. DBMS는 데이터 검색, 추가, 삭제, 갱신과 같은 기본적인 기능을 제공한다.

높은 기능성

기능성이 높다. 복수 유저의 요청에 대응하거나 대용량의 데이터를 저장 및 고속 검색할 수 있는 기능을 제공하며, DB 관리 기능을 유저가 확장할 수 있어 유연하게 시스템을 개발할 수 있다.

높은 신뢰성

신뢰성이 높다. 대규모 데이터베이스는 많은 요청에 대응할 수 있도록 만들어져 있기에, 하드웨어를 여러 대로 구성하여 신뢰성을 높이며 성능 향상을 꾀한다. 이를 위해 확장성 (Scalability)과 부하 분산 (Load balancing)을 구현하며, 데이터베이스의 데이터를 다른 저장장치로 내보내거나 데이터베이스 안에 데이터를 집어넣는 등의 기능을 갖췄다. 이를 통해 데이터베이스를 간단하게 백업할 수 있다.

😞 DBMS 단점

  • 비용 존재 (H/W, DBMS, 운영비, 교육비, 개발비..)
  • 프로그램의 복잡화
  • 성능상의 오버헤드

DBMS의 단점보다 장점이 더 많고 크기 때문에, DBMS를 사용하는 것이 좋다.


💬 데이터베이스를 조작하는 언어 SQL

SQL (Structured Query Language)

  • SQL은 RDBMS (Relational Database Management System: 관계형 데이터베이스 관리 시스템)를 다룰 때 사용할 수 있는 유일한 언어이다. 가장 많이 사용되고 있는 데이터베이스가 RDBMS이기 때문에, SQL을 이해하는 것이 중요하다.

DML (Data Manipulation Language)

  • DB에 데이터를 추가, 삭제, 갱신하는 등 데이터를 조작할 때 사용된다.
  • SELECT, INSERT, UPDATE, DELETE가 해당된다.

DDL (Data Definition Language)

  • 데이터를 새롭게 정의할 때 사용된다.
  • CREATE, ALTER, DROP, RENAME, TRUNCATE가 해당된다.

DCL (Data Control Language)

  • 데이터베이스에 접근하고 객체들을 사용하도록 권한을 주고 회수하는 데 사용된다.
  • GRANT, REVOKE가 해당된다.

TCL (Transaction Control Language)

  • 논리적인 작업의 단위를 묶어서 DML에 의해 조작된 결과를 트랜잭션에 따라 제어하는 명령어이다.
  • COMMIT, ROLLBACK, SAVEPOINT가 해당된다.

⏫ 데이터베이스의 추상화 레벨

데이터베이스의 추상화 레벨 영역은 view level, logical level, physical level로 나눌 수 있다. 각 레벨 간 서로 영향을 끼치지 않도록 하며, 일반적으로 각 레벨에 있는 인터페이스와 구성 요소들은 그 영역에서 변경되더라도 다른 곳에 심각한 오류를 발생시키지 않도록 정립되어야 한다. (단, 심하게 변경하면 영향을 받을 가능성이 있다.)

view level

  • 응용 프로그램은 데이터 타입의 세부 정보를 숨길 수 있다. 또는 보안 목적으로 특정 정보를 숨길 수도 있다.
  • 사용자가 보는 데이터를 추상화한 영역이다.
  • 논리적 스키마 (logical schema)에 의존한다.
  • 위의 chatGPT의 답변에 따르면, 데이터베이스에 있는 데이터를 원하는 형식으로 가공하여 제공하는 영역인 것이 핵심인 것 같다.

logical level

  • 데이터베이스 안에 저장되어 있는 데이터를 묘사하며, 데이터 간의 관계를 표현하는 레벨이다.
  • 데이터베이스 관리자가 주로 작업하는 영역이다.
  • 데이터의 논리적 구조를 정의한다.
  • logical data independance: view schema의 변경 없이 logical schema 변화

physical level

  • 데이터가 어떻게 저장되어 있는지를 정의한다.
  • 즉, 데이터베이스의 물리적 구조와 관련이 있다.
  • physical data independance: logical schema의 변경 없이 physical schema 변화

🔗 참고 자료


부족하거나 설명을 보완해야 할 것이 있다면 댓글 부탁드립니다 😃

profile
개발이 너무 좋아요

0개의 댓글