データを保持したままテーブル構造を変更する(NicoBrowser ver.0.1)
NicoBrowser Ver.0.1を作成した。ダウンロードはこちらから。
なお、以前のバージョンから更新する際には、初回起動前に以下のコマンドを実行する必要がある(通常の起動コマンドにsyncオプションをつける)。
java –jar NicoBrowser sync
変更内容は以下の通り。
- 永続化情報に「投稿者」を追加した。
- 追加機能は特に無い。
NicoBrowserでは、コンテンツ情報をインプロセスDBで管理している。今回、投稿者情報という新しい項目を永続化するに当たって、テーブルにカラムを追加する必要が生じた。
従来のバージョンでは、JPAの機能を利用して、DBやテーブルが無ければ作成する(あれば何もしない)という動作にしていた。しかし、今回のように現在テーブルが既に存在する場合にプロパティ(永続化するBeanのフィールド)を追加しようとした場合は、この機能では対応できない。
そこで、今回のバージョンからは、DB/テーブルの作成はLiquiBaseで行うことにした。
LiquiBaseはDBリファクタリングツールという位置付けで、書籍「データベース・リファクタリング」で説明されている手法をツール化したもの、らしい。
ともかく、このツールを使うことで、テーブルの内容を保持したままテーブル構造を変更することができるようになった。
ただ、このツールは、DBの変更(リファクタリング)内容を、専用のテーブルで管理しており、NicoBrowserを従来のバージョンから今回の方式にあわせるためには、一旦現在の内容をその管理テーブルに書き込む必要がある。これを、冒頭に記載したsyncオプションで行うことにしている。
このsyncオプションによる管理テーブルの同期は1回のみ行えばよく、今後はテーブル構造に変更があった場合でもLiquiBaseが自動で追従してくれるはずである。
« NicoBrowser - ランキング、公開マイリストからのニコニコ動画自動ダウンロード | トップページ | ipum - 動画ファイルから無劣化音楽抽出 »
この記事へのコメントは終了しました。
« NicoBrowser - ランキング、公開マイリストからのニコニコ動画自動ダウンロード | トップページ | ipum - 動画ファイルから無劣化音楽抽出 »
コメント