[MongoDB] MongoDB의 제약사항들. (MongoDB limits thresholds)  

MongoDB의 한계(?)

2.4.9버전 기준.

 

BSON documents

- 하나의 BSON document의 최대 사이즈는 16 MB

- 하나의 BSON object의 최대 depth는 100

 

 

namespaces

- db명.colleciton명으로 구성되는 namespace 하나의 길이는 123 bytes가 한계

- 전체 namespace 수는 기본설정인 nssize=16MB 기준으로 24,000개 정도. 

- nssize 옵션은 설정을 통해 최대 2047MB까지 늘일 수 있음.

 

indexes

- indexing되는 값은 최대 1024 bytes. 1024 bytes가 넘는 값이 indexing요청이 들어오면 MongoDB는 쌩깐다.

- 하나의 collection에는 최대 64개까지 index를 만들 수 있음.

- index 명칭은 namespace를 포함하여 125 characters를 넘을 수 없음. 너무 길다 싶으면 ensureIndex()를 통해 짧게 지정 가능.

- 복합인덱스(CompoundIndex)로 구성할 수 있는 최대 field수는 31개.

- text index는 geospatial index와 섞어서 사용할 수 없음.

 

Data

- capped collection의 최대 document 수를 지정할 경우, 232 넘어설 수 없음. 최대 document수를 지정하지 않는다면 해당 capped collection은 document 수의 제한은 없음.

- 하나의 mongod 인스턴스는 해당 OS가 제공하는 최대 virtual memory 주소공간 이상의 데이터셋을 관리할 수 없음. (Linux의 경우 저널사용시 64테라, 저널미사용시 128테라이고 Windows는 저널사용시 4테라, 저널미사용시 8테라)

- 한 Database의 collection수는 namespace size 설정에 달려 있음. 상단의 name spaces 부분 참조.

 

Replica Sets

- 하나의 Replica Set을 구성하는 최대 member수는 12

- 투표권이 있는 Replica Set memeber의 최대수는 7

 

Sharding Operational Restrictions

(shard 환경에서 사용할 수 없는 명령들)

- group -> 대신 mapReduce나 aggregate를 이용.

- db.eval()도 못씀.

- $where, $isolated, $snapshot, geoSearch 

 

- 이미 데이터가 들어있는 collection을 sharding 하려 할 경우 256GB 까지 가능. 400GB까지도 가능하지만 document size나 chunk size에 따라 안될 수도 있음.

 

- shard 환경에서 update/remove시 query에 반드시 shard key 또는 _id가 포함되어 있어야 함. 만약 없을 경우 error 리턴.

 

- sharding 환경에서 MongoDB는 전체 shards 기준 index의 unique를 보장하지 않음. 만약 해당 index가 prefix로 전체 shard key를 포함한다면 unique 보장. (물론 single field가 아닌 full key)

 

- shard key는 512 bytes 를 넘을 수 없음.

 

- sharding을 하고 나면 shard key는 변경불가.

- 만약 무슨일이 있어도 shard key를 변경해야겠다면 아래의 방법을 추천.

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

    - 전체 데이터를 external dump -> 기존 collection drop -> 새 shard key 설정 -> pre-splitting -> dump 데이터 밀어넣기

 

- shard key field는 update 불가능.

 

- 정방향이든 역방향이든 단순증가 shard key는 heavy-insert시에 단일 shard의 단일 chunk에만 insert 되므로 병목이 될 수 있음. 이걸 해결할려면 shard key를 잘 조합하던가, 아니면 hashed shard key를 이용할 것.

 

- MongoDB는 index가 아닌 field 기준 sort()를 요청할 경우 32MB 이하의 메모리를 사용할 경우에만 정렬된 결과를 반환함.

 

- aggregation시 $sort가 RAM의 10% 이상을 점유할 경우 error 처리

 

- 2d geospatial query는 $or를 사용할 수 없음.

 

- geometric query의 공간은 반구형(hemisphere)안에 들어가야 함.

 

- 다중 $in을 사용하고 해당 field들이 복합인덱스를 구성하는 경우, $in의 조합이 4000000개를 넘으면 MongoDB는 예외를 던지고 관둔다.

 

- MongoDB의 Database 이름은 대소문자를 구분한다. 대소문자를 구분하지 않는 Windows에서도 마찬가지다.

 

- Windows에서는 Database 이름으로 다음 문자를 사용할 수 없다 ===>  \/. "*<>:|?

 

- Unix, Linux에서는 Database 이름으로 다음 문자를 사용할 수 없다 ===> \/. "

 

- 모든 시스템에서 MongoDB의 Database 이름에 null character를 포함할 수 없다.

 

- MongoDB의 Database 이름의 최대길이는 64 characters

 

- collection 이름은 반드시 언더스코어(_)나 letter character(적절한 번역단어를 모르겠음)로 시작해야 하며 다음과 같은 형태를 사용할 수 없다.

    - 달러기호($)는 포함할 수 없다.

    - 빈 문자열 불가

    - null character를 포함할 수 없다.

    - system.이란 단어로 시작할 수 없다. (예약어)

 

- field 이름에는 점(.)이나 달러기호($) 또는 null character를 포함할 수 없다.

 

 

 

 

[참조]

http://docs.mongodb.org/manual/reference/limits/



출처: http://bloodguy.tistory.com/entry/MongoDB-MongoDB의-제약사항들-MongoDB-limits-thresholds [Bloodguy]

 

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
공지 오라클 기본 샘플 데이터베이스 졸리운_곰 2014.01.02 86114
공지 [SQL컨셉] 서적 "SQL컨셉"의 샘플 데이타 베이스 SAMPLE DATABASE of ORACLE 가을의 곰을... 2013.02.10 78624
공지 [G_SQL] Sample Database 가을의 곰을... 2012.05.20 95339
27 [java dbms][database] [컴] Apache Derby 사용하기 - 4 - in-memory DB 졸리운_곰 2021.04.15 1560
26 [java dbms][database] [컴] Apache Derby 사용하기 - 3 - Apache Derby Network Server 졸리운_곰 2021.04.15 1634
25 [java dbms][database] [컴] Apache Derby 사용하기 - 2 - sql script tool ij 사용하기 졸리운_곰 2021.04.15 1823
24 [java dbms][database] [컴] Apache Derby 사용하기 - 1 - Derby 설치 file 졸리운_곰 2021.04.15 1153
23 실습 2 - GROUP 졸리운_곰 2020.09.30 1550
22 [SQL 가이드] 데이터베이스 모델의 이해 (Understanding Database model) file 졸리운_곰 2020.06.13 2483
21 [SQL 가이드] 식별자(Identification)의 개념 file 졸리운_곰 2020.06.13 2060
20 [SQL 가이드] 관계(relationship)의 개념 file 졸리운_곰 2020.06.13 1556
19 [SQL 가이드] 속성(attribute)의 개념 file 졸리운_곰 2020.06.13 1703
18 [SQL 가이드] 엔티티의 개념 file 졸리운_곰 2020.06.13 2199
17 [SQL] join의 on절과 where절 차이 졸리운_곰 2020.05.16 1303
16 JOIN*(3개 테이블) and GROUP BY*(보이지않더라도 key칼럼으로) and ORDER BY 졸리운_곰 2020.05.16 1224
15 다중 테이블에서 데이터 검색 - JOIN file 졸리운_곰 2020.05.16 1594
14 IFNULL(MYSQL), ISNULL(MSSQL), NVL(ORACLE) 졸리운_곰 2018.07.24 1778
13 4 Ways to Join Only The First Row in SQL file 졸리운_곰 2018.07.03 1637
12 DBMS별 기존테이블 SELECT해서 새 테이블에 INSERT하여 데이터 ... file 졸리운_곰 2018.01.22 1592
11 SOL 개발자의 현주소 : 개발자가 SQL 작성시 고쳐야 하는 태도 file 졸리운_곰 2018.01.01 2158
10 오라클 운반 최소 단위 BLOCK file 졸리운_곰 2017.07.15 2035
9 재미있는 DB 이야기 ‘놀라운 마방진의 세계’ file 졸리운_곰 2017.07.15 2393
8 재미있는 DB 이야기 ‘사라진 날짜를 찾아라’ file 졸리운_곰 2017.07.15 2224
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED