Tech

apache derby

glqdlt 2017. 8. 16. 16:42

(Reference: https://www.youtube.com/watch?v=aOHTTfQ_5V0&list=PLvudjKUrAA6YNHxI1xiLcGtBhuXPwNAxk)


JPA 를 공부하다가 알게 된 재미난 녀석이 있어서 소개를 해본다.

apache derby 라는 db 인데,  이 놈은 JDK6 부터 포함되어 있는 순수 자바 db이다, 

형태는 memory Database 이다. IBM,SUN와 연관되어 있다고 하고, SQL, JDBC를 지원한다. (호환성)

이것저것 찾아 보니 매우 안정적이라고 하는 데, 문제는 퍼포먼스가 엄청 떨어진다. 

이렇게 보니 재밌는 게 DB 성능 비교에서는 항상 샌드백 신세이다.  흠좀무 -_-;

아래는 derby db 의 샌드백 내역, 지못미.


Oracle Berkeley  DB

http://www.oracle.com/technology/products/berkeley-db/pdf/je-derby-performance.pdf

 

MySQL, PostgreSQL

http://wiki.apache.org/apachecon-data/attachments/Us2005OnlineSessionSlides/attachments/ApacheCon05usDerbyPerformance.pdf

 

H2, HSQLDB, MySQL,PostgreSQL

http://www.h2database.com/html/frame.html



JavaDB는 1996년 Cloudscape를 시작으로, 1999년에 Informix,  2001년에 IBM의 관리하에

있었고 2004년에 IBM이 Open Source로 Apache Founcdation에 기부하였다.

현재는 Apache Derby Project로 개발되고 IBM과 SUN에서 사용하고 있다.

JavaDB의 IBM 버전인 Cloudscape는 Web Sphere같은 IBM 제품에 사용되어 안정성을

인정받았다 카더라.

 

이 얘기에서의 요점은 안정적이지만 성능이 다른 제품에 비해 2배는 떨어진다는 것이다. 

이것은 정책에 의한 구조적인 문제로, derby는 모든 operation을 disk에 log로 저장을 한다. 따라서

성공적인 operation에 대해서는 쓸대없이 Disk IO를 두배 사용하여 낭비해서 떨어지는 셈.

(성능 하락의 주된 원인이 바로 Disk IO locking이다..)

 

하지만 이 놈을 성능을 올리는 방법도 있다. 

autoCommit()은 사용하지 않으면 , 성능이 비약적으로 향상 된다.

이는 index를 가장 나중에 만들게 되어서 그런데, JavaDB의 가장 성능의 문제가 되는 부분이 바로 index를 만들때 io locking이 심하다는 것이다. 

실재 운영해보면 CPU는 별로 사용하지 않는데 disck IO때문에 성능이 많이 떨어진다. 

안정성을 위한 구조적인 문제인것 같고, 현재로써는 성능향상을 위해서는 피해갈수 밖에 없다. 

이 외에도  최후의 보루로 derby.system.durability=test로 설정을 하면, 안정성을 포기하고 퍼포먼스 위주의 셋팅이 된다. (에반게리온이 떠오르는 건 기분탓인가 -_-;)


'Tech' 카테고리의 다른 글

Notepad++ dark skin apply  (0) 2017.09.11
PAAS SAAS IAAS  (0) 2017.08.22
docker auto boot  (0) 2017.05.30
Redis 설치  (0) 2017.05.26
FlashBuilder 에 SVN 플러그인 설치하기  (0) 2017.04.21