데이터 베이스/SQL 첫걸음(인프런 강의)

Ch01. 데이터 베이스 소개 - 데이터베이스 관리 시스템이 필요한 이유

webmaster 2025. 9. 23. 18:47
728x90

우리가 쇼핑몰을 운영하면서 생기는 수많은 데이터들, 예를 들어 고객 정보, 상품 정보, 주문 내역 같은 것들을 어딘가에는 저장해야 정보로 만들 있다. 이런 데이터들을 그냥 머릿속에 기억해 수는 없다

 

우리는 데이터 저장 방식에 대해 고민해야 할까?

쇼핑몰이 점점 커지면서 데이터는 기하급수적으로 늘어난다. 처음에는 되는 주문이라 손으로 메모장이나 장부

적을 수도 있다. 하지만 하루에 수백, 수천 건의 주문이 들어오고, 수만 명의 고객 정보를 관리해야 한다면? 그때도

먹구구식으로 데이터를 관리할 있을까? 당연히 어렵다. 데이터가 엉망으로 관리되면, 필요한 정보를 제때 얻을

, 결국 우리 쇼핑몰 운영에 차질이 생긴다. 그래서 데이터를 '어떻게 보관하고 관리할 것인가' 아주 중요한

제가 된다.

 

데이터를 어디에 보관할 것인가?

가장 원시적인 방법부터 생각해 보자.

  • 기억: 사람의 기억력은 한계가 있고 부정확하다. 우리 쇼핑몰의 모든 거래를 내가 다 기억할 수는 없다.
  • 종이 문서: 초창기 작은 가게라면 가능할 있다. 주문서, 고객 명부 등을 수기로 작성한다. 하지만 데이터가 많아지면 책상이 서류로 뒤덮일 거고, 특정 내용을 찾으려면 하루 종일 종이만 뒤적거려야 것이다. 분실 위험도 , 수정도 어렵고, 여러 사람이 동시에 보기도 힘들다.

컴퓨터 파일 시스템을 이용한 데이터 관리

그럼 컴퓨터를 활용하는 방법을 생각해보자. 가장 먼저 떠오르는 아마 파일(File) 시스템 것이다.

 

예시: 텍스트 파일(txt) 데이터를 관리하는 경우

가장 단순한 텍스트 파일(메모장) 데이터를 관리해보자.

고객 정보는 customers.txt 같은 파일에 저장하고, 상품 목록은 products.txt 파일에 저장하고, 주문 내역은 orders_202505.txt 같은 파일에 날짜별로 저장하는 방식이다.

//Customers.txt
C001,네이트,010-1234-0001,서울시 강남구 테헤란로 123
C002,션,010-1234-0002,서울시 서초구 강남대로 123
C003,김수로,010-1234-0003,서울시 서초구 강남대로 777

//products.txt
P01,프리미엄 키보드,150000,50
P02,고성능 마우스,80000,120
P03,QHD 27인치 모니터,350000,30

//orders-202505.txt
001/2025-05-30/C001/P01/1
002/2025-05-31/C003/P02/2

위와 같이 텍스트 파일은 간단하게 정보를 나열할 있지만, 데이터의 구조가 명확하지 않고, 특정 데이터를 찾거나 수정하기가 어렵다.
콤마(,) 슬래시(/) 같은 특정 문자로 데이터를 구분해야만 한다.

 

예시: 엑셀(스프레드시트) 데이터를 관리하는 경우

텍스트 파일에 저장하는 것보다는 구조화된 엑셀 형식의 파일로 저장하고 관리하는 것이 나은 방법이다.

고객 정보는 customers.xlsx 파일에 저장하고,상품 목록은 products.xlsx 파일에 저장하고, 주문 내역은 orders_202505.xlsx 같은 파일에 날짜별로 저장하는 방식이다.

customers.xlsx

고객ID  이름 전화번호 주소
C001 네이트 010-1234-0001 서울시 강남구 테헤란로 123
C002 010-1234-0002 서울시 서초구 강남대로 123
C003 김수로 010-1234-0003 서울시 서초구 강남대로 777

products.xlsx

상품ID 상품명 가격 재고
P01 프리미엄 키보드 150,000 50
P02 고성능 마우스 80,000 120
P03 QHD 27인치 모니터 350,000 30

order_202505.xlsx

주문번호 주문일 고객 ID 상품ID 수량
001 2025-05-30  C001 P01 1
002 2025-05-31 C003 P02 2

 

  • 엑셀은 행(Row)과 열(Column)로 데이터가 명확하게 구조화되어 있어 텍스트 파일보다 훨씬 보기 편하고 관리하기 좋다. 그리고 정렬, 필터링, 간단한 계산 등 다양한 기능도 활용할 수 있다.
  • 실제로 작은 규모의 작업이나 개인 프로젝트에서는 이렇게 파일 기반으로 데이터를 관리하기도 한다. 초기에는 이게 보일 수도 있다.
  • 하지만 우리 쇼핑몰처럼 규모가 점점 커지고 데이터가 복잡해지기 시작하면, 엑셀 형식을 포함한 시스템은 여러 가지 심각한 문제점들을 드러내기 시작한다.

파일에 직접 저장하고 관리하는 것의 문제점

 데이터 중복과 불일치

문제 상황 우리 쇼핑몰의 규모가 커지면서, 고객 관리팀과 주문 처리팀이 각자 업무에 필요한 엑셀 파일을 따로 관리하기 시작했다고 가정해 보자.


고객 관리팀 고객의 전체 정보를 담은 고객마스터. xlsx 파일을 관리한다. 여기에는 고객의 주소, 연락처, 등급 등의 정보가 있다.
주문 처리팀 매일 들어오는 주문을 처리하기 위해 일일주문처리. xlsx 파일을 사용한다. 신속한 업무를 위해 자주 주문하는 고객의 정보(이름, 주소, 연락처) 파일에 복사해두고 사용한다.

어느 , 단골 고객인 '네이트'님이 이사를 해서 고객센터에 주소 변경을 요청했다. 고객 관리팀 직원은 `고객마스터.xlsx` 파일에 있는 네이트 고객의 주소를 '서울시 강남구'에서 '서울시 마포구' 정확하게 수정했다

 

며칠 , 네이트 고객이 새로운 주문을 넣었다. 그런데 주문 처리팀 직원은 바쁜 나머지 `고객마스터.xlsx` 파일을 확인하는 대신, 자신들의 `일일주문처리.xlsx` 파일에 저장되어 있던 기존의 '서울시 강남구' 주소를 그대로 사용하여 배송을 처리했다.

 

결과

  • 데이터 중복(Redundancy): '네이트' 고객의 주소 정보가 고객마스터. xlsx 와 일일주문처리. xlsx 두 개의 파일에 중복으로 저장되어 있다.
  • 데이터 불일치(Inconsistency): 이제 '네이트' 고객의 주소는 `고객마스터.xlsx` 에는 '서울시 마포구', `일일주문처리.xlsx` 에는  서울시 강남구 기록되어, 동일한 고객에 대한 정보가 서로 다른 값을 갖게 되었다.
    • 결국  주문은 잘못된 주소로 배송되었고, 이는 배송 지연, 고객의 불만 제기, 상품 회수  재배송에 드는 추가 비용 발생 심각한 문제로 이어진다
    • 어떤 주소가 진짜 맞는 주소인지 확인하기 위해 여러 파일을 뒤져봐야 하는 혼란도 발생한다.
  • 실무에서는: 이처럼 데이터가 여러 파일에 나뉘어 중복 저장되면 저장 공간 낭비는 물론, 하나의 정보가 수정될 때마다 관련된 모든 파일을 찾아 빠짐없이 수정해야 하는 번거로움이 생긴다. 담당자가 실수로 하나라도 놓치면 데이터는 어긋나 버리고, 이는 회사의 신뢰도 하락과 금전적 손실로 직결된다.

데이터 접근의 어려움

  • 문제 상황: 마케팅팀에서 "지난달에 '서울시 강남구'에 거주하는 고객들 중 '운동화'를 구매한 고객 명단을 뽑아주세요. 그리고 그 고객들의 총 구매액도 알려주세요."라고 요청했다고 해보자. 만약 우리가 고객 정보 파일, 상품정보 파일, 주문 내역 파일을 각각 따로 가지고 있다면 이 작업을 어떻게 해야 할까?
  • 결과: 먼저 주문 내역 파일들을 전부 뒤져서 지난달 '운동화' 구매 기록을 찾아야 한다. 그리고 주문의 고객 ID 가지고 고객 정보 파일에서 '서울시 강남구' 거주 고객인지 확인해야 한다. 수백, 수천 개의 파일이 있다면? 거의 수작업으로는 불가능에 가깝다. 설령 프로그래밍을 아는 개발자가 작업을 위한 코드를 매번 작성한다고 해도, 새로운 유형의 요청이 때마다 새로운 코드를 짜야하니 매우 비효율적이다.
  • 실무에서는: 데이터가 단순히 파일 덩어리로 존재하면, 원하는 조건으로 데이터를 검색하거나 여러 파일에 흩어져 있는 데이터를 조합해서 의미 있는 정보를 얻어내는 것이 어렵고, 시간도 많이 걸린다.

데이터 무결성 제약조건 적용의 어려움

  • 문제 상황: 데이터에는 일정한 규칙과 형식이 있어야 한다. 예를 들어, 우리 쇼핑몰에서 상품 가격은 항상 0보다 커야 하고, 주문 수량도 최소 1 이상이어야 한다. 회원의 아이디는 중복되어서는 된다. 이런 것들을 데이터 무결성 제약조건이라고 한다.
  • 결과: 일반적인 파일 시스템에서는 이런 제약조건을 강제하기가 어렵다. 직원이 실수로 상품 가격에 음수(-) 력하거나, 주문 수량에 0 입력해도 파일 자체는 그냥 받아들일 있다. 특히 아이디가 같은 사용자가 2명이라 심각한 문제가 발생할 것이다. 이렇게 잘못된 데이터가 시스템에 쌓이면 나중에 문제를 일으키게 된다. 주문관리 프로그램을 만들어서 사용한다고 가정해도 모든 유효성 검사를 데이터를 입력하는 애플리케이션(: 주문 프로그램)에서 일일이 책임져야 하는데, 이건 매우 번거롭고 빠뜨리기 쉽다.
  • 실무에서는: 데이터의 정확성과 일관성을 유지하는 것이 매우 중요하다. 파일 시스템은 이를 위한 체계적인 지원 부족하다.

동시성 제어 (Concurrency Control) 문제

  • 문제 상황: 우리 쇼핑몰이 잘 돼서 여러 명의 운영자가 동시에 주문을 처리한다고 생각해 보자. '프리미엄 키보드' 재고가 1 남은 상황이다.
    • 운영자 A 고객 전화를 받고 재고 파일(: 재고현황. xlsx) 열어보니 1개가 있어서 "구매 가능하다"라고안내했다. 거의 동시에 운영자 B 같은 파일을 열어 재고 1개를 확인하고 "구매 가능하다"라고 안내했다.
    • 운영자 A 주문을 접수하고 재고 파일의 재고를 1 0으로 변경한다. 동시에 운영자 B 주문을 접수하고 재고 파일의 재고를 1 -> 0으로 변경한다.
  • 결과: 고객 2명은 이미 주문을 완료했는데, 실제로는 재고가 1개밖에 없는 황당한 상황이 발생한다. 이런 문제를 동시성 제어 문제라고 한다. 여러 사용자가 동시에 같은 데이터에 접근해서 수정하려고 데이터의 일관성이 깨지는 것이다.
  • 실무에서는: 파일 시스템은 기본적으로 여러 사용자가 동시에 안전하게 데이터를 수정하는 것을 고려하여 설계되 않았다. 누가 먼저 파일을 열었는지, 수정 중인 내용은 어떻게 처리할지 등에 대한 복잡한 제어 로직이 없다.

보안 (Security) 문제

  • 문제 상황: 우리 고객 정보 파일에는 고객의 이름, 주소, 전화번호뿐만 아니라 민감할 수 있는 주민등록번호나 계좌 번호가 포함되어 있다고 가정해 보자. 파일을 누가 열어볼 있어야 할까? 모든 직원이 봐도 될까? 특정직원에게는 고객 이름과 연락처만 보여주고, 재무팀 직원에게만 계좌 번호를 보여주는 식으로 권한을 다르게 설정 있을까?
  • 결과: 일반적인 파일 시스템의 접근 권한 설정(읽기, 쓰기, 실행 권한 )만으로는 이렇게 세밀한 데이터 접근 제어 어렵다. 파일 전체에 대한 접근 권한만 제어할 있을 , 파일 내용의 특정 부분에 대한 접근을 사용자별로 르게 설정하기는 거의 불가능하다. 이는 데이터 유출의 위험을 높인다.
  • 실무에서는: 중요한 비즈니스 데이터, 특히 개인 정보는 철저한 보안 관리가 필수적이다. 파일 시스템만으로는 요구사항을 충족시키기 어렵다.

데이터 복구(Recovery) 백업(Backup) 어려움

  • 문제 상황: 만약 우리 쇼핑몰의 모든 주문 내역과 고객 정보가 저장된 하드디스크가 갑자기 고장 나면 어떻게 될까? 또는 직원이 실수로 중요한 데이터 파일을 삭제해 버렸다면?정기적으로 파일을 백업해두지 않았다면 모든 이터를 날리는 끔찍한 상황이 발생할 있다.
  • 결과: 설령 백업을 해두었다고 해도, 시스템 장애 직전의 가장 최신 상태로, 그리고 데이터들 간의 일관성을 유지하면서 복구하는 것은 매우 복잡하고 어려운 작업이다. 예를 들어, 주문 처리 중에 시스템이 멈췄다면, 주문 정보 저장되었는데 결제 정보는 저장되지 않은 불일치 상태로 복구될 수도 있다.
  • 실무에서는: 데이터는 비즈니스의 핵심 자산이므로, 어떤 장애 상황에서도 안전하게 보호되고 신속하게 복구될 있는 체계가 필요하다. 파일 시스템은 이를 위한 정교한 메커니즘을 제공하지 않는다.

데이터베이스 관리 시스템의 등장

지금까지 파일 시스템으로 데이터를 관리할 발생할 있는 다양한 문제점들을 살펴보았다. 데이터 중복 불일치, 데이터 접근의 어려움, 무결성 유지의 어려움, 동시성 제어 문제, 보안 문제, 그리고 회복과 백업의 어려움까지. 우리 쇼핑몰이 성장함에 따라 이런 문제들은 점점 심각해지고, 결국에는 쇼핑몰 운영 자체가 불가능해질 수도 있다.

 

바로 이러한 문제점들을 해결하기 위해 등장한 것이 데이터베이스 관리 시스템이다.

 

데이터베이스 관리 시스템은 단순히 파일에 데이터를 모아둔 것을 넘어, 데이터를 보다 체계적으로 구성하고, 앞서 언급된 문제점들을 해결하기 위한 다양한 기능들을 제공한다.

  • 데이터 중복을 최소화하고 일관성을 유지하며,
  • 다양하고 복잡한 조건으로도 쉽게 데이터를 검색하고 활용할 있게 하며,
  • 데이터의 무결성 규칙을 강제하여 데이터의 품질을 높이며,
  • 여러 사용자가 동시에 접근해도 데이터가 안전하게 처리되도록 제어하며,
  • 정교한 보안 정책을 통해 데이터 접근을 통제하며,
  • 장애 발생 데이터를 안전하게 복구하고 백업할 있는 기능을 제공한다.

, 데이터베이스 관리 시스템은 우리 쇼핑몰의 소중한 데이터를 안전하고 효율적으로 관리하여, 우리가 필요로 하는 정보를 언제든지 정확하게 얻을 있도록 도와주는 핵심 기반 시설이라고 있다.

728x90