DATABASE ⎮ DataBase와 DBMS/RDBMS 개념 정리

Chris-Yang·2021년 9월 19일
1

DataBase

목록 보기
1/3
post-thumbnail

> Database

▶︎ database?

컴퓨터에 저장된 정보/자료(Data)들의 본부(Base)다.

정확히는 컴퓨터에 전자적으로 저장된 구조화된 정보나 구조화된 collection을 말한다.

일반적으로는 database데이터베이스 관리시스템(DataBase Manage System),
그리고 관련 응용프로그램을 통틀어 DataBase(이하 BD)라고 부른다.


the outside of google data center

DB는 우주에서 떨어진 오묘한 빛이 나는 범접하기 어려운 무언가는 아니다.

저장공간이 있고 그 저장공간에 데이터를 구조화에 따라 보관/관리하는 것으로
내 컴퓨터가 DB가 될 수도 있고 회사에 DB를 관리하는 방이 있을 수도 있으며
apple이나 google등의 회사가 건물을 세워 DB를 관리하는 집을 짓기도 한다.


in the google data center

내 컴퓨터의 500기가 ssd의 용량이 다 차면 또다른 저장장치가 필요하듯
그저 데이터가 많이 저장되면 여러개의 저장 장치가 필요하기 때문에
위 사진처럼 google의 data center 안에는 수많은 저장장치들이 있을 뿐이다.

내집이나 저곳에서 data들을 data관리 시스템으로 관리하는 것을 DataBase라고
생각하면 된다.


▶︎ DataBase를 왜 사용하는가

data를 안전하게 저장/유지하고 체계적으로 관리하기 위해 사용된다.

문서작성이나 혼자하는 게임을 해봤다면 저장이라는 것을 해봤을 것이다.

그런데 저장을 안하면 그 작업물들은 모두 세상에서 소멸해버린다.

저장하지 않은 data는 사라지므로 data들을 DB에 save해야 한다.


my directory

그리고 컴퓨터를 어느정도 사용해봤다면 최소한 사진과 문서들을 각각의 폴더로
구분해서 따로 저장하고 관리했을 것이다.

이렇게 data들을 체계적으로 구조화해 관리하므로써 더 쉽고 빠르고 수월하게
data들을 이용할 수 있게 된다.

한마디로 DB는 data의 저장과 관리에 최적화된 도구라고 할 수 있다.


data는 어느 시대에서나 모이고 정리되어 정보가 되고 지혜로 이어져왔다.
(단어는 문장이 되고 문장의 연속은 책이 되는 것 처럼)

우리의 이 소중한 data들을 DB는 가장 안전하고 효율적으로 관리해줄 수 있는데
특히나 데이터의 양이 상상을 초월하는 현 시점에서 DB의 필요성은
두말할 필요 없이 필수불가결한 상태다.

💡 하루에 생성되는 data의 양

🥕교육부:
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=moeblog&logNo=220918346804
🥕위클리조선:
http://weeklybiz.chosun.com/site/data/html_dir/2018/10/04/2018100401970.html





> DBMS and RDBMS

▶︎ DBMS?

DataBase Management System의 약자로 데이터베이스를 관리하는 시스템을
말하는 것은 알겠는데 그렇다면 무엇을 어떻게 관리한다는 것일까?

크게 3가지 역할을 하는데 DB에 대한 정의, 조작, 제어를 해주며
DB와 DB를 이용하는 응용프로그램들과의 중간역할을 해준다.

DBMS의 또다른 궁극적 목적은 중복data 처리data의 종속문제 해결이다.


▶︎ RDBMS?

RDBMS는 Relational DataBase Management System의 준말로
DB의 data table들이 관계(R)를 가지는 경우에 대한 DBMS를 말한다.

SQL, 관계형 DB라는 용어들은 여기서 출현한다.

SQL은 관계형DBMS의 data를 제어하기 위해 탄생한 프로그래밍 언어이며,
관계형 DB는 모든 data를 row과 column으로 이루어진 2차원 table형태로 표현한다.
(보통 exel sheet를 비유하고 실재로 구조가 거의 유사하다.)


관계형 DB각각의 table들이 관계가 있는 경우
(SNS서비스 DB에서 내 계정 관련 정보 table과 내가 팔로잉한 사람들 table)
서로 연결된 형태의 DB구조를 말한다.

RDBMS에는 Oracle, MySQL, Microsoft Access, Maria DB등이 있다.

DBMS는 RDBMS를 포괄하는 개념으로 DBMS는 RDBMS를 항상 포함하지만
반대로 RDBMS는 DBMS이기도 하고 아니기도하다.

그러므로 DBMS에 대한 이해가 선행되는 것이 우선한다고 판단되어
이번 글에서는 상위개념인 DBMS에 대한 내용을 주로 다루겠다.





> DBMS의 주요 기능

▶︎ BD 정의:

우리가 필요로하는 정보들을 용도에 맞게 저장하기 위해 BD의 구조를 정의해야 한다.

관계형 DB로 간단히 빗대어보면 table에 이름을 붙여주고
table에 들어갈 정보들의 특성에 따라 구분(row, column, data type)해준 후
각각의 table이 연관성이 있는 경우 관계를 설정(ERD, PK, FK)해주는 것을 말한다.

정의한 내용을 나중에 수정하는 기능도 있다.


▶︎ DB 조작:

DBMS는 DB에 저장된 data에 접근할 수 있고 data 입력-수정-삭제-검색
보다 효율적으로 수행하는 역할을 한다.


▶︎ DB 제어:

DBMS는 DB를 여러사람이-동시에 접근하여 이용할 수 있게 해준다.

많은 사람들이 내 컴퓨터를 조작한다면 컴퓨터는 점점 여러가지 문제들이 생길것이다.

DBMS는 문제가 발생할 상황에서 최대한 안정성을 유지하는 기능을 하는데
data 조작 후에도 내용의 일관성과 무결성을 확보하고 장애가 발생한다 해도
회복
할 수 있도록 제어해준다.

또한 사용자에게 DB에 접근 권한을 허용 또는 불허하여 보안성을 제어한다.





> DBMS 조금 더 deep한 이해

▶︎ data 중복(일관성):

예를 들어 내이름과 집주소가 있는 파일이 있고 내이름과 전화번호가 있는
파일이 각각 저장되어 있는 경우 중복의 문제가 발생한다.

나의 이름은 두 번 저장되어 저장공간이 낭비되고 개명을 했다면 이름을
둘 다 수정해줘야하는데 실수로 누락될 수도 있다.

DBMS는 같은 내용의 data를 중복저장하지 않거나 효율성 때문에
중복저장을 하더라도 통제가 가능하도록 중복을 최소화하여
data의 일관성을 유지한다.


▶︎ data 독립성(종속문제):

DBMS를 이용하면 BD의 구조가 바뀌어도 DB를 사용하는 응용프로그램들의
접근방법, 저장구조 설정을 따로 수정해줄 필요가 없다.

쉽게말해 DB 구조에 큰 변화가 있어도 응용프로그램은 기존방식 그대로
data를 가져오면 되고 딱히 뭔가 세팅할 필요가 없다는 의미다.

DBMS가 응용프로그램을 대신해 DB에 접근하고 관리하면서 둘 사이의
독립성을 확보해 주기 때문이다.


▶︎ data 동시 공유:

어떤 DB에 있는 한개의 data에 여러 응용프로그램이 동시에 접근 가능하다.

하나의 data에 동시 접근할 수 있다는 것은 같은 data를 여러개 만들
필요 없이 한개만 있어도 된다는 의미(중복 제한)이기도 하다.


▶︎ data 보안성:

권한없는 사용자의 접근 차단, 사용자별로 DB에 접근 가능한 영역 제한 /
접근 수준 분리, 허용되지 않는 데이터와 연산에 대한 요청 차단 등
구체적이고 다양한 접근제어가 가능하다.


▶︎ data 무결성 유지:

저장된 data값의 정확성을 위해 기존 data가 변경되거나
새로운 data가 입력될 때와 같이 data에 대한 연산이 수행될 때마다
유효한 data인지 검사(유효성 검사)를 하여 데이터 무결성을 유지시켜준다.

이름을 숫자로 입력한다던가 나이를 2000살로 입력한다던가 하는 경우
미리 적용한 설정에 의해 유효성 검사에 걸려 반려된다.


▶︎ 표준화

DB와 응용프로그램 사이에 DBMS가 존재하면서 중재하기 때문에
data접근법, data구조와 형식을 표준화하기 쉽다.

어떤 응용프로그램이라도 DBMS에서 정해둔 한가지 방식으로
DB에 접근하면 되기 때문에 data이용이 매우 수월해진다.


▶︎ 장애발생시 회복:

DBMS에는 data처리과정에서 장애가 발생해도 일관성(data 중복x)과
무결성(유효한 data)을 유지하면서 장애발생 이전으로 복구하는 기능이 있다.

하지만 data의 양이 많고 구조가 복잡하고 다수 사용자의 공유를 지원하므로
원인과 상태를 파악하기 힘들고 회복 방법의 복잡함은 불가피하다.


▶︎ 개발/유지보수 비용 절감

data관리를 전적으로 DBMS가 해주기 때문에 응용프로그램 개발시 DB관련
기능을 개발할 필요가 없고 따라서 DB 구조가 변해도 마찬가지로
따로 응용프로그램 설정을 할 필요가 없다.

하지만 DBMS 구매비용이 존재하고 동시사용자 수에 따라 가격도 상승하므로
비용보다는 개발/관리의 용의 측면에서 가치를 갖는 편이 정신건강에 이롭다.


▶︎ 중앙 집중 관리

모든 data가 통합되어있는 DB를 하나의 DBMS가 관리하기 때문에
둘중 하나에 문제가 생기면 관련 시스템 전체가 마비된다.

치명적인 단점으로 data구조가 자주 변경되거나 다수의 사용자를 위한
개발을 하는 경우가 아니라면 DBMS를 사용하지 않는 것을 고려해볼 필요도 있다.





참고자료/이미지 💕

🥕 데이터베이스 개론:
https://books.google.co.kr/books/about/IT_CookBook_%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4_%EA%B0%9C%EB%A1%A0_2.html?id=cb_yDwAAQBAJ&printsec=frontcover&source=kp_read_button&hl=ko&redir_esc=y#v=onepage&q&f=false

🥕 Tacademy: https://youtu.be/LE57D7eRrVY

🥕 노마드코더: https://youtu.be/z9chRlD1tec

🥕 코드잇: https://youtu.be/u4x_GEx8zhw

🥕 talkIT: https://youtu.be/HQFreqPb3dg

🥕 yena: https://blog.yena.io/studynote/2018/10/02/DBMS-SQL.html





🌈 작은 회고 🤔

알아갈수록 방대한 DB의 세계..

까마득한 길이 예상되지만 차근히 한발씩 내딛자.

divde and conquer.

profile
sharing all the world

0개의 댓글