안녕하세요. 주디아줌마입니다.
(강동운님이 정리해주신 자료에 추가한 부분입니다.)

2012.09.12일 몽고DB 기술세미나를 가졌습니다. 이번 기술 세미나는 10gen의 Mr. Chad Tinel 엔지니어분이 오셔서 QA으로 진행되었습니다. 기술문의는 chadtinel@10gen.com으로 보내주시면 응답해주신다고 합니다. (공짜는 아니에요^^) 



Q. 2.2에서 글로벌락에서 DB락으로 조정이 되었는데, 향후 Release는 어떻게 되는가?

    6개월 주기로 Release되며, 향후에는 일반 DBMS와 같이 Field Locking까지 지원이 될것이다.  3월 정도 2.4 버젼에서는 collection level로 locking으로 기대된다.  추가적으로 보안에 대해서 신경을 쓰게 되었는데 R/W에 대한 권한 조정이 가능하다. 이것은 DB마다 읽기를 가지는 권한과 쓰기를 가지는 로그인 계정이 분리가 된다는 것인데 2.4 버젼에 가능하지 않을까 싶다.



Q. 샤딩은 언제쯤 구현하면 좋은가?

100 GB 정도면 아주 작은 데이터다. 우리는 보통 20 ~ 30TB 정도 되는 데이터를 샤딩하라고 추천하고 있다.그리고 장비 한대에 300 GB RAM을 설치하는건 비용이 엄청 비싸기 떄문에 이것도 3대로 나눠서… 100GB씩 3대로 나눠서 사용하는게 비용적인 측면에서 유리하다.


Q. 도큐먼트 SIZE에 따르는 성능 수치에 대한 정보가 있는가?
없다.  변수가 다양하기 때문에 애매모호하다.

Q. System Log 분리가 가능한가? log level에 따른 남기는 정보가 틀리는데 정보좀 알려달라..
현재까지 시스템 장애 로그에 대한 분리 요청이 없었는데, 본사에 가서 제안을 해보겠다.
log level에 대한 정보 공유할 수 없다. 보통 3, 5로 레벨로 저장한다.

Q. 몽고DB는 Windows Base에 최적화하려는 생각은 있느냐?
아직까지는 없다. 미국내에서도 97%가 리눅스 Base에서 운영중에 있다.
(ㅠㅠ... 아쉽죠.. )

Q. 쓰기 위주의 log성 데이타(예, 도큐먼트 사이즈가 100G) 일때 샤딩을 고려해야 하나?
테라 바이트의 경우에도 문제 없었다. 장애를 대비해야 하기 때문에 standalone 환경 보다는 Replica-Set 환경으로 추천한다.

Q. troubleshooting을 위한 자료가 있느냐?
우리가 개발한 MMS가 있다. 이것을 이용하면 된다. 

Q. 외부 네트웤과 차단된 환경에서는 mms 사용이 불가능하지 않느냐?
  mms를 이용할 수 없는 고립된 장비들 예를들면 은행이나 증권 등등에서는 이것을 사용할 수 없기 때문에 오픈 소스로 모니터링할 수 있는 툴을 개발중이고, 향후 버전에 이걸 따로 배포할 계획이 있다.

Q. 우리는 CPU보다 메모리가 중요하다. 따라서 장비를 scaleup하기 위해서는 
메모리가 첫번째 요소다.
1순위)메모리
2순위) SSD 또는 10GB network badwidth
  RAM이 굉장히 중요하기 때문에.. 현재 사용하고 있는 데이터만큼 메모리 사이즈가 있으면 좋다. 예를들어 100G의 데이터가 있고, 이중 10G가 정도만 메모리에 올라가 있는 상태라면 최소 10G 이상의 램을 가지고 있어야 한다.

CPU의 성능은 많이 차이가 없다. 2개면 충분하다. 

Q. 맴리듀스에서 병렬처리가 가능한지
몽고디비는 맵리듀스가 느리기 때문에 하둡 Plug-in을 제공한다. 몽고DB->하둡, 하둡-> 몽고DB로 넣을 수 있는 plugin을 지원한다. 
http://www.10gen.com/presentations/mongodb-philly/2012/mongodb-hadoop

Q. middle layer에 cash 용도로 Redis를 사용 많이하는데 이제는 제거해도 되나?
제거 해도 된다. 
[발 번역] 잘가~~ Global Lock, MongoDB 2.0 vs 2.2

Q. 백업 어떻게 하는게 최상의 조건인가?
  대부분의 사람들은 db lock을 싫어한다. 왜냐하면 db에 lock을 걸게 되면 write가 안되기 때문이다. 그렇지만 우리는 이런 방법으로 컨설팅을 주도해 나가고 있으며, 복제 셋을 기반으로 db lock을 걸어 데이터를 퍼가던지, 파일을 복사하는 그런 형태로 컨설팅을 안내하고 있다.

Q. 타 RDBMS처럼 POINT BACKUP이 가능한가?
(여기서 POINT BACKUP이란 특정한 시간을 지정해서 백업을 하는 시스템 예를들어 새벽4시)
샤드가 된 서버들은 각각 관리가 되기 때문에 이거는 불가능 하다. 따라서 개별적으로 디비에 LOCK을 걸어 복사하는 형태를 취하는 것이 좋다.

Q. 장비가 3대가 늘어나면 INSERT 속도가 증가하는가?
    현재로 말씀드릴 수 있는건 산술적으로 늘어나는 것이기 때문에 그건 맞다고 볼 수 있다.

Q. 청크가 64 MB라서.. 이게 이동이 되다보면 서비스 라인에 지장을 줄 수 있는데 이걸 따로 보내기 위한 private network를 구성할 계획이 있는가?  
   좋은 질문이다. 하지만 현재로써는 10gen 고려되지 않고 있다. 다만 말씀드릴 수 있는건 10 GB network bandwidth를 쓰라고 조언해드릴 수 있다.

Q. 시간 단위 복구가 가능한가?
   Replica-Set으로 구성해서 SlaveDelay 옵션으로 private와 slave와의 동기화 시간을 조정해서 사용한다. 단, oplog가 커야 한다. oplog를 백업해서 1시간 이전의 데이타로 복구할 수 있다. (주디아줌마: 이건 나중에 한번 테스트 해봐야겠다.)


'Etc' 카테고리의 다른 글

Spanner: Google’s Globally-Distributed Database  (1) 2012.09.17
mongodb index tools...  (4) 2012.09.13
MongoDB + Hadoop  (0) 2012.09.11
sql agent에 할당된 max worker thread 수는 얼마일까?  (0) 2012.09.10
mongodb assert log debugging 방법  (0) 2012.09.07