간단 지식/Database

01. DB를 공부하기 전에 알아야 하는 필수적인 내용

납작한돌맹이 2020. 1. 13. 17:55
반응형

3학년 2학기에 DB를 배우면서 2학년 때 배웠더라면, 하다못해 1학기에 배웠더라면 좋았겠다고 생각했다.

그만큼 데이터베이스는 컴퓨터공학 기술 중 밀접하고 즉각적인 반응을 보이는, 가장 실용적인 기술 중 하나다.

 

무작정 디비를 설계하고 mysql을 사용해보는 마구잡이식 개발보단,

데이터가 무엇이고

데이터베이스가 왜 생겨났고

구조가 어떻게 생겼는지

를 먼저 알면 좀 더 이 분야를 이해하는데 도움이 되고 좀 더 재밌게 공부할 수 있다.


영어 data는 번역하면 '자료'다. 

자료하면 무엇이 떠오르는가? 자료와 가장 연관깊은 단어 중에는 '정보'가 있다.

정보와 자료는 같을까 다를까?

 

적어도 컴퓨터공학을 전공하는 사람이라면 다르다고 해야한다. ㅎㅎ

data는 말그대로 측정된 값을 말하고, info는 그렇게 만들어진 data를 해석해서 사용할 수 있게끔 만들어진 것이다.

 

옛날옛날에는 정보를 위해 많은 데이터를 수집했고 방대한 양을 처리하기 위해 데이터처리 방법을 고안해냈다.

그렇게 만들어진 초기의 방법은 batch processing(일괄처리)이다.

 

batch processing

시스템 관점에서의 처리방법이다.

그렇기 때문에 요구되는 시스템 성능이 높지만, 처리비용이 낮다는 장점이 있다.

프로세싱 과정은 간단하다.

 

1. 데이터 수집 및 분류

2. 분류된 데이터를 컴퓨터에게 전달

3. 컴퓨터는 전달된 데이터를 파일에 수록

4. 갱신된 파일을 출력

 

한번에 많은 양을 처리할 수 있겠지만 매번 파일을 갱신하기 위해 밟아야하는 절차가 있기 때문에 사용자와

실시간으로 상호작용을 할 수 없다는 단점이 있다. 그래서 고안된 방법은 online processing이다.

 

 

online processing

사용자 관점에서의 처리방법이다.

따라서 시스템 성능은 낮아도 되지만 처리 비용이 높아진다.

추가적으로 통신제어기가 필요하다.

프로세싱은 간단하고 정해진 순서가 없지만, 구조가 batch processing에 비해 복잡해진다.

 

- 컴퓨터는 DB, 통신제어기와 연결

- 통신제어기를 이용해서 유연하게 데이터를 주고 받고 아무때나 파일을 출력

 

굳이 단점을 찾자면 유지, 회복에서 오버헤드가 발생할 수 있다고 한다.

이런 방법도 데이터 양이 방대해지면서 불편해지기 시작했다. 이때 distribute processing이 등장했다.

 

 

distribute processing

온라인 프로세싱보다 좀 더 구조가 복잡해졌다.

그러나 분산된 컴퓨터들이 각각 DB와 연결되기 때문에 가장 효율적인 데이터 처리방식이다.

 

- 모든 컴퓨터와 접속이 가능한 통신 네트워크 존재

- 각각의 컴퓨터는 독립적

 

이런 형태를 보고 client/server 시스템 운영 형태라고 부른다.


이렇게 데이터 처리방식이 진화하는데 자연스럽게 낀 데이터베이스는 1963년에 등장했다.

개인의 이익을 위해가 아니라 조직의 데이터를 관리하기 위해 개발되었다.

이런 데이터베이스의 특징은

1. 실시간 접근성

2. 동적정보 확보

3. 동시 공용

4. 내용에 의한 참조

가 있는데 이 중 하나라도 누락이 되면 올바른 데이터베이스가 아니다.

각 조건을 만족하는게 쉽지 않지만 특히 3번과 4번은 어렵다.

동시 공용은 여러 사용자가 사용할 수 있어야 하기 때문에 고질적인 race condition 등이 발생할 수 있다.

이럴때는 concurrency control을 이용해서 해결해야 한다.

내용에 의한 참조는 데이터를 검색할 때 location이 아닌 field를 이용해서 찾을 수 있어야한다는 의미이다.

예를 들어 'index 4에 있는 데이터를 찾아보자' 가 아닌 '이름이 김소현인 학생을 찾아보자' 가 가능해야한다


마지막으로 간단하게 데이터베이스의 구성요소와 구조를 알아보자.

 

데이터베이스는 개체와 관계의 쌍으로 이루어졌다고 생각하면 되는데 이를 논리적 구성요소라고 말한다.

개체는 정보의 객체이자 단위로, 하나 이상의 속성으로 구성이 된다.

예를 들어, 개체 <학생>은 속성 '학번' '이름' '학과' 로 구성된다. 또한 1234, 컴퓨터공학과, 김소현, 1235, 국어국문학과, 김모현 은 각각 개체 instance라고 부르며, 그들의 집합을 개체 집합이라고 부른다.

 

데이터베이스는 그 구조를 논리적, 물리적으로 구분한다.

논리적 구조는 사용자 관점에서의 데이터 구조이다. ex)논리적 레코드

물리적 구조는 저장장치 관점에서의 데이터 구조이다. 따라서 index, pointerchain, overflow space 등 추가적인 정보를 포함한다. ex) 하드디스크, 저장레코드

쉽게 말하자면 사용자가 논리적으로 데이터를 레코드에 순차적으로 A, B, C, D로 배치했다 하더라도, 실제로 저장장치를 보면 물리적인 순서가 B, (추가정보), D, A, (추가정보), C 일 수 있다는 의미이다.


개인적으로 이 내용들은 알아야 제대로 공부를 할 수 있다고 생각한다. 다음에는 데이터베이스를 관리하는 DBMS에 대해서 정리할 예정이다.

 

(이 글이 도움이 됐다면 광고 한번씩만 클릭 해주시면 감사드립니다, 더 좋은 정보글 작성하도록 노력하겠습니다 :) )

 

반응형