-
Notifications
You must be signed in to change notification settings - Fork 19
[python] LevelDB
dsindex edited this page Nov 18, 2014
·
4 revisions
Berkeley DB에 이어서 LevelDB 테스트
- https://github.com/dsindex/leveldb
- http://htmlpreview.github.io/?https://github.com/google/leveldb/blob/master/doc/index.html
- https://www.igvita.com/2012/02/06/sstable-and-log-structured-storage-leveldb/
- https://code.google.com/p/py-leveldb/
- make db
- 시간 : 12412s, write speed = 47831 line / sec
- db files
8.2G 8093개의 파일, 최대 2M를 넘지 않는다.
- batch write를 사용하면 더 빠르게 만들 수 있음.
- search db(random)
- 시간 : 110s, 909 line / sec
- 생성된 db를 read only, multi process로 사용하는 방법
db = leveldb.LevelDB(db_dir) lock_file = db_dir + '/LOCK' if os.path.exists(lock_file) : try : os.remove(lock_file except OSError : sys.stderr.write("remove lock file(%s) fail\n" % (lock_file)) sys.exit(1) .... multi process가 동일한 db를 참조하는 경우, LOCK파일만 없으면 read-only로 접근하는데 문제없음. 단, db를 열고 LOCK 파일을 삭제하기전에 다른 process가 접근하는 경우만 제어하면된다.
- tornado server에서 multi process를 실행시키는 경우는 Application의
init(self)
에서 해당 코드를 추가하면 된다. 약간의 sleep(1) 명령으로 delay를 주면 될듯.
- 시간 : 110s, 909 line / sec