Notice
Recent Posts
Recent Comments
«   2026/05   »
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
31
Tags
more
Archives
Today
Total
관리 메뉴

CogandKim

MongoDB - DB의 기본 본문

MongoDB

MongoDB - DB의 기본

김정출 2016. 6. 2. 13:14


MongoDB - DB의 기본



DB의 기본

데이터베이스에는 특정한 의미가 있는 데이터들의 모임

다양한 용도로 사용하는 데이터들을 일정한 장소에 저장하고자 논리적으로 연관된 레코드나 파일들을 모아 놓은 것을 의미한다.


데이터베이스는 특정한 목적을 위해서 설계, 구축, 운용하는데, 이러한 DB를 분류할 때는 데이터 타입을 사용하거나, DB 모델이나 구조를 사용한다.


기본 구성과 주요 특성

DB는 정보를 저장하도록 구조화된 컨테이너들로 구성되어 있다.

이 컨테이너들로부터 정보를 자동화된 방법으로 추출, 삽입, 갱신, 삭제할 수 있다.


DB는 데이터를 저장하고 나서 여러 사용자가 공유하며 질의나 트랜잭션 등을 수행할 때마다 반복해서 사용한다. 따라서 데이터를 자유롭게 활용하는 파일 시스템과 다르다.


특성

자기 기술

DB 자신이 가지는 파일과 그 구조, 내부 데이터의 항목과 저장 형식, 제약 조건 등으로 기본 DB를 기술하는 동작


데이터 추상화

데이터의 저장 구조와 저장 장치의 세부 사항을 외부에 알리지 않고, 필수적인 특징으로만 나타내는 것을 말한다. 이처럼 데이터를 추상화 하면 데이터와 연산의 독립성이 보장된다.


트랜잭션

사용자 다수가 동시에 같은 데이터를 변경하더라도 데이터의 일관성을 보장하고자 도입되었다.


실제 DB에는 저장되지 않고, 사용자가 데이터를 편리하게 볼 수 있도록 제공하는 가상 테이블이다.


데이터 격리

코드와 저장된 데이터를 연결하는 표준화 된 방법 정의하며, 데이터의 안전을 제공하는 데이터 저장소 메커니즘이다.

연결 방법을 표준화 함으로써 데이터 관리자는 파일 저장소를 구성하고, 보안 정책을 설정하며,

데이터 관리를 위한 저장소를 조작할 수 있다.



데이터베이스는 대용량 데이터를 효율적으로 관리하는 도구이기 때문에, DB를 정의하고 구축, 관리, 조작하는 개발자 한 명으로는 부족하다. 그래서 DB 관리자, DB 설계자, 시스템 분석가, 응용 프로그래머, 최종 사용자가 필요하다.



DBMS의 구조와 기능

데이터베이스 관리 시스템(Database Management System, DBMS)은 사용자가 DB를 정의하고 생성한 이후에 공유와 관리 기능을 제공하는 시스템이다.

DBMS는 기본적으로 DB 생성과 유지 보수, 저장소 사용이라는 세 가지 동작을 수행하는 소프트웨어로 구성된다.


DB 구조는 정보들이 행과 열로 구성된 테이블 형태이다. 데이터를 저장하는 구조는 행(Row)이나 열(Column) 기반으로 구성되며, 객체(Object) 기반으로도 구성될 수 있다.

대표적으로 구글의 빅 테이블(Big Table)은 열 기반으로 구성된 DBMS이다.


DBMS에서 DB를 정의하거나 설명하는 정보는 카탈로그(catalog)나 사전(dictionary) 형태로 저장되어 관리된다. 이런 데이터를 메타 데이터(Metadata)라고 한다. 시스템 카탈로그는 DBMS가 생성하고 유지하는 DB 구조에 대한 메타 데이터를 포함한다.


특정한 데이터를 검색하려면, 질의하거나 DB를 갱신하고 데이터로부터 보고서(Report)를 생성해야 한다.

이러한 동작을 DB 조작(Manipulation)이라 한다.




DBMS의 기능

데이터의 사전 관리 / 데이터 저장과 관리 / 데이터 변환과 표현

보안 관리

다중 사용자 접근 제어

백업과 복구 관리

데이터 무결성 관리

DB에 접근하는 언어와 인터페이스 제공


DBMS는 데이터의 일관성과 무결성 등을 보장하기 위해 위와 같은 기능을 수행한다.

** 무결성: 데이터를 사용하는 동안에 데이터의 정확성과 일관성을 유지하고 보증하는 것



DB와 DBMS의 카탈로그는 일반적으로 디스크와 같은 저장 매체에 저장된다. DBMS 안의 저장 데이터를 관리하는 모듈은 DBMS 정보에 대한 접근을 제어한다. 또 다른 구성 요소인 컴파일러는 데이터 정의로 정의된 스키마들을 처리하고 스키마 정보들을 카탈로그 안에 저장한다.



DBMS 모듈 접근하는 정보(Catalog 안에 저장)

DBMS 모듈에 필요한 파일 정보

데이터 항목 정보

파일 저장 형태

스키마 사상 정보

제약 조건


DBMS를 구성하는 모듈 중에 질의 컴파일러는 대화식 질의 인터페이스를 제공할 때 사용하는 질의들을 Parsing이라고 한다. 또한, 연산이 정확하게 이루어지는 지, 데이터들이 정확하게 처리되는 지를 분석하고 컴파일한다. Pre-compiler 에서는 호스트 프로그래밍 언어 응용 프로그램에서 데이터 조작 명령을 추출한다.

Pre-compiler 에서 추출된 명령은 DB에 적용하기 위해서 데이터 조작어 컴파일러로 전송된다. 그 외는 호스트 언어 컴파일러로 전송된다.


DBMS 관리 유틸리티 기능

파일 변경 및 로딩

파일 백업

파일 구조 재구성

파일 정렬

파일 압축

모니터링



DBMS의 장점

DBMS를 사용하여 얻을 수 있는 장점은 다음과 같습니다.


DBMS의 장점

데이터 중복 제거

권한이 없는 접근 제한(보안과 권한 시스템 구축 필요)

지속적인 저장 공간과 질의를 처리할 수 있는 공간 제공

백업과 복구 지원

여러 사용자 인터페이스 제공

데이터 사이에 다양한 관계를 효율적으로 표현

데이터 무결성 보장

규칙을 사용하여 추론하고 수행

표준 정의

응용 프로그램 개발이 쉬우며, 요구 사항이 변경될 때 쉽게 대처


데이터의 중복을 제거한다는 것은 큰 장점 중의 하나이다. 데이터의 일관성이 사라지면, 무결성이 없어진다.

DB를 이용하여 얻을 수 있는 여러 장점이 있지만, 대응 시간이 요구 사항에 맞는가? 데이터 변경이 거의 발생하지 않는 다면 DB를 사용해야 할 필요성에 고려해볼 필요가 있다.


DB Model

DB 모델은 DB 내에 있는 데이터의 구조와 관계를 표현하기 위해서 사용하는 데이터의 논리적인 연결 및 관리를 수행한 결과이다. DBMS는 지원하는 DB 모델에 따라서 카테고리가 나누어지고, DB에 접근하는 질의 언어도 결정된다.


DB 모델은 기본적으로 개념 모델과 구현 모델로 나누어진다.

개념 모델은 ‘무엇을 표현할 것인가?’가 하는 데이터 표현의 논리적 성격에 초점이 맞추어져 있고,

구현 모델은 데이터가 어떻게 표현되는지, 어떤 데이터 구조가 필요한 지를 기준으로 만들어진다.


개념 모델

One - to - Many (1:N)

Many - to - Many (N:N)

One - to - One (1:1)


구현 모델

계층형 모델

계층형 모델은 개념이 단순하며, 시스템에 의해서 DB 보안이 유지될 수 있다. 또한 데이터를 독립적으로 구성할 수 있으며, DB의 무결성이 보장되어 호율성이 높다.

네트워크 모델

계층형 모델보다 더 복잡한 데이터 관계를 효과적으로 표현하고 성능을 향상시키고자 도입되었다.

네트워크 모델은 DB 생성과 조작에 대한 표준을 정의하였다. 단순하기 때문에 설계하기 쉽고

M:N 관계이므로 다양한 관계를 지원한다. 또한, 데이터에 유연하게 접근할 수 있고, 물리적인 저장과 프로그램이 분리되어 데이터 독립성을 지원한다. 단점으로는 복잡하고 구조적으로는 독립성이 없다.


관계형 모델

사용자와 설계자가 생각하는 모델을 열과 행의 2차원 구조를 통해서 지원한다. 기존의 계층형과 네트워크 모델의 단순성을 극복하였고, DB의 설계와 구현, 관리, 사용이 쉽다. 강력하고 유연한 질의가 가능해졌지만, DB가 커진다면 성능이 저하될 수 있다.

객체형 모델

실세계에 좀 더 가깝게 표현할 수 있는 모델로서 객체를 사실의 내용에 근거하여 표현한다. 이 모델을 사용하면 텍스트, 숫자 이외에도 그래프와 비디오, 소리 등을 포함할 수 있고, 복잡한 데이터 타입을 지원할 수 있다. 그리고 고도의 트랜잭션과 정보 요구를 지원할 수 있고 무결성 과 구조/데이터 독립성을 지원한다.




'MongoDB' 카테고리의 다른 글

Mongo DB - Mongo DB Intro(2)  (0) 2016.06.02
Mongo DB - Mongo DB Intro(1)  (0) 2016.06.02
MongoDB - RDBMS(관계형데이터베이스)  (0) 2016.06.02
MongoDB - DB Classification  (0) 2016.06.02
MongoDB - DB의 기본(2)  (0) 2016.06.02