티스토리 뷰

데이터베이스

데이터베이스와 DBMS

지우 초이 2021. 4. 4. 09:55

데이터베이스

컴퓨터의 가장 강력한 기능 중 한가지는 데이터를 저장할 수 있는 능력이라고 생각한다.

이를 통해 사람보다 데이터를 훨씬 더 많이 기억할 수 있고, 그 데이터를 원할 때 꺼낼 수 있다.

요즘 IT서비스의 근간은 바로 이런 데이터베이스에 각종 데이터를 저장하고 그 데이터를 관리하는 시스템을 기반으로 한다고 생각한다.

 

데이터베이스 개론이라는 책에서 보면, 데이터베이스를 "특정 조직의 여러 사용자가 공유하여 사용할 수 있도록 통합해서 저장한 운영 데이터의 집합" 이라고 일컫는다.

 

이런 정의를 통해 데이터베이스의 특징을 살펴보자면...

 

1) 데이터베이스의 데이터 모음은 정제되어있어야 한다.

특정 조직의 여러 목적을 가진 사용자가 공유할 수 있고 그 데이터를 통합할 수 있으려면,

기본적으로 정제된 (혹은 정제할 수 있는) 데이터 셋이어야 한다.

 

2) 공유목적의 데이터이다. 따라서 다양한 사람들에 의해 조회될 수 있어야 한다.

점차적으로 현실세계의 상태를 반영하면서 수정,삭제를 통해 데이터 시스템을 지속적으로 운영할 수 있어야 한다.

 

3) 운영/관리하기 좋은 형태여야 한다.

데이터베이스의 개론이란 책에서는 "데이터의 중복성을 막는것이 데이터베이스의 핵심 개념"이라고 말하였다. 

통합데이터는 데이터의 중복을 최소화 하고 통제가 가능한 중복만 허용한다는 특징을 가지고 있다.

또한, 이런 데이터는 운영(지속) 가능해야 한다.

 

4) 많은 데이터를 가용할만한 시간안에 접속 가능해야한다.

굳에 데이터베이스를 쓰는 이유는 저장하고 관리해야 하는 데이터의 수가 많을것이다.

이런 데이터를 어디에 캐싱해놓고 하는게 아니라, 실시간으로 접근해도 가용가능한 시간안에 접속할 수 있어야 한다. 

 

5) 데이터를 조회하기 위한 일관적인 방법을 제공해야한다.

데이터베이스에서 데이터를 조회하기 위해서는 실제 데이터에 직접 접근하는 방식이 아닌 데이터의 내용과 값을 통한 조회 방법이 필요하다. 

보통 데이터베이스에서는 SQL을 제공하고, SQL을 통해서, 값을 통해 데이터에 접근할 수 있다.

 

6) 동시적인 공유도 가능해야한다.

데이터베이스의 목적은

1. 많은양의 데이터

2. 다양한 사람들에 대한 데이터 처리를 할 수 있어야한다.

실제로 이런 처리는 까다로워서, DBMS등의 솔루션등을 활용한다.

 


데이터베이스가 위와 같은 특징을 잘 지키는지 실제 DB파일을 예시로 들어서 보면 좋을것같다고 생각한다.

데이터베이스 파일은 TPC-H라는 데이터베이스 벤치마크용 데이터베이스 셋을 사용하였다.

 

 

1. 데이터베이스는 많은 양의 데이터베이스를 다룰 수 있어야 한다.

 

이 데이터는 약 120MB정도의 데이터이고, 안에만 8개의 테이블을 가지고 있다.

많은 양의 데이터를 가질 수 있어야 다룰 수 있다는것을 알 수 있다.

 

 

2. 데이터베이스는 정제되어있다. 

 

데이터베이스 안에는 다양한 스키마들이 존재하는데, 이 포맷으로 데이터베이스가 정렬되어있음을 알 수 있다.

아래의 화살표는 서로의 관계성을 나타낸다. 

 

위의 데이터베이스를 확인하기 위해 DB를 살펴볼 수 있는 DB Browser를 사용하였다.

 

 

DB Browser에서 db파일을 읽어서 저렇게 UI로 보여줄 수 있는것을 보면, DB파일의 구조가 저런 데이터들을 '많은양'의 '정형 데이터 (테이블)'를 저장하기에 적합한 구조임을 알 수 있었다.

 

 

 

3. 데이터를 조회하기 위한 일관적인 방법을 제공해야 하며 충분히 빨라야 한다.

위 데이터를 쿼리문을 통해서 간단하게 필터 검색해본 결과이다.

363ms라는 엄청 빠른 시간에 3111의 데이터 결과를 도출해냈다.

363ms면 가용할만 시간이라고 할 수 있다.

 

또 SQL이라는 문법을 사용해서 데이터에 직접 접근하는것이 아닌 데이터의 값을 통한 내용(값) 참조를 통해 조회를 할 수 있었다.

 

4. 수정, 삭제 데이터여야 하며, 중복된 값은 피해야 한다.

위 사진은 테이블을 만드는 사진인데, Not null (값이 비변 안될것), Unique (값이 중복되면 안될것) 등 각 row에 관리를 할 수 있는 여러가지 옵션들이 있다.

 

이런 특성들은 물론 모든 DB들이 가지는것은 아니지만, 이를 통해서 DB들이 여러 데이터를 관리할 때, 의미 없이 중복적인 데이터로 용량을 채우지 않도록  옵션을 제공하는것을 알 수 있었다.

 

5. 데이터베이스를 통해서 내용을 추가하거나 삭제할 수 있다.

DB Browser를 통해 새로운 데이터를 추가하거나 삭제할 수 있음을 보일 수 있다.

 

DBMS

이런 데이터베이스를 관리하기 위해서 어떤 방식을 사용할 수 있을까?

가장 대표적인 방법으로는 파일 시스템을 이용할 수 있겠다.

 

간단한 프로젝트를 진행할 때 참석률을 기록하기 위해서 단순하게 파일시스템을 활용해서 데이터 정보 저장을 진행했던 적이 있다.

물론 정식 DB가 아니지만, 단순 데이터 베이스를 저장하는 방식이 파일시스템을 통해 데이터베이스를 저장하는 방식과 비슷하다고 생각된다.

 

1. 위의  월/일 데이터를 기반으로 각 참석자에 따른 참석률을 계산하고자 할 때, 매우 애매했다.

 

위의 데이터는 월/일별 데이터의 참석 데이터이다.

각각의 참석률을 구하기 위해서 저 데이터를 사용하려고 했는데, 문제가 생겼다.

 

1) 일단 새로운 파일을 만들면 쓸데없는 중복 데이터가 낭비된다.

2) 새로운 파일을 각각 관리하다보면, 복잡하고 많아질수록 데이터가 서로 싱크되어 동일한 데이터를 나타낸다는 확신이 점점 떨어진다.

 

그래서 나는 월/일 json을 읽어와서 요청마다 참석자별 데이터로 실시간으로 변경하여 메모리에 올려놓고 쓰는 방법을 선택했다.

매 리퀘스트마다 이런 작업들을 하는건 비효율적이지만, 하루에 한번씩만 요청하기 때문에 이 상황에서 충분히 가용할만한 솔루션이라고 생각했다.

 

실제로 DB를 파일시스템으로 관리한다고 하더라도, 서로 다른 서비스의 DB에서 사용하는 중복된 데이터들을 처리하는 방법은 없을것이다.

 

2. 실제 서비스에 사용할 Database로 애매하고 불편하다.

 

- 일단 여러사람이 접근해서 수정/삭제 할경우 데이터가 꼬여서 저장이 될 수 있다. (일단 파일로 접근하면 동시공유가 힘들다!)

- 모든 사람들이 한번 리퀘스트를 보내면 그 테이블이나 Json이 보여주는 모든 내용에 접근할 수 있다. (보안상 문제)

- 응용 프로그램이 해야할 서비스가 추가적으로 많다. 실제로 나같은경우도 저 json파일을 관리하고 읽어오고 저장하기 위한 여러가지 소스를 직접 짜야 했었다. (응용프로그램 개발 어려움)

- 문제가 생길 때, 데이터를 수동으로 회복시켜주어야한다. 데이터 수정이 있을 때도 직접 몇십건의 데이터를 내 손으로 수정했던 경험이 있다

 

이렇게 해서 데이터베이스 관리 시스템의 필요성을 알게 되었다.

데이터 베이스 관리 시스템은  응용프로그램이 실제 데이터베이스에 접근하는것이 아니라, DBMS를 통해서 접근하게 한다.

바로 DB를 관리하는것이 아닌 DBMS라는 복잡한 시스템을 거쳐서 DB의 내용을 조회하는것만으로도 많은 이득을 얻을 수 있다.

 

이를 통해서

1) 응용프로그램이 데이터베이스에 종속된 문제를 해결하고,

2) 동시접근, 동시성 문제나, 스케줄링 문제, 회복 문제, DB관련 서비스 문제를 해결해준다.

3) 데이터 베이스를 삭제,수정,검색을 대신 효율적으로 진행한다.

4) 여러 데이터베이스의 파일을 관리하고 관계를 설정한다 (RDBMS). 이런 솔루션들은 데이터베이스의 중복성과 중복에서 오는 데이터들의 여러 일관성,무결성 문제들을 해결해줄 수 있다.

 

 

 

이를 통해서 데이터 베이스 개론 책에서 나온 내용을 정리하자면,

 

1) 데이터 중복 통제

- 데이터 베이스 관리 시스템은 여러 데이터 베이스 파일들을 통합하여 관리하려고 한다. 따라서, 여러 파일들의 중복을 줄일 수 있다.

 

2) 데이터 독립성 확보

- 응용프로그램은 DBMS에 맞춰 개발하고, DBMS는 db파일을 관리한다.

- 이렇게 독립성과 종속성이 해결되었으므로, 응용프로그래머들은 DBMS가 제공하는 서비스를 활용할 수 있다.

 

3) 데이터 동시 공유

통합된 데이터를 여러 응용 프로그램이 공유 하여 데이터를 공유할 수 있다.

DBMS는 일종의 서비스이기 때문에, 여러 DB 접근을 허용할 수 있는 서비스를 택한다. 

 

4) 데이터 보안

DBMS 단에서 각종 접근을 단계별로 나눌 수 있기 때문에 보안이 향상된다.

 

5) 데이터 무결성 유지

값의 validation, 데이터 중복 체크 등을 DBMS에서 수행하여서 무결성(혹은 데이터의 실제 상태와의 정확성) 을 유지할 수 있게 해준다.

 

6) 표준화.

데이터베이스에 대한 접근이 DBMS를 통해 이루어지기 때문에, 데이터에 접근 방식과 형식을 표준화 하기 쉽다.

각 벤더들이 개발한 DBMS를 통해 표준화된 방식을 통해 접근할 수 있다.

 

7) 장애 회복

DB를 활용하며 나타날 수 있는 다양한 장애에 유연하게 대처 가능한 서비스를 제공한다.

 

8) 응용프로그램 개발 시간이 줄어든다.

DBMS라는 일종의 Database 관리 서비스를 활용하면서, 활용할 수 있는 기능들이 많다.

DBMS별 SQL 기능 제공도 존재하고, 여러가지 편의 기능들이 있다.

 

문제는...

1) 비용이 많이 든다.

파일시스템 같은 경우에는 그냥 운영체제에서 관리하면 되지만,

데이터 베이스 관리 시스템은 직접 설치하여야 한다. 

요즘엔 클라우드로 한다고 하지만 추가적인 가격이 만만치 않을것이다.

 

또한 데이터 베이스 관리 시스템에 기능에 따른 따른 가격도 천차만별이다.

 

 

 

'데이터베이스' 카테고리의 다른 글

MongoDB사용기 - 1 (부제 : NoSQL과 RDBMS)  (0) 2021.06.02
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함