데이터베이스시스템은 데이터베이스를 효과적으로 관리하기 위한, 많은 데이터를 효율적으로 관리하고 지원하기 위한 소프트웨어라고 일전에 공부했다. 데이터베이스시스템 통칭 DBMS는 사용자로 하여금 데이터를 추가,삭제,갱신,삽입하더라도 데이터베이스 전체의 통일성(원자성)이 깨지지 않도록 해주며, 데이터 추상화로 데이터 접근성을 높이고 계속적인 관리로 기존 데이터와의 불일치성이 나타나지 않도록 균일하게 관리해주는 일종의 데이터 관리 프로세스
라는 것을 배웠다. 지금부터는 DBMS의 구성요소, DBMS의 언어외 기타 다양한 것들을 톺아보도록 하자!
DBMs는 사용자들이 데이터베이스에 원하는 바(View)를 표현하기 위해 데이터베이스 언어를 제공한다. SQL(질의어), QUEL(미적분학..머시기..), 관계대수 등의 데이터베이스 언어가 제안되고 상용 DBMS에 구현되어있다. SQL이 현대에서는 짱먹었지만, SQL에 다양한 것이 있다. 이후에 데이터베이스 언어인 SQL을 다루도록 할 때 상세히 다루도록하고 이런 언어가 있다 정도만 알고 넘어가야겠다.
- sID 2222인 학생의 이름을 찾자!
SELECT name FROM student where sID = '2222';
- sID가 2222인 학생이 듣고있는 교과목을 찾아보자!
SELECT subject FROM student where sID = '2222';
위의 SQL은 간단하게 나타내 본 예제다. DB응용 애플리케이션은 SQL이라는 언어를 이용해서 개발한다. 일반적으로 SQL에 프로그래밍 요소를 추가하는 방식 또는 SQL API를 이용해서 진행한다.
데이터베이스 관리 시스템(DBMS)는 아주 복잡하고 방대한 소프트웨어다. 상용에 쓰고있는 mySQL, mariaDB, MongoDB 등 다양한 소프트웨어들이 있다. DBMS는 개념적으로 두가지의 구성요소를 가지고 있는데, 첫째는 질의어 처리기, 둘째로는 저장 관리자다.
DBMS는 사용자가 저장하여 관리하고자하는 DB 외에도 DB에 대한 데이터를 관리한다. 데이터베이스 관리 시스템에서는 메타 데이터(즉, 데이터를 설명하는 데이터)를 저장하는 장소를 데이터 사전이라고 부르며, 데이터 사전에는 데이터베이스 스키마에 대한 데이터, 제약조건에 대한 데이터, 접근 권한에 대한 데이터 등 다양한 데이터가 관리되고 있다.
트랜잭션 관리는 DBMS의 주요한 기능이다. 트랜잭션 관리는 동시성 제어와 복구 기능으로 나뉜다.
데이터베이스 기술 시스템에 대한 간단한 역사를 이야기해보자. 50,60년대
에는 데이터베이스 이전 단계인 파일 시스템
을 이용하여 자료 처리를 했고, 이후 70년대
에는 네트워크 데이터 모델
과 계층 데이터 모델
을 주로 사용했다. 1970년 E.Codd가 관계형 데이터 모델을 처음 제안
했는데, 80년대 초
에 관계형 모델을 지원하는 상용 DBMS
가 처음 출시되고 이후 데이터베이스 기술은 급박하게 발전했다. 80년대 중후반에 객체지향 데이터베이스 시스템에 대한 개념이 생겨서 이후 많은 연구가 이루어졌다.
90년대 중후반에 데이터 보관과 데이터 마이닝
에 대한 연구가 이뤄지면서 객체 관계형 데이터 모델이 90년대 후반에 정립되었다. 2000년대에는 XML
이 나타나면서 데이터베이스 산업에서는 튜닝 및 자동 데이터베이스 관리 기술이 발전했으며 이를 지원하는 상업 데이터베이스 시스템이 나타났다. 2010년 이후 BigTable, Pnuts, Hadoop(apache)
와 같은 대용량 저장 시스템 또는 대용량 분산처리 플랫폼
이 개발되어 사용되고있다.
DBMS에 대한 내용을 간단하게 훑고 넘어간다. 이런 역사가 있고, 이런 구성요소들이 있다는 내용을 빠르게 읽고 습득했다. 차후에 DBMS 혹은 데이터베이스 관련 서적을 구하거나 웹 페이지를 통해서 좀더 학습하고 정리해서 내 머리속에 넣어야겠다. 이전까지 DB, DBMS가 헷갈리고있었는데 어느정도 정리는 된 것 같다. 이후에 mySQL이나 MongoDB같은 DB 플랫폼 Documentation으로 공부해야겠다.