Database/MongoDB 2011. 12. 26. 21:57
1. 데이터의 기본 단위 : 문서
   1) 문서의 키는 문자열형이다. 몇 예외를 빼고는 키로 어떤 UTF-8 문자라도 쓸 수 있다.
   2) \0 (null 문자)을 포함하지 않는다. 이 문자는 키의 끝을 나타내는데 쓴다.
   3) .과 $문자는 예약어로 취급해야 하며, 특정 상황에서만 사용한다.
   4) 일반적으로 _로 시작하는 키는 예약어로 생각하는 편이 좋다.
   5) 데이터형과 대소문자를 구별한다.
   6) 키는 중복될 수 없다.

2. 문서의 모음 : 컬렉션
   1) 문서가 RDB의 행이라면 컬렉션은 테이블로 볼 수 있다.
   2) 스키마가 없다. ( 즉, 하나의 컬렉션 내 문서들이 모두 다른 구조를 가질 수 있다는 뜻 )
   3) 스키마가 없는 데 하나의 컬렉션에 모든 데이터를 저장하지 않고 컬렉션을 나누는 이유
     - 쿼리를 적용할 때 구조가 다르다면 번거롭게 된다.
     - 섞여 있는 구조에서 쿼리를 실행할 때 보다 동일 구조로 되어 있으면 실행 속도가 훨씬 빠르다.
     - 데이터를 구분하기 위해서 나눈다. (게시판 데이터는 게시판 데이터끼리, 회원 데이터는 회원 데이터끼리)
     - 색인을 이용할 경우 문서는 특정 구조를 가져야 한다.
   4) 컬렉션은 이름으로 식별한다. 어떤 UTF-8 문자열도 쓸 수 있다.
     - 빈 문자열("")은 유효한 이름이 아니다.
     - \0(null 문자)은 컬렉션 이름의 끝을 나타내는 문자이므로 사용할 수 없다.
     - system.으로 시작하는 이름은 예약어이기 때문에 사용할 수 없다.
     - 사용자 생성 이름에 $문자를 사용할 수 없다.
   5) 컬렉션을 체계화하기 위해 서브컬렉션을 쓴다.
     - 네임스페이스 방식으로 .문자를 이용한다.
     - blog.posts 와 blog.authors 라는 컬렉션 이름을 사용하였을 경우 오직 체계화를 위한 네이밍일 뿐 blog와 '자식'컬렉션 간에는 아무런 관계가 없다. 심지어 blog 컬렉션은 없어도 된다.
    - 하지만 데이터를 체계화할 수 있는 훌륭한 방법으로 권장된다.

3. 여러 컬렉션의 모음 : 데이터베이스
   1) 하나의 데이터베이스는 자체 권한을 가지고 있으며 따로 분리된 파일로 디스크에 저장된다.
   2) 컬렉션과 마찬가지로 데이터베이스도 이름으로 식별한다.
     - 어떤 UTF-9 문자열도 가능하다.
     - 빈 문자열("")은 유효하지 않다.
     - 다음 문자는 포함할 수 없다. ''(공백문자), . ,$, /, \, \0
     - 모두 소문자이어야 한다.
     - 이름은 최대 64바이트이다.
   3) 데이터베이스 이름은 파일시스템 상에서 파일이 된다.
   4) 예약된 데이터 베이스 이름도 있다.
     - admin : 인증의 관점에서 'root' 데이터베이스이다. 모든 데이터베이스를 조회하거나 서버 전역에 걸쳐 실행하는 명령어들은 오직 admin 데이터베이스에서만 실행 가능하다.
     - local : 절대로 복제되지 않기 때문에 특정 서버에만 저장하는 컬렉션에 사용된다.
     - config : MongoDB를 샤딩설정하는 경우 config 데이터베이스는 내부적으로 샤드정보를 저장하는 데 쓴다.
   5) 컬렉션을 저장하는 데이터베이스의 이름을 컬렉션 이름 앞에 붙이는 것으로 올바른 컬렉션 이름인 네임스페이스를 얻을 수 있다. 예를 들어 cms 데이터베이스의 blog.posts 컬렉션을 사용한다면, 컬렉션의 네임스페이스는 cms.blog.posts가 된다.

4. 그외 참고
http://www.mongodb.org/
- MongoDB 홈페이지, document가 잘 되어 있으며, sql문과 비교를 통해 쿼리를 쉽게 이해하게 해준다.

'Database > MongoDB' 카테고리의 다른 글

MongoDB 데이터형  (0) 2011.12.27
MongoDB 설치 및 시작  (0) 2011.12.26
posted by kirhieyes
: