機械学習で大量のデータを扱いにはデータベースが欲しくなります。SQLデータベースは設計が面倒なので今回はNoSQLのMongoDBを選択しました。

設定編

インストール

$ brew update
$ brew install mongodb

データベースの保存先のディレクトリを作る

$ sudo mkdir -p /data/db
$ sudo chown -R 777 /data

/data/dbはデフォルトなのでおすすめです。
777は多分危ないかもしれませんので、正しい権限を教えてください :bow:

起動

サーバー

$ mongod

クライエント

$ mongo
MongoDB shell version: 3.2.9
connecting to: test
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
  http://docs.mongodb.org/
Questions? Try the support group
  http://groups.google.com/group/mongodb-user

> use mydb
switched to db mydb
> a = { content: "ほげほげ"  }
{ "content" : "ほげほげ" }
> db.articles.save(a)
WriteResult({ "nInserted" : 1 })
> db.articles.find()
{ "_id" : ObjectId("57c66c9142b4bc1b24ea7fc7"), "content" : "ほげほげ" }

バックアップ

$ mongodump --out db/dump --db dbname

リストア

$ mongorestore db/dump --db maybe_different_dbname

PythonでMongoDBを使う

いつかのORMが存在しますがmongoengineが一番使いやすいのでmongoengineを使ってみます。

$ pip install mongoengine

モデルの定義

from mongoengine import * 

connect('dbname')

class Article(Document):
  content = StringField(required=True)

レコード追加

from article import Article

article = Article(content = 'ほげほげ')
article.save()

全レコードを1個ずつ読み込み

from article import Article

for article in Article.objects
  print(article.content)