MongoDB & Python Niall O’Higgins Ch 1, 2

Ch. 1.  Getting Started

Introduction

2009년 릴리스.  다이나믹한 디비.. 그런 파이썬과 잘 어울림.

Finding Reference Documentation

Installing MongoDB

Running MongoDB

맥 : 터미널에서 mongo 실행. 어드민 콘솔 실행.

Setting up a Python Environment with MongoDB

PyMongo driver package. 파이썬에서는 ‘가상 환경’ 을 만드는 게 연습에 좋다.  > virtualenv..
> 1. via manually >> python -c import setuptools
> 2. via system package management tool
유닉스 계열은 .. sudo port install py27-virtualenv   이런 식.

다음으로 PyMongo 드라이버 설치.

pip 설치..

< MY TIP >mongod : 서버, mongos : 클라이언트 사이드, mongo : 관리자 쉘..
http://docs.mongodb.org/manual/tutorial/manage-mongodb-processes/
mongod –dbpath /srv/mongodb/

Ch. 2.  Reading and Writing to MongoDB with Python

Connecting to MongoDB with Python

Getting a Database Handle

Inserting a document into a Collection

Collection 은 lazily 생성.  오타나면 그 이름으로 생성하므로 디버깅 어려움.
Primary key 자동 생성.  _id ..  96 bit .. identical value.. ObjectID object.. not incremental ID in RDBMS

Write to a Collection Safely and Synchronously

비동기 쓰기는 위험하므로 ‘항상’ ‘언제나’ 블락 writing 하라.

Guaranteeing Writes to Multiple Database Nodes

Node :: a single instance of MongoDB daemon process.   Normally .. a node a machine..
Replica Set :: master – slave replication..
만약을 위해 복제디비에 쓴다.. w=2 이러식

dbh.users.insert (user_doc, w=2)

Introducing to MongoDB Query Language

암시적 And.. Or 사용하려면 $or ..  greater than, less than .. 등 조건문.

q = {
“firstname” : “Jane”
“lastname” : “Doe”  # And … 자동으로…
“score” : { “$gt” : 25 }  # greater than 25 …
}

Reading, Counting, and Sorting Documents in a Collection

하나만 찾을 때 find_one()
크기만 알고 싶을 때 : 서버 쪽에서 count()  Cursor object..
Sort() ..  결과가 많고 그 중 일부만 가져올 때.. 게임 탑 순위를 걸를 때…  Limit()   .. performance benefit.. limit 0 = NO limit ^ *
Cursot.skip ()  page ..

users = dbh.users.find(snapshot = True).sort((“score”, pymongo.DESCENDING) ).limit(10)

Snapshot Mode.. 분석 도구.. 중복 방지.

Updating Documents in a Collection

값을 지정하고 전체를 업데이트 해야 함.. 딮 카피 후..
레이싱 문제 발생 가능.  그래서.. “update modifiers” 채용.
=> atomic increment / decrement, atomic list push / pop …   $set  를 사용하여 미리 쿼리를 안 해도 되게 함.

dbh.users.update( { “username” : “janedoe” },  { “$set” : { “email” : “janedoe74@examcle.com” } }, safe=True)

조건에 여러개가 맞아도 첫번째 하나에만 적용.   “multi = True” 파라메터 필요.

Deleting Documents from a Collection

dbh.users.remove( { “score” : 1 }, safe=True )

dbh.users.remove(None, safe=True) # delete ALL Documents in user collection …

drop_collection() 은 인덱스를 놔둔다.

MongoDB Query Operation

$gt, $lt, $in ….

MongoDB Update Modifiers..

$inc : Atomic Increment   “$inc”:{“score”:1}
$set : Set Property Value   “$set”:{“username” : “niall” }

Advertisements

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중