NoSQLデータストア
dbmファミリ
SQLをサポートしていない。
非常に大きなデータセットの処理、柔軟なデータ定義、カスタムデータ処理
のサポートを目的として作られる。
Pythonの辞書と似ている
●キーに値を代入でき、代入された値は自動的にディスク上のデータベース
に保存される
●キーから取得できる
import dbm
db = dbm.open('definition', 'c')
キーと値の組を作るには、辞書と同じようにキーに値を代入する
db['mustard'] = 'yellow'
db['ketchup'] = 'red'
db['pasto'] = 'green'
len(db)
db.close()
db = dbm.open('definitions', 'r')
db('mustard')
memcached
キーと値のための高速なインメモリのキャッシュサーバー
データーベースの前処理として使用されたり、ウエブサーバー
のセッションデータの格納に使われたりすることが多い。
memeachedサーバとPythonドライバが必要だ。
●キーを設定した値の取得、設定
●値のインクリメント、デクリメント
●キーの削除
import memocache
db = memcache.client(['127.0.0.1:11211'])
db.set('marco','polo')
db.get('ducks', 0)
db.get('ducks')
db.incr('ducks', 2)
db.get(ducks)
Redis
データ構造サーバーだ。デスクにデータを保存するオプション
がある。
●ディスクにデータを保存できるので信頼性が高く、再起動できる
●古いデータを消さずに残しておける
●単純な文字列以外の構造もある
Redisのデータ型はPython型と非常に近い。
redisサーバーは、ひとつ、あるいは複数のPythonアプリケーションが
データを共有するための便利な中間媒体になりうる。
Radisはとても役く立つ。
pip install radis
でインストールできる。
文字列
ひとつの値を持つキーは、Redisの文字列である。Pythonの単純データ型
は自動的に変換される。何らかのホスト(デフォルトはlocalhost)
の何らかのポート(デフォルトでは6379)でサーバーに接続する
import redis
conn = redis.Redis()
また、
redis.Redis('localhost')やredis.Redis('localhost', 6379)でも
同じ結果が得られる。全てのキーのリストの表示は
conn.keys('*')
単純な文字列(キーは'secret'),整数(キーは'carats'),float
('fever')を書き込む
conn.set('secret', 'nil')
conn.set('carats', 24
conn.set('fever', '101.5')
リスト
Redisリストは、文字列しか格納できない。リストは、最初の挿入を
行ったときに作成される。先頭への挿入はlpush()を使う
conn.lpush('zoo, 'bear')
linsert()を使って値の前か後ろに挿入する。
conn.linsert('zoo', 'before', 'bear', 'beaver')
conn.linsert('zoo', 'after', 'bear', 'cassowary')
ハッシュ
RedisハッシュはPythonの辞書とよく似ているば、文字列しか使えない。
また、深さは1レベルだけに限られる。
conn.hmset('song', {'do':'a dear', 're': 'about a dear'})
集合
Pythonの集合とよく似ている
ソート済み集合
ソート集合あるいはzsetと呼ばれる
用途としては
●スコアボード
●副インデックス
●タイムライン