Movable Code

Trade, Robot, Policy

Archive for the ‘Parms’ Category

BerkeleyDB…

leave a comment »

Parms 라이브러리의 Persistence Store 로 BerkeleyDB 는 합격점이다. 그러나 사용하면서 기존의 RDB 만큼의 사용상 편의성은 기대하기 힘들다고 생각된다. 로컬DB로써의 견고함과 속도, 확실한 레퍼런스로 인한 신뢰는 믿을만하나 너무 delicate 하다. 익숙한 플레이어에게는 문제가 아닐지도 모르나, 필자나 다른 아마추어들에게 동질의 안정적인 코딩과 운용을 기대하기에는 확실히 불안한 구석이 있다. 또 원격에서 접속이 불가하다는 점은 범용적으로 쓰일수 없는 한계이다.

문제가 생겼던 메모리 부족에러는  대부분 트랜잭션을 관리하는 내부 컨트롤러의 메모리부족으로, 일정수 이상의 트랜잭션을 Commit 없이 진행할려면 많은 노하우가 필요하다. 가장 안정적인 운용은 매건별로 트랜잭션을 할당하고 해제하는 방법이다. 단순하고 안정적이지만 대량의 throughput이 한꺼번에 발생되면 병목이 생길것이다.

현재 BDB Tuple 상에서 관리하는 트랜잭션은 아래와 같은 구조를 가진다.

  • Read 는 Transaction 대상이 아니다. (반드시 Transaction 해제)
  • 하나의 Transaction 에서 Insert/Delete/Read 를 같이 구현하지 않는다.
  • 동일한 IO 작업이라면 임계치를 두어 주기적으로 강제 Commit 한다.

앞으로 개선해야할 BDB 보완작업은 아래와 같다.

  • Log 화일들의 자동정리
  • Recovery 의 자동화
  • DB 크기가 임계치이상 커지지 않도록 자동 Shrink

아, 이걸 다 언제하나… 하나씩 틈틈히 해나갈수밖에…..

Advertisements

Written by soyul's papa

10월 29, 2007 at 8:12 오후

Computing, Parms에 게시됨