読者です 読者をやめる 読者になる 読者になる

GIS奮闘記

現役GISエンジニアの技術紹介ブログ。主にPythonを使用。

PythonでMongoDBを弄ってみる

今回はMongoDBについてです。MongoDBって最近よく聞くけど一体何なの?!という方もまだ多いかと思います。MongoDBは,いわゆる「ビッグデータ」を処理可能なパフォーマンスをもつNoSQLの性能と,RDBMSのもつ豊富な機能をバランスよく取り込んだソフトウェアです。

■特徴
・NoSQL(Not only SQL)の1種でありドキュメント指向データベース。
スキーマレス(テーブルの構造が固定ではなく、自由にデータを突っ込める)。
・RDMBSと比較するとスケールアウトが容易。
・レコードはBSON (Binary JSON) の形で扱われる。
・JOINはできない。JOINをしなければならない場合はRDBMSをチョイスする必要がある。
・etc

この中でもやはりスキーマレスというのがRDBMSとの決定的な違いでしょうか。
完全にRDBMS脳になってしまっているので、慣れるまで少し時間が必要そうですね。

f:id:sanvarie:20151207161048p:plain


詳しくは以下サイトをご参照ください。
http://itpro.nikkeibp.co.jp/article/COLUMN/20120306/384811/

インストール

まずは以下サイトからインストーラーをダウンロードします。

https://www.mongodb.org/downloads#production

  • インストール後、exeファイルの場所をPathに追加

 - 例:C:\Program Files\MongoDB\Server\3.0\bin
 - コマンドプロンプトでmongod --versionが通ってればOK

起動方法

  • データを保存する場所とログを保存する場所を確保する

 - データの保存場所の例:D:\mongodb\data
 - ログの保存場所の例:D:\mongodb\logs

 - 例:mongod --dbpath D:\mongodb\data --logpath D:\mongodb\logs\mongodb.log

PyMongoのインストール

PyMongoとはPythonのMongoDBクライアントのことです。
pip install pymongoでインストールしてください。

MongoDBの導入については以上です。さて、続いてはPythonでMongoDBを操作してみましょう!

■sample.py

# -*- coding: utf-8 -*-
import pymongo

def main():
    client = pymongo.MongoClient(host='localhost', port=27017) #接続
    test_db = client.test                                      #「test」というDBを作成する
    collection = test_db.my_first_collection                   #コレクション=テーブル
    collection.insert_one({'name': 'foo', 'age': 10})          #コレクションにドキュメント(レコード)を挿入。JSON形式
    data = collection.find_one()                               #一件目のデータを取得する

    #各種値の確認
    print u'DB = ' + test_db.name
    print u'テーブル= ' + test_db.collection_names(include_system_collections=False)[0]
    print u'レコード= '
    print collection.find_one()

if __name__ == '__main__':
    main()

コンソールの確認をします。

f:id:sanvarie:20151208071134p:plain

簡単にMongoDBデビューができました!
次はこれを使ってもう少しビッグデータの処理っぽいことをしてみたいですね。