안녕하세요. SQLER의 코난 김대우입니다.
이번 강좌에서는, 1-2. 왜 데이터베이스를 만들었으며 왜 사용하는가를 진행 하겠습니다.
SQLER에서 진행되는, 챗GPT와 함께 배우는 SQL Server 강좌 목록
이번에 소개해 드릴 내용은 왜 데이터베이스를 만들었으며, 왜 사용하는지 살펴봅니다. 그리고, 현재 DBMS의 일반적인 기능들에 대해 간략히 소개합니다.
TL;DR
데이터베이스는 정보를 체계적으로 저장하고 관리하는 시스템으로, 데이터를 구조화하여 저장합니다. SQL Server는 관리 기능을 갖춘 데이터베이스의 한 종류로 다양한 분야에서 데이터 관리에 활용됩니다.
자료와 정보
자료(Data)와 정보(Information)는 비슷한 개념이지만, 약간의 차이가 있습니다. 자료는 수집된 숫자, 문자, 기호 등이 원시적인 형태로 존재합니다. 반면에 정보는 자료가 분석과 처리를 거쳐 가공된 결과물을 말합니다.
정보는 자료가 정제되고 의미를 부여받은 단계로, 특정한 목적을 위해 유용한 형태로 가공된 것입니다. 우리는 자료를 수집하고, 분석하며 처리함으로써 정보를 만들어냅니다. 예를 들어, 온도 데이터 자료를 수집했다면, 이를 분석하여 오늘의 날씨 정보를 알 수 있습니다.
사실 자료와 정보를 엄격히 구분할 필요는 없습니다. 정보과학(Information Science) 측면에서 의미가 있으나 개념을 설명하거나 상황에 따라 구분하기 위해 사용되는 용어입니다. 중요한 점은 자료를 분석하고 처리함으로써 우리가 유용한 정보를 얻을 수 있다는 것입니다.
☑️ 챗GPT 활용: 학문 분야 - 정보과학(Information Science)에 대해서 알려줘
데이터베이스란 무엇인가?
데이터베이스는 위에서 간략히 소개해 드린 자료나 정보를 저장하기 위한 저장 장치 또는 저장소를 의미합니다. 데이터베이스는 데이터를 체계적으로 구조화하여 관리할 수 있는 환경을 제공하며, 데이터베이스들을 관리하기 위한 시스템을 일반적으로 데이터베이스 관리 시스템(Database Management System 또는 DBMS)이라고 부릅니다.
데이터베이스 관리 시스템은 보통 “DB”라고 줄여 부르며, 데이터베이스 생성, 수정, 검색, 삭제 등 다양한 작업을 수행할 수 있게 해 줍니다.
우리가 공부할 SQL Server 역시 DBMS의 일종으로, 여러 개의 데이터베이스를 생성하고 관리할 수 있는 종합적인 기능을 제공합니다. 데이터베이스는 현대 비즈니스에서 매우 중요한 역할을 수행하며, 다양한 분야에서 데이터의 저장과 관리를 위해 활용됩니다.
데이터베이스와 도서관
데이터베이스를 이해하기 위해 멀리 가실 필요 없이 도서관에 대해서 생각해 보시죠.
데이터 저장
도서관에는 수만 권의 많은 책들이 있습니다. 이 책들을 도서관에 보관하는 이유는 필요할 때마다 찾아볼 수 있기 때문입니다. 즉, 정보를 중앙에 모아두고 필요한 사람들이 이를 활용할 수 있도록 하는 것입니다.
마찬가지로 DBMS는 데이터베이스에 데이터를 저장함으로써 필요할 때마다 사용자가 접근해 활용할 수 있습니다.
빠른 검색 장치
이런 경우는 어떨까요? 한 학생이 도서관에 와서 김호연 작가님의 “불편한 편의점" 책을 찾으려고 합니다. 도서관에는 수많은 책들이 쌓여있는데, 한 권의 책을 찾기 위해서는 첫 번째 책부터 마지막 책까지 일일이 찾아야 책을 찾을 수 있을 것입니다.
1만 권의 책이 있다면 평균적으로 5천 번째 정도에 책을 찾을 수 있을 것입니다. 불편하겠죠? 그래서 도서관에서는 수많은 책을 빠르게 찾기 위한 도서 분류법(한국십진분류법)이나 가나다 순서에 따라 책을 배치하여 효율적으로 찾을 수 있도록 배치하고 있습니다.
☑️ 챗GPT 활용: 도서 분류법 - 한국십진분류법 에 대해서 알려줘
마찬가지로, DBMS에서도 많은 자료들을 효율적으로 검색하기 위한 장치가 제공됩니다. 이를 색인(Index)이라고 합니다. 색인은 데이터베이스 내의 항목들을 특정 기준에 따라 정렬하여 빠르게 찾을 수 있도록 도와주는 기능입니다.
동시 공용성 처리
김호연 작가님의 “불편한 편의점"은 베스트셀러로 많은 사람들이 읽고 싶어 합니다. 하지만 현재 도서관에 책은 단 한 권이 비치되어 있습니다. 뿐만 아니라, 도서관 관리자 분들이 책을 관리하기 위해 바코드를 붙이거나 대출 후 반납 책장에 놓인 상태로 오래 방치되는 등의 상황도 있을 수 있어 책을 빨리빨리 읽기가 쉽지 않은 상황이 생기기도 합니다.
동시에 많은 사람들이 같은 책을 읽기 위해 대기하게 되고, 동시에 책을 쓰려는 사람들이 많아지면 병목 현상이 발생합니다. 바꿔 말하자면, 원하는 책을 빠르게 읽을 수 없고, 이용하는 데 시간이 오래 걸리는 상황이 발생하겠죠.
DBMS는 동시 공용성 처리를 제공하여 이러한 문제들을 해결합니다. 동시 공용성 처리란 여러 사용자가 동시에 데이터베이스에 접근하고 작업할 수 있는 기능을 말합니다. 즉, 동시에 많은 사람들이 데이터베이스에 접근하여 필요한 정보를 빠르게 조회하고 수정할 수 있도록 여러 기능을 지원합니다.
데이터 중복성
베스트셀러 도서인 김호연 작가님의 “불편한 편의점"을 도서관에서 이용하려는 사람들이 많이 있습니다. 하지만, 도서관에 책이 한 권뿐이라 불만을 표시하는 사람들이 많아집니다. 올 때마다 책을 볼 수 없으니까요. 그래서 도서관은 어쩔 수 없이 책을 5권 더 구매해 도서관에 비치합니다.
이러한 중복 도서 배치는 여러 가지 문제를 야기할 수 있습니다. 대표적으로 저장 공간을 낭비하게 됩니다. 동일한 책이 중복으로 존재하면 필요 이상으로 공간을 차지하게 되어 효율적인 도서관 책장 활용에 제약이 생길 수 있습니다.
아울러, 데이터 불일치 문제가 발생할 수 있습니다. 중복 배치된 책들은 각각의 복사본이기 때문에 업데이트나 수정이 필요한 경우 동일한 작업을 반복해야만 합니다. 이는 데이터의 일관성을 유지하기 어렵게 만들며, 데이터 불일치 문제를 야기할 수 있습니다.
DBMS는 이러한 문제를 해결하기 위한 장치를 제공합니다. DBMS를 사용하면 중복 데이터를 최소화하고 효율적으로 데이터를 관리할 수 있습니다.
데이터베이스 관리 시스템은 데이터의 중복성을 최소화하기 위해 정규화(Normalization) 기법과 여러 제약(Constraint) 기능을 사용합니다. 정규화는 데이터를 효율적으로 구조화하여 중복을 줄이고 데이터 일관성을 유지하는 방법입니다. 나중에 강좌에서 조금 더 다루게 되니 지금은 이런 게 있구나 정도만 기억해 두세요.
☑️ 챗GPT 활용: 데이터베이스 정규화(Normalization) 에 대해서 알려줘
이렇게 DBMS를 활용하면 데이터의 중복성 문제를 최소화하고 효율적인 데이터 관리를 할 수 있습니다.
데이터의 종속성(Data Dependency)
도서관의 책이 이북으로 출판되면서, 책을 보는 방식도 다변화됩니다. 선도적으로 이북을 출판한 A 회사가 이북 뷰어 애플리케이션을 만들고 특정 포맷으로 저장되어야만 동작하도록 이북을 만들어서 여러 도서관과 출판 업계가 어려움을 겪게 됩니다.
데이터도 마찬가지입니다. 어떤 애플리케이션에서는 데이터를 특정한 형식으로 저장해야만 합니다. 이는 데이터 종속성 문제를 야기할 수 있습니다. 데이터 종속성은 데이터가 특정 형식에 종속되어 있어서 해당 애플리케이션에서만 사용될 수 있다는 의미입니다.
이러한 종속성 문제는 몇 가지 문제점을 야기할 수 있습니다.
첫째, 데이터를 다른 애플리케이션으로 이전하거나 공유하는 경우에 어려움을 겪을 수 있습니다. 다른 애플리케이션은 해당 데이터를 인식하고 처리할 수 없기 때문입니다.
둘째, 애플리케이션 업그레이드나 변경 시에 데이터 구조나 형식을 변경해야 할 때 문제가 발생할 수 있습니다. 만약 데이터 종속성이 매우 강력하다면 데이터를 사용하는 모든 애플리케이션을 수정해야 할 수도 있습니다. 이는 번거로운 작업이 될 수 있고, 시간과 비용을 소모할 수 있습니다. 즉, 표준화되고 유연성을 가진 데이터 교환 방식이 필요해집니다.
데이터베이스는 데이터에 대해 범용적인 저장 방식과 접근성을 제공합니다. 다양한 애플리케이션에서 접근해 데이터를 활용할 수 있도록 SDK와 라이브러리를 제공합니다. 거의 모든 프로그래밍 언어에서 데이터베이스를 접근해 데이터를 조작할 수 있도록 지원하기 때문에 종속성 문제를 해결하며, 업계 표준 데이터 형식인 XML이나 JSON 등의 데이터를 데이터베이스에 포괄적인 형태로 저장해 데이터 종속성 문제를 해결하고 유연하게 데이터를 활용할 수 있습니다.
☑️ 챗GPT 활용: 애플리케이션 개발에 사용되는 SDK와 라이브러리에 대해서 알려줘
☑️ 챗GPT 활용: XML과 JSON에 대해서 알려줘
데이터베이스 단점
장점만 있나요? 그렇지 않습니다. 데이터베이스를 이용할 경우 단점도 있습니다.
운영비 증가
DBMS를 구축하고 유지하기 위해서는 많은 인력과 시스템 리소스가 필요합니다. 데이터베이스 서버, 저장장치, 네트워크 인프라 등의 구축과 유지보수 및 운용 인력에는 상당한 비용이 필요합니다. 물론 클라우드로 이전해 인프라 비용을 절감하고 효율적으로 운영할 수도 있습니다.
자료 처리 복잡도 증가
데이터베이스에 접근해 질의(Query)하고 적재하기 위해서는, 높은 수준의 프로그래밍 지식이 요구되며, 효율적인 쿼리 작성 및 데이터베이스 설계 등에 대한 전문 지식을 보유한 인력이 필요합니다.
DBMS 장애 발생 대비를 위한 작업이 필요
시스템 장애 발생 시 데이터 손실을 최소화하고, DBMS를 빠르게 복구하는 작업을 수행해야 합니다. 이러한 백업/복구/이중화/보안 구성 작업은 추가적인 관리 비용과 리소스가 필요합니다.
DBMS는 시스템의 성능에 여러 영향을 받을 수 있습니다.
데이터베이스의 크기와 복잡성, 동시 접속자 수 등이 DBMS의 성능에 영향을 미칠 수 있습니다. 따라서 시스템의 성능을 유지하는 데에 추가적인 관리와 최적화 작업이 필요합니다.
이러한 단점들은 DBMS의 구축과 운영에 부담 줄 수 있습니다. 하지만, 전문 지식을 보유한 개발자의 노력으로 이러한 단점을 극복할 수 있습니다.
DBMS시스템에 대한 조금 더 깊은 이야기는 관계형 데이터베이스(RDBMS) 이해 강좌에서 자세히 다룰 예정이니 도움 되시길 바랍니다.
SQL 강좌 책 구매
강좌가 도움이 되셨다면, 책으로 구매 가능합니다. 책 판매 수익금은 전액 기부되며, 아래 링크에서 구매하시면 더 많은 금액이 기부됩니다.