CogandKim
MongoDB - DB Classification 본문
MongoDB - DB Classification 데이터 베이스 분류 DBMS는 데이터를 효율적으로 다루고, 데이터를 통합, 저장 관리하여 유용한 정보를 생성하는 방법이다. 상용 DBMS에서 사용하는 데이터 모델에는 크게 계층형과 네트워크형, 관계형, 객체지향형 모델이 있다. 지금까지는 관계형 데이터 모델이 주류를 이루었지만, 소셜 서비스 등이 확산되면 NoSQL이 증가하는 추세이다. 관계형 데이터베이스(Relational DBMS)는 관계형 데이터 모델을 기반으로 데이터를 제어하는 관리 시스템이다. 관계가 있다는 것은 둘 이상의 개체 사이에 상호 연관성이 있다는 것을 의미한다. 관계형 데이터 모델은 단순하고 균일한 데이터 구조를 사용한다는 대표적인 장점이 있어서 많이 사용된다. 관계형 데이터 모델은 표현하고자 하는 개체(Entity)의 모든 데이터 사이의 관계를 2차원 테이블 형태로 나누고, 이를 구성하는 각 행(Row)는 하나의 개체를 나타내고 각 열(Column)은 개체의 속성을 나타낸다.. 관계형 데이터 모델은 필요할 때 테이블 사이의 연결을 통해서 데이터를 생성하거나 처리할 수 있다. 테이블은 의미가 있는 최소 단위로 구성되며, 해당 테이블에 있는 열을 통해서 연결한다. 테이블 사이의 연결 정보는 기본 키(Primary Key)와 외래 키(Foreign Key)를 이용한 조인(Join)을 통해서 얻을 수 있다. 관계형 데이터베이스를 설계할 때에는 불필요한 자료를 중복으로 저장하지 않도록 테이블의 스키마를 잘 만들어야 한다. 스키마는 정규형을 따라야만 한다. 관계형 DB에서는 관련 있는 Entity들을 한 테이블에 저장하여 사용자에게 논리적인 구조만을 보여줄 수 있으며, 데이터의 독립성과 구조적 독립성을 제공 또한, 테이블들은 비록 독립적이라 할지라도, 공통된 열을 통해 연관성을 쉽게 구성할수 있다. 따라서 최소로 제어된 중복성을 유지할 수 있다. 관계형 데이터 모델에서는 표현 개체의 내부 관계가 아닌 외부 관계를 적용한다. 즉 데이터 사이의 상관관계로 개체 사이의 관계를 표현 관계형 DB는 데이터 사이의 복잡한 관계를 간단하게 표현할 수 있어서 데이터 조작이 쉬우며, 데이터 정의 언어(Data Definition Language, DDL), 데이터 조작 언어(Data Manipulation Language, DML)가 간단하다는 장점이 있다. 따라서 데이터의 삽입과 수정, 삭제가 쉽고 정보를 요구할 때 유연하게 대응할 수 있다. 그렇지만, 이러한 특성이 있는 관계형 DB의 SQL에서 데이터 타입은 제한적이며 확장이 불리하고, 테이블을 사용하여 복합적인 객체를 표현하기 어려운 단점이 있다. 따라서 이를 극복하기 위해 DB에 객체지향 기법이 도입되었다. 관계형 DB는 정보를 DB화할 때 테이블을 사용하지만, 객체지향형 데이터베이스(Object Oriented DBMS)는 계층별 프로세스에 따라 데이터 구조를 표현하고 데이터와 그 처리를 함께 취급한다. OODBMS는 객체 모델링과 데이터 생성을 지원하는 DBMS이다. 객체 지향 모델은 데이터와 관련 코드가 결합한 구조의 객체에 기반을 두는 것으로서 객체에 대한 정의는 클래스에 포함되며, 각 객체는 해당 클래스의 인스턴스(Instance)로 생성된다. OODBMS는 복합 데이터 타입을 처리할 수 있으며, 데이터의 캡슐화와 데이터 구조 추상화를 통해 색인과 질의를 효율적인 방법으로 처리한다. OODBMS는 객체 지향 데이터 모델을 기반으로 하며, 이러한 모형에 따라서 대량의 자료를 보관한다. 또한, 객체에 관련된 코드와 데이터를 하나의 단위로 캡슐화한다. OODBMS는 객체 클래스들과 클래스 특징의 상속, 서브 클래스, 객체들의 메서드 등을 포함한다. 이는 객체지향 프로그래밍 기법과 DB 기술이 결합한 것으로 볼 수 있다. OODBMS는 객체여야 하며, 객체 동일성과 캡슐화, 타입 또는 클래스, 상속, 오버라이딩(지연 바인딩과 결합), 확장성과 완성도, 영속성, 2차 저장관리, 동시성, 회복성 등의 특성을 만족해야 한다. 더 나은 시스템을 만드는 요소로서 다중 상속과 타입 검사, 배포성, 디자인 트랜잭션, 버전 등이 있다. 더불어 설계자가 선택할 수 있는 요소로 프로그램 패러다임과 표현 시스템, 타입 시스템, 균등성이 있다. OODBMS는 객체 지향형 데이터베이스 인터페이스 표준을 지원하며, 이는 산업계 그룹인 ODMG에 의해 개발되고 있다. ODMG는 네트워크 내에서 시스템 사이의 객체지향형 데이터 중개 인터페이스를 표준화한다. 객체 관계 데이터베이스를 위한 데이터 언어 표준으로서 ISO의 SQL3가 있다. SQL3는 객체 기능이 확장된 SQL 버전을 의미하며, 메서드를 포함한 사용자의 추상 데이터 타입 정의와 객체 식별자, 서브 타입, 상속성, 다형성, 그리고 테이블 정의 기능과 외부 언어와의 통합 기능도 제공한다. 또한 효율적으로 객체들을 생성하고 관리, 질의할 수 있는 제어 구조와 매개변수 타입을 지원한다. OODBMS는 또한 안드로이드 플랫폼에 적용할 수 있다. JAVA기반으로 만들어진 안드로이드 플랫폼에는 특히 JAVA 객체를 지원하는 OODBMS가 적합하며, 이러한 제품으로는 McObject의 Perst가 있다. Perst는 JAVA 객체로 데이터를 직접 저장하기 때문에, 응용 프로그램과 데이터 기반 데이터 모델 사이에 어떠한 매핑 관계를 요구하지 않는다. Perst는 JAVA와 JAVA ME, .NET을 위한 강력한 임베디드 DBMS의 시스템 역항르 담당하며 다음과 같은 특징이 있다. Db4o는 GPL 라이선스를 기반으로 개발되었으며, SQL이나 다른 형식으로 변경하지 않고, JAVA나 .NET 객체들을 저장할 수 있다. Db4o는 실시간 제어 시스템이나 모바일 장치, 게임기, 의료 장비들에 적용할 수 있다. Db4o의 특징은 다음과 같다. Db4o는 메모리 사용량이 600KB여서 다양한 플랫폼에 적용할 수 있으며, 리프리케이션(Replication, 데이터 저장과 백업 관련 데이터를 다른 PC로 복사하는 것)을 전형적인 관계형 데이터베이스 솔루션보다 훨씬 간편하게 지원한다. Db4o에서 DB를 열려면 Db4o.openFile()을 수행하고, 파일의 경로를 넘겨줘야 합니다. ObjectContainer db = Db4o.openFile(Util.DB4OFILENAME); try { // db4o 수행 동작 } finally { db.close(); } 객체를 저장하려면 store()함수를 사용하고 검색하려면 QBE, NQ, SODA를 사용할 수 있다. /** 객체 저장*/ Pilot pilot = new Pilot("Kim JeongChul",100); db.store(pilot); System.out.println("Stored "+pilot); /** 객체 검색*/ Pilot proto = new Pilot(null,0); ObjectSet result = db.queryByExample(proto); listResult(result); 객체를 갱신하려면 setPilot()을 사용하고, 삭제하려면 delete()를 사용한다. /** 객체 갱신*/ List<Person> result = db.query(new Predicat<Person>() { public boolean match(Person person) { return person.getName().equals("JeongChul"); } }); Person Found = (Person)result.get(0); found.setPilot(new Pilot("Somebody else",0)); db.store(found); result = db.query(new Predicate<Person>() { public boolean match(Person person) { return person.getName().equals("JeongChul"); } }); listResult(result); /** 객체 삭제*/ ObjectSet result = db.queryByExample(new Pilot("Jungchul",0)); Pilot found = (Pilot)result.next(); db.delete(found); System.out.println("Deleted "+found); retrieveAllPilots(db);2.1 관계형 데이터 베이스
테이블의 구성 요소
2.2 객체 지향형 데이터베이스
OODBMS
SQL3
안드로이드 플랫폼 -> Perst
JAVA와 .NET 객체 사용(윈도우 기반 시스템 적용 쉬움)
특화된 색인 방식 사용
간결한 코드 / 공개 코드
빠른 속도
객체 저장 방법 지원
Db4o
관리자가 필요 없음
별도의 변환 작업이 필요 없음 (객체 자체로 저장 가능)
클래스 모델이 데이터베이스 스키마와 같음
데이터베이스 스키마의 자동 관리
복잡한 객체의 저장 방법 최적화 지원
'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의 기본(2) (0) | 2016.06.02 |
| MongoDB - DB의 기본 (0) | 2016.06.02 |