클라우드 컴퓨팅 & NoSQL/MongoDB 10

MultiThread로 RabbitMQ에서 메세지를 읽어서 MongoDB에 쓰는 예제 (Python)

import pikaimport astimport pymongoimport datetimeimport loggingimport timeimport sys,traceback,socket,threadingfrom datetime import datetimefrom time import sleep # configurationMONGODB_NAME = "terrydb"HOSTNAME = ':'+socket.gethostname()QUEUE_NAME = 'hello'MONGODB_URL= 'mongodb://localhost'RABBITMQ_URL='localhost' LOG_FORMAT = ('[%(levelname)s] %(asctime)s %(name)s : %(message)s')LOGGER = loggi..

Python을 이용한 간단한 mongodb insert 예제

Python을 이용한 간단한 mongodb insert 예제 1. easy_install.exe를 이용하여, mongodb python driver인 pymongo를 설치 2. 코드 작성 connection얻고, db선택하고,collection(여기서는 users테이블) 선택하면되고, insert,update등은 기존 mongodb script와 유사함. 에러 처리는 아래와 같이 try,except 사용 import sys import pymongo connection = pymongo.MongoClient("mongodb://localhost") db = connection.terrydb users = db.users doc = {'_id':'myid','firstname':'Terry','lastna..

MongoDB의 Physical 데이타 저장 구조

MongoDB를 구성할때 보면, 가장 많이 권장 받는 부분 중의 하나가, 메모리량과 디스크 성능이다.메모리 크기가 아주 sensitive한 요인이 되는데, 어떤 부분이 문제가 되는지 내부 저장 구조를 살펴 봄으로써 이해를 돕고자 한다. 저장 구조mongodb는 기본적으로 memory mapped file (OS에서 제공되는 mmap을 사용) 을 사용한다. mongodb는 데이타를 write할때, 논리적으로 memory 공간에 write하고, 일정 주기에 따라서, 이 메모리 block들을 주기적으로 disk로 write하는데, 이 디스크 writing 작업은 OS에 의해서 이루어 진다. OS에 의해서 제공되는 Virtual Memory를 사용하게 되는데, Pysical Memory 양이 작더라도 Virtu..

MongoDB 30분만에 이해하기.. (설치,테스트 및 자바 샘플)

초간단 Mongo DB Quick Start Guide 조대협 (http://bcho.tistory.com) Mongo DB는 NoSQL 중에서 가장 널리 사용되는 인기있는 제품이다. 사용과 운영이 다른 시스템에 비해서 매우 쉽고, JSON 기반의 Document를 제공하기 때문에, 데이타 구조에 대한 이해 및 사용이 쉽다. 또한 index나 search와 같은 feature를 제공하고 있고, 근래에는 Text Search와 GridFS를 이용한 파일 저장 그리고, 위치 정보 저장 및 쿼리등 다양한 기능을 제공하고 있다. Mongo DB는 10gen이라는 회사에서 개발되어서, 현재 오픈소스로와 상용 버전으로 공급되고 있다. 이 글에서는 Mongo DB에 대한 이해를 돕기 위해서 간단한 설치에서 부터, 자..

MongoDB vs Cassandra Performance

MongoDB 깜빡 잊고 있었다. Read / Write 성능이 빠를 수 밖에 없다는 걸.. Mongo는 Write시에, Memory에 먼저 Write후에, 1분 단위로 Flushing하는 Write Back 방식을 쓴다. 즉 메모리에만 쓰면 되니까는 Write가 무지 빠르다. 반대로 Read시에는 파일의 Index를 메모리에 로딩해놓고 찾는다(memory mapped file). 이러니 성능이 좋을 수 밖에, 단 Flushing전에 Fail이 되면 데이타 유실에 의해서 Consistency 가 깨지는 문제가 발생하고, Configuration 구조상 메모리 사용량이 많으며, 확장성에 제약이 있다. 특히 Write 구조에서는 비동기 식으로 Write를 하기 때문에 Disk 성능에 덜 Sensitive하다..

MongoDB Deployment 아키텍쳐

MongoDB Deployment 아키텍쳐를 간단하게 보면 다음과 같다. mongos들을 앞단에 쭈욱 늘어놓고, 이는 라우터의 역할을 한다. mongos간의 load balancing은 앞단에 L4등의 로드 밸런서를 사용하고, Cache Hit율등을 높이기 위해서 L4는 Hash 방식등의 Sticky setting을 한다. 뒷단에 mongod를 배치하고, 최소한 3 copy replica 구조로 설정한다. inter data center에 대한 replication을 설정하고, 이는 DR이나 Back up 용도로 사용한다 inter data center replication은 항상 여러가지 숙제를 주는데, 이 경우 backbone의 속도 차이로 인하여 data의 일관성이 깨질 수 있으니, 1. DR/Ba..

2시간 동안 MongoDB 훝어보기

대충 2시간 정도 MongoDB를 훝어보니 구조 - mongod는 실제 데이타 베이스 핸들링 프로세스로 mysqld와 유사 - 앞단에 mongos 라는 프로세스를 띄워서 클러스터 구성을 하면, mongos가 로드 밸런서 역할을 함 클러스터링을 할경우 - Sharding을 사용하여 데이타를 분산 저장해야 함 - 이 경우 같은 shard내에 mongod를 3 copy로 replication하여 데이타 유실을 방지를 권고한다. - 고급 문서 대부분 내용이 Shard 구성과 Index 구성이다. 이게 키 포인트인듯 ※ 이 과정은 Redundant한 하드웨어 구성으로 인하여 하드웨어 코스트를 올릴 수 있다. 성능 부분에서는 - mongodb는 memory 기반의 index를 사용하여 cassandra나 hbase..

MongoDB에 대한 몇가지 메모

요즘 대용량 데이타 처리 때문에, NoSQL을 머릿속에만 올려놓고, 근래에나 되서 이래서는 안되겠다 해서 직접 자료를 찾아보고 있습니다. NoSQL은 Cassandra, HBase, Mongo, Riak등을 후보군으로 뒀는데, Cassandra는 FaceBook에서 Donation해서 만든 분산 DB로 개인적으로는 가장 신뢰가 가기는 했지만, 국내의 많은 블로그 포스팅등을 읽어보면, 안정성이나 사용성이 떨어진다는 것이다. 즉 제품은 좋은데 야생마처럼 잘 쓰지 못하면 모쓰는 제품이라는 이야기. 일단 후보로 남겨놓고 패스. HBase는 Hadoop File System (HDFS)를 기반으로 설계되었는데, 검색해보니 생각보다 많이 사용이 안되는 것 같아서 패스 Riak도 신생이라서 패스 결국은 Mongo와 ..

Mongo DB

점심 시간에, 후욱 훝어봤는데, 생각보다 괴안은 듯. 주요 특징을 적어보면 Cassandra와 같은 NoSQL DB와 유사한 데이타 저장 구조를 가진다. 무엇 보다 마음에 드는 건, Sharding과 Replication을 솔루션 차원에서 지원하고, 자체 Map & Reduce 엔진을 가지고 있다. 여기에 더해서, 가장 많은 레퍼런스를 가지고 있다는 것 C# 인터페이스가 없는 것이 아쉽기는 한데... C/C++이 있으니, COM으로 만들어서 재 사용해도 될듯. 시간 나면 한번 더 조사해봐야 쓰겄다. 특히 Geo Replication이 되는지가 젤 궁금하네.