Skip to content

[python] LevelDB

dsindex edited this page Nov 18, 2014 · 4 revisions

Berkeley DB에 이어서 LevelDB 테스트

references

test

  • 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를 주면 될듯.
Clone this wiki locally