본문 바로가기
Programming/PHP+MySQL(Database)

정보들의 집합소, 데이터베이스 알아보기!

by 어깨 :) 2023. 2. 21.
728x90

오늘은 IT에서 가장 기본저인 데이터베이스에 대해서 알아보도록 하겠습니다.

 

그럼 바로 데이터베이스, DBMS, 관계형 데이터베이스, SQL 순서로 공부해 볼까요?

 

 

1. 데이터베이스 공부하기 전에..

커다란 도서관에 있을 때 우리가 쉽게 원하는 책을 찾을 수 있는 것은 책에 대한 정보가 잘 정리되어 있기 때문입니다.

여기서 말하는 책의 정보는 도서명, 출판사, 발행 연도, 작가명 등 책을 찾을 때 필요한 내용을 의미합니다.

이처럼 어떤 정보를 잘 정리해서 필요한 것들만 쏙쏙 뽑아낼 수 있도록 데이터를 저장하는 공간을 '데이터베이스'라고 합니다.

 

데이터베이스의 사전적 의미는 "여러 사용자가 원하는 정보를 얻기 위해 모아둔 자료의 집합"을 말합니다.

구조적으로 통합된 하나의 주제와 관련된 의미 있는 데이터의 모음이라고  할 수 있습니다.

 

 

1-1. 데이터베이스란?



서버는 사용자가 무언가를 요청하면(예를 들어, 로그인 정보, 주문 정보 등) 해당 정보를 제공하는 역할을 하는 컴퓨터입니다. 그리고 서버에서 '정보'를 가져오기 위해 필요한 것이 데이터베이스입니다.

 

정보가 무작위로 아무렇게나 나열되어 있으면 서버가 사용자의 요청 정보만 쏙 뽑아 제공하기 어렵게 됩니다. 따라서 정보나 데이터를 속성별로 묶어 정리해서 사용자가 요청한 정보를 빠르게 제공할 수 있기 위해 데이터베이스를 사용하게 됩니다.

 

2. DBMS(Data Base Management System)

DBMS는 데이터베이스를 관리하는 '시스템'을 의미합니다. 하나의 식당에서 음식을 제공허가 위해 손님이 들어오면 자리를 배정하는 순서, 대기 순서를 작성하는 방법 등 각 식당만의 운영 노하우나 규칙이 있을 것입니다. 이처럼 데이터베이스를 운영하기 위한 규칙이 정해져 있고 이를 조작하는 별도의 소프트웨어를 '데이터베이스 관리 시스템(DBMS)'라고 합니다.

 

DBMS의 대표적인 종류로는 오라클, MYSQL, Maria db 등이 있습니다.

오라클은 오라클사에서 제공하는 DBMS로, 윈도즈와 리눅스 등 다양한 운영체제에서 사용할 수 있고 다른 DBMS에 비해 대용량의 데이터를 관리하기에 적합하므로 글로벌 데이터베이스 시장에서 점유율이 가장 높고 주로 큰 서버를 운용하는 대기업에서 많이 사용합니다.

 

 

3. 관계형 데이터베이스(Relational Database Service)


관계형 데이터베이스(RDS)는 데이터베이스의 한 종류로 실무에서 가장 많이 사용하는 방식입니다.

데이터베이스 내의 데이터를 '회원', 데이터로 이루어진 테이블을 '동아리'라고 생각해 볼까요?

각 사람들은 모임을 이루고 관계를 이루게 됩니다. 서로 다른 모임과 연결되기도 합니다. 이처럼 관계형 데이터베이스는 데이터 간에 관련이 있는 것을 서로 연결해 관계로 표현하는 데이터베이스를 말합니다. 

그리고 서로 관련 있는 데이터들을 '테이블'로 표현하는데, 테이블 안의 데이터를 '키(key)'와 '값(value)'로 표현합니다.

 

 

 

3-1. 관계형 데이터베이스를 사용하는 이유

그럼 우리는 관계형 데이터베이스를 사용해야 할까요?

이 질문에 대해서는 몇 가지로 답할 수 있습니다.

  • 서로 다른 테이블에서 관계된 각 속성을 통해 조인 기능을 사용할 수 있다.
  • 구조화된 데이터 형태 덕분에 원하는 데이터를 쉽게 요청, 삽입, 삭제, 수정할 수 있다.
  • 데이터들을 쉽게 집계 및 분석할 수 있다.
  • 인덱스를 추가하여 빠른 검색을 할 수 있다.
  • ACID 트랜잭션(처리) 기능이 있다.

여기서 잠깐!!

ACID는 무엇인가?

데이터베이스 시스템의 '무결성(데이터의 정확성과 일관성을 유지하고 보증하는 것)'을 보장하는 것을 말한다.

 

 

 

  • Atomicity (원자성)
    트랜잭션과 관련된 작업들이 모두 수행되었는지 아니면, 모두 실행이 안되었는지를 보장하는 능력.예 : 자금 이체는 성공할 수도 실패할 수도 있지만, 중간 단계까지 실행되고 실패하는 일은 없도록 하는 것.
  • Consistency (일관성)
    트랜잭션이 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 유지하는 것.예 : 무결성 제약이 모든 계좌는 잔고가 있어야 한다면, 이를 위반하는 트랜잭션은 중단된다.
  • Isolation (고립성)
    트랜잭션을 수행 시 다른 트랜잭션의 연산 작업이 끼어들지 못하도록 보장하는 것. 즉, 트랜잭션 밖에 있는 어떤 연산도 중간 단계의 데이터를 볼 수 없음을 의미한다.예 : 은행 관리자는 이체 작업을 하는 도중에 쿼리를 실행하더라도 특정 계좌간 이체하는 양 쪽을 볼 수 없다.
  • Durability (지속성)
    DBMS가 사용자에게 트랜잭션 커밋(commit) 응답을 했을 경우, 설사 데이터베이스 객체에 대한 해당 변경 사항이 디스크에 반영(flush) 되기 전에 시스템 장애가 발생하였더라도 해당 트랜잭션의 커밋은 보장 되어야 한다는 속성.

https://velog.io/@jeb1225/ACIDvsBASE

 

 

3-2. 관계형 데이터베이스 구성

관계형 데이터베이스의 속성을 의미하는 용어로는 '열, 칼럼, 속성'이 있습니다. 그리고 해당 속성을 가진 하나의 데이터를 '행, 로우, 튜플'이라고 합니다.

 

 

 

관계형 데이터베이스에서는 테이블과 속성을 처음 생성했으면 처음 생성한 속성과 다른 데이터는 추가할 수 없습니다. 이처럼 테이블이 미리 정해진 형태를 '스키마(Schema)'라고 합니다. 그리고 스키마의 원소 집합을 '인스턴스(instance)'라고 합니다.

 

각 스키마에서 인스턴스가 하나씩 선택되어 각 원소들은 서로 관계를 맺게 됩니다. 이 관계들이 모여 테이블(릴레이션)이 되며 이렇게 표현된 데이터베이스를 관계형 데이터베이스라고 부르게 됩니다.

 


 

4. SQL(Structured Query Language)

많은 종류의 데이터베이스 중에서 관계형 데이터베이스를 관리하기 위해 만들어진 언어를 'SQL(Structured Query Language)라고 합니다. 

SQL은 Structured라는 단어에서 알 수 있듯이 구조를 갖춘 언어를 의미합니다.

구조를 잘 갖추었다는 뜻은 어떤 정보를 담을 테이블이 있고, 지정된 속성이 있으면 해당 속성을 변경할 수 없고, 지정된 형식의 데이터로만 저장할 수 있다는 것을 의미합니다.

SQL을 사용하는 때는 언제일까요?

  • 복잡한 쿼리나 데이터베이스 분석이 필요할 경우
  • 높은 부하가 예상될 경우
  • 데이터가 크게 쌓이거나 데이터 구조를 변경할 일이 없는 경우

 

 

5. 쿼리(Query)

쿼리란, 원하는 데이터만 뽑을 수 있도록 서버가 데이터베이스에 요청하는 메시지입니다. 개발자가 쿼리를 짠다는 말을 많이 들어보셨을 텐데 정확한 의미는 메시지를 요청하는 행위라고 보면 됩니다. 쿼리를 통해 데이터베이스를 관리하기 위한 명령을 하거나, 원하는 정보를 뽑기 위한 요청 작업을 할 수 있게 됩니다.

 

 

다양한 조건이 추가되는 상황에서 데이터의 규모와 작업의 복잡성이 큰 경우에도 쿼리문을 이용하면 빠르고 효율적으로 정보를 데이터를 추출할 수 있게 됩니다.

 

 

오늘은 데이터베이스의 전반적인 것에 대해 공부해봤습니다.

도움이 되실 바라면서 이만 마치겠습니다.

감사합니다.

 

 

 

참고서적: 박민경. 『개발자 상식』. 로드북. 2021

728x90