Apache Derby

20.02.2009
Иванов Аркадий

 

   

     Частая задача в программировании приложений - это использование встроенной в приложение SQL базы данных. Тяжеловесные мощные PostgreSQL, MySQL требуют некоторых знаний и усилий для настройки. И эти SQL-сервера приходится настраивать отдельно от самого приложения, что не всегда комфортно при развёртывании на дополнительных компьютерах. Вот тут на помощь приходит проект Apache Derby. Проект великолепно документирован, как и все проекты Apache. Я сделал заметки для того, чтобы в будущем разворачивать эту базу за пару минут усилий, поскольку документацию уже прочитал.Производительность, конечно, оставляет желать лучшего, но зато это настоящий SQL. :)

 

  1. Исходники следует брать на официальном сайте: http://db.apache.org/derby
  2. Раскрываем архив в каталог /usr/local/db-derby-10.4.2.0-bin.
  3. Чтобы не мучаться со сложным названием делаю симлинк:
    ln -s /usr/local/db-derby-10.4.2.0-bin /usr/local/derby
  4. Устанавливаю переменные среды:
    export DERBY_HOME=/usr/local/derby
    export PATH=$PATH:$DERBY_HOME/bin
     
  5.  В каталоге $DERBY_HOME/bin запускаем скрипт старта сервера:
    ./startNetworkServer &

    Сетевой сервер использует порт 1527.
     
  6.  Запускаем интерактивную утилиту работы с базой ij:
    ij
     
  7. Cетевое подсоединение к базе (можно и создать её одновременно):
    ij> CONNECT 'jdbc:derby://localhost:1527/firstdb;create=true';

    Дальше можно использовать традиционный SQL (create table, select, ...);
     
  8. Посмотреть таблицы в базе: 
    ij> show tables in app;
     
  9. Клиентский JDBC-драйвер находится в /usr/local/derby/lib/derbyclient.jar.
    В Java-программе класс драйвера называется:
    String driver = "org.apache.derby.jdbc.ClientDriver";
    URL в Java-программе выглядит так:
    String connectionURL = "jdbc:derby://localhost:1527/" + dbName + ";create=true";
    
    

 

Derby предлагает вариант и встраиваемой(embegged) базы. Это режим, когда управление самой базой делается прямо из задачи.

В этом случае строка драйвера и URL выглядят так:

String driver = "org.apache.derby.jdbc.EmbeddedDriver";

String driver = "jdbc:derby:"+dbName+";create=true";

Для режима  embedded Java надо указать использование следующих JAR-файлов: derbyclient.jar и derby.jar