얼마전에 우연히 듣게 된
Derby 라는 Apache 진영의 Database 시스템을 사이트에 가서 살펴봤을 때 놀라웠다. 버전이 벌써 10.2.2.0 이었다. IBM이 Apache에 기증하기전 Cloudscape 데이터베이스 소프트웨어의 역사로 하면 벌써 10년 정도 되었다고 한다. 특이한 점은 베디드 데이터베이스(embedded database)와 클라이언트-서버 연결(client-server connection) 두가지로 설정할 수 있다는 것이다. 이 점이 매우 매력적으로 느껴졌다. 그래서 한번 공부해 보기로 했다.
다음은
퍼온 글 일부이다. (역시 한글^^)
-
임베디드 데이터베이스(embedded database): 사용자는 데이터베이스의 존재를 인식하지 못한다.
애플리케이션은 데이터베이스를 사용한다. 같은 JVM에서 실행되고 데이터베이스는 로컬 파일 시스템상에 데이터를 저장한다.
임베디드 모델에서 데이터베이스는 같은 JVM에서 실행되는 애플리케이션만 통신한다.
-
클라이언트-서버 연결(client-server connection): 많은 상용 벤더들이 사용하는 전통적인
모델이다. 이 모델에서, 애플리케이션은 네트워크 연결을 통해 데이터베이스와 통신하고, 애플리케이션과 데이터베이스는 개별
JVM에서 작동한다. 데이터베이스 서버는 다중 클라이언트 애플리케이션들과 통신할 수 있다.
그런데 문제는 처음에 말 했듯이 처음 듯는 것이고 보니 그리 많이 활용된 것 같지는 않다. 검색 했을 때 자료가 그리 많이 찾아지지 않는 다는 것이 문제인 것이다. 영문 reference에 약한 나한테는 새로운 개념을 공부하는 것은 한글로 된 reference가 매우 절실한데 ^^;(부끄럽다! 아마도 이런 이유로 항상 다른 분들보다 습득이 늦는 것일 것이다. 노력해야지^^).
Download해서 대강 살펴봤을 때 표준을 충실히 따른 것 같다. 당사자들은 Derby 를 사용했을 때 다른 DBMS로의 이행이 수월할 것이라고 한다. 하지만 내가 보기에는 부분적인 DBMS의 특성이 있기 때문에 완전히 수월하지는 않을 듯.
INDEX, VIEW 등의 MySQL에 구 버전에는 없는 것들을 지원하고 Trigger등동 존재하는 것 같다. 이렇게 된다면 MySQL로 작성한 간단한 application을 Derby로 이전한다는 것은 변경 작업이 꽤 있어야 할 것이라는 예상이 있다.
하지만 공부차눤에서는 무겁고 비싼 상용 DBMS보다 Derby로 해도 무방할 것이라는 생각이 들 정도다
Sun Microsystems는 Apache Derby의 패치 버전을 Java DB 제품으로서 포함시킬 것이라고 발표했다. IBM과 Sun의 강력한 지원으로 Apache Derby 데이터베이스의 미래는 밝다고 하니 한번 살펴볼 만 하다.
참고로 jdbc도 지원되고 eclipse plugin도 지원하고 있어 사용하는데 조금이라도 편리하게 하려고 노력하는 모습이 보인다.