LoginSignup
38
34

More than 5 years have passed since last update.

[衝撃] NoSQL KVS お手軽DB mongo redis sqlite ローカルで神速だったのは。。。

Last updated at Posted at 2016-02-05

[衝撃] mongo redis ローカルでさくっとたてるデータベースとして、何千万、億単位、数Gのデータのデータがもっともカンタンで神速だったのは。。。

Redis 最短入門(1)2行でインストール&起動
Redis 最短入門(2)5分でAPI
Redis 最短入門(3)Pythonでも5分でAPI
Mongodb 最短入門(1)EC2にインストール&起動&いきなり数万件入れてみた
Mongodb 最短入門(2)数万件いれて探してみた
Mongodb 最短入門(3)数百万件でも速くしてみた
SQLiteにpythonで数億行いれてみた

改め、もっとカンタンに億単位を秒殺で入れる方法をみつけた。(サーバースペックにもよるけど)

ジャカジャーン!最速なのは

SQLite3 であったあるよ。。

1000万件のCSVを持ってきた~

カンマ区切りで1行目はカラム名あるよ~

解凍する~

gunzip honyarara.csv.gz

1行目を抜く

sed -e '1,1d' honyarara.csv

sqlite3 に CSVをインポートする


sqlite3 /path/to/mydb.db
sqlite> create table hogagaga (id integer,name text);
sqlite> .separator ,
sqlite> .import honyarara.csv hogagaga

ほげっ?
早っ!あまりに速くてselect count(*) したけどほんとうだった。

cgi-bin/sqlite.py

import cgi
import sqlite3

print "Content-type: text/html\n"

conn = sqlite3.connect("/path/to/mydb.db")
csr = conn.cursor()

csr.execute('select * from hogagaga' )

pagesize=100
for x in csr.fetchmany(pagesize):
    items.append(dict(zip(('id','name'), x)))
if len(items):
    print json.dumps({"items":items})

はい、サーバー起動 ッターン!

python -m CGIHTTPServer &

JSON返してもらう ッターン!

curl http://0.0.0.0:8000/cgi-bin/q.py

ほぎゃ!速い
しかもすべて組み込み。ほとんどの環境ではインストールすら不要のこのコンビ(python + sqlite3)。

38
34
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
38
34