Search Results for 'MongoDB'

6 POSTS

  1. 2012.08.31 MongoDB 오픈세미나 후기
  2. 2011.11.30 MongoDB Naming Rule
  3. 2011.11.23 MongoDB GUI Tool for Mac osx : MongoHub

MongoDB 오픈세미나 후기

Posted 2012. 8. 31. 01:00

MongoDB 국내 사용자 모임 카페(네이버)에서 주관하는 오픈세미나 참석

첫 참석이라 낯설고 지식도 없어 걱정했지만 나름 유용했음.

 

아래의 내용은 기억속에 있는 것을 까먹기 위해서 작성한 것임. 기술적인 명확한 검토는 천천히 하고자 한다.

 

오늘의 주제는 크게 FluentD 와 Redis 를 이용한 MongoDB 구성.

 

1. FluentD (www.fluentd.org)

 - 각종 파일로 쌓이게 되는 로그(아파치로그, 시스템 로그등등)를 정기적으로 access 하여 MongoDB에 넣어주는 솔루션

 ( MySQL 에도 insert할수 있도록 변형이 가능하다고 함.)

 - Ruby로 작성된 초경량 프로그램이면서 막강한 기능을 제공

 - 파일로그가 아닌 트래픽을 중간에 가로채서 MongoDB에 insert 동 가능

 - 적절히 이용할 경우 MongoDB 앞단에서 buffer의 형태로 작동하여 mongodb 부하를 줄일수 있음.

 -  Fail over 나 Load Balance 에 대한 기능은 없음. 이러한 기능을 이용하려면 Hadoop에서 이용하고 있는 Flume을 MongoDB에 맞게 변형해서 사용해야 함. (소스가 공개되어 있는 상태라서 변형에 대한 난이도는 어렵지 않다고 함.)

 - 또한 직접구현을 한다면 ascii 형태의 파일뿐 아니라 binary형태의 파일도 가능함.

 - 국내는 사용빈도가 거의 없으나 해외에서는 나름 많이 사용됨.

 

2. Redis (Membase 기반의 메모리 DB)

 - MongoDB를 서브가 아닌 메인으로 사용한다면 동적증가에 따른 성능저하를 유발한다. 그 첫번째 이유로 Locking 이다.
 - MongoDB의 고질적인 문제인 Lock(Global Lock > Db Lock > collection Lock?) 에 대한 해결책(?)으로 사용하기 위한 구성방안.

 - Redis를 읽기 전용, MongoDB는 insert, select 로 사용.

 - MongoDB로부터 주기적으로 데이터를 받아서 Redis에  insert하는 agent를 만들어야 한다.

 - Cache server형태로 사용 Memcache가 전형적인 cache server 형태로 사용되기 때문에 데이터 전체가 휘발성이 되어 전원차단시 데이터가 전부 날라가는 문제가 있으나 Redis는 DB형태를 띄기 때문에 비휘발성데이터 형태로 백업이 가능. 때문에 전원차단시에도 데이터가 날라가지 않음.

 

의문 :

NoSQL은 고성능 서버 스펙을 요구한다?

MongoDB에 사용되는 서버는 얼마만큼의 고사양으로 구현해야 하는가?

분산환경에서 Bigdata를 커버하기 위해 탄생된 것이 NoSQL인데,

고가의 고성능 서버를 요구한다는것이 쉽게 납득이 가지 않는다.

기본적으로 메모리 기반의 데이터베이스이기 때문에 메모리의 양은 충분히(적어도 16GB이상) 잡아주는 것은 인정한다.

더군다나 예전과 달리 서버에 사용되는 ECC메모리도 PC메모리 수준으로 가격이 떨어졌기 때문에 서버를 구성하는데 메모리는 더이상 부담되는 요소가 아니라고 본다.

어찌되었든 NoSQL이 수직적 확장이 아닌 수평적 확장을 표방하는 만큼 성능이 낮는 서버를 트래픽이 증가함에 따라 계속 추가하면서 BigData를 감당해야 함이 맞지 않나 생각해 본다.

물론 그 적정선의 사양이라 함이 어느정도인지는 테스트(?)가 필요할 것이다.

 

예전 카산드라의 경우 하루 1GB정도(로그성 데이터가 주를 이룸. 정확한 수치는 확인해봐야 함)의 데이터가 쌓이는 환경에서 7대정도로 커버가 가능했었다.

그때의 서버 스펙은 다음과 같다.

Dell R410 (Quad Core 2.6?) 16GB RAM, 1TB SATA HDD(No RAID 구성)

'DBMS > NoSQL' 카테고리의 다른 글

Cassandra 시작시 MalformedURLException 발생  (0) 2012.04.12
Jedis를 이용한 Redis 따라가기  (0) 2012.02.28
MongoDB Naming Rule  (0) 2011.11.30
MongoDB GUI Tool for Mac osx : MongoHub  (0) 2011.11.23
MongoDB 컴포넌트 목록  (0) 2011.10.03


MongoDB Naming Rule

Posted 2011. 11. 30. 19:36

1. Collection
Collection 은 그 이름자체로 고유ID 성격을 가진다. Collection 이름은 여느 UTF-8 문자열로 작성 가능하지만 다음의 제약이 존재한다.
- "" 빈 문자열
- null
- system. 으로 시작하는 문자열
- $ 가 들어간 문자열


2. Database
- "" 빈문자열은 사용불가
- '', .,공백문자열,$, /,\, null은 사용불가
- 모든 문자열이 소문자로 구성되어야 한다.
- 64bytes 제약
- admin : root database, 권한 관련 항목이 포함되어 있음
- local :단일 서버로만 사용될것이라면 사용가능하다. 즉 단일서버로만 사용할 경우에
- config : 샤딩구성으로 사용하고자 할때 샤딩정보를 저장하기 위해 내부적으로 사용되는 Database




MongoDB GUI Tool for Mac osx : MongoHub

Posted 2011. 11. 23. 20:48

MongoDB의 기세가 무섭다. 시간적으로 얼마 되지 않은것 같은데 벌써 꽤 많은 MongoDB GUI Tool들이 제공되고 있다.
그중에서 맥전용으로만 제공하는 MongoHub를 사용해 보았다. 일반적으로 윈도우나 리눅스용을 먼저 만들고 이후 맥용은 제일 나중에 나올텐데, 이 MongoHub는 Mac전용이다. 게다가 무료다.


처음 실행화면이다. 하단의 + 버튼을 클릭함으로 새로운 커넥션 정보를 추가할수 있다.

 
접속저보에 대한 추가화면이다.  모든 항목에 대해 넣어주지 않으면 접속이 안된다. 
MongoDB를 설치하여 default로 실행할 경우 user가 생성되지 않기 때문에 별도 데이터 베이스별로 user를 생성해야만 한다.


Database를 생성하고 또는 생성된 데이터베이스를 선택하면 테이블(Collection) 목록이 나오고 하단의 +,- 버튼을 이용해 새로운 Collection을 추가/삭제할수 있다.

MongoHub에는 MySQL로부터의 import, export기능이 내장되어 있다. 위의 항목과 같이 MySQL항목을 넣고 Connect 버튼 클릭하면 연결된 MySQL의 Database, Table에 대한 선택화면이 나오고 선택후 Import를 클릭하면 기존 Table데이터가 MongoDB로 import가 된다.

위의 화면은 이렇게 해서 import된 데이터의 일부분이다. 한글도 깨지지 않고 잘 보인다.  다만 데이터 양이 많은 경우 마이그레이션하는데는 상당한 시간이 걸릴것으로 예상된다.


위의 내용은  Query항목에서 특정 key에 해당하는  값을 불러와본 예시화면이다.  일일이 모든 함수를 다 작성해서 실행하는것이 아니라 위와같이 선택하려는 Key:value 에 대한 부분만 형식에 맞게 입력하고 Run 을 실행만 하면 된다.

위의 내용은 각 항목별로 발생하는 트래픽에 대한 모니터링 화면이다.  리눅스의 iostat 화면을 보는것같다.

대략적인 것만 한번 훑어 본 결과를 나열해 보았다.  처음 MongoDB를 접했을때만 해도 어떤 함수를 실행해야 할지 막막했었는데, 이런 툴을 통해서 좀더 쉽게 MongoDB에 다가갈수 있을것으로 보인다.

'DBMS > NoSQL' 카테고리의 다른 글

Jedis를 이용한 Redis 따라가기  (0) 2012.02.28
MongoDB Naming Rule  (0) 2011.11.30
MongoDB 컴포넌트 목록  (0) 2011.10.03
[번역]MongoDB 샤딩(Sharding)이란?  (1) 2011.07.12
ubuntu 에 mongodb설치해보자.  (0) 2011.07.10