NoSQL을 알아보자(12) - Document 데이터베이스 특징③

 

Key-Value 집합과 Document

기본적으로 Document는 Key-Value가 모인 집합을 의미한다. 그렇다면 Key-Value 집합과 Document는 동일한 존재일까? 보편적 명제에서 A가 B라면 B는 A다. 이 명제를 활용하면 Key-Value 집합으로 구성된 Document와 key-Value 집합은 같은 것이어야 한다.

하지만 Key-Value 집합과 Document는 같지만 때로는 다르다. 아래 예시를 확인해보자. 이름과 나이 두 속성을 가진 Key-Value 집합이 있다.

    {‘name’ : ‘sam’, ‘age’ : 27}
    {‘age’ : 27, ‘name’ : ‘sam’}

두 집합은 안에 포함되는 데이터의 순서는 바뀌었지만 집합은 순서에 영향을 받지 않는다. 따라서 위에 두 집합은 같다.

    {‘name’ : ‘sam’, ‘age’ : 27}
    {‘age’ : 27, ‘name’ : ‘sam’}

똑같은 예시를 Document에 대입해보자. Key-Value 집합은 서로 순서가 달라도 같지만 Document는 안에 순서가 바뀌면 두 문서는 서로 같지 않다. Document에서는 두 문서 안에 속성 순서도 문서의 고유한 식별자로 작용하기 때문에 Document에서는 두 문서안에 순서가 다르면 동일한 객체가 아니다.

조인

관계형 데이터베이스에서는 서로 다른 유형의 객체를 Table 단위로 나누어 저장한다. 그리고 해당 정보들의 통합이 필요한 경우 조인을 사용하여 정보를 결합한다.

Document 데이터베이스는 문서 안에 문서를 저장하는 중첩 문서를 활용하여 연관된 정보를 단일 문서에 표현한다. 용량이 큰 두 Table을 조인하여 작업하는 것은 많은 연산을 필요로 한다. Document 데이터베이스에서는 중첩 문서를 활용하여 연관 데이터를 함께 저장하기 때문에 조인으로 인한 무거운 연산을 피해갈 수 있다.

다형적 스키마

Document 데이터베이스는 기본적으로 스키마리스 데이터베이스다. 관계형 데이터베이스는 명시적으로 구조를 정의하고 정해진 형식에 맞춰 데이터를 관리하지만, Document 데이터베이스는 명시적으로 Key-Value 구조를 정의하고 정해진 형식에 맞게 데이터를 관리할 필요가 없기 때문에 스키마리스 데이터베이스다.

Document 데이터베이스는 스키마가 없는 데이터베이스지만 다형적 스키마를 가진다. 여기서 다형적 스키마는 정해진 구조를 의미하는 것이 아니라 Collection 안에 있는 Document들이 서로 다른 형식을 가질 수 있다는 것을 말한다.