Jiemamy作者が考える
“データベースの進化的設計”
データベースもアジャイル開発に対応したい!
(2)コードの修正
テーブル名などが変更されたので、ソースコード(JiemamyServlet.java)も修正しておきます(図8)。
今回の変更個所は図9のとおりです。
変更したら保存しておきます。ここまでの作業が完了したら、Jiemamy側で確認してみます。
(3)再起動と確認
再びプロジェクトルートのコマンドラインから
と入力し、先と同様の手順でアプリケーションの動作を確認します。
たったこれだけの手順でデータベースのリファクタリングができました。
初期データ用のINSERT文を含めても、ここまでの作業でSQL文には一度も触れていません。
Jiemamyを使用しない状況で、これらの変更によるコストを考えてみてください。どのくらいの時間がかかるでしょうか?
コマンド操作時の出力結果について、いくつか注意事項があります。以下にまとめましたので、実際に触れてみる際に参考にしてください。
(1)Jiemamy実行時に、ダウンロード処理が入る場合があるため、いままでのmaven2使用状況によって出力内容が異なります。
[INFO] Scanning for projects...
[INFO] Searching repository for plugin with prefix: 'jetty'.
[INFO] org.apache.maven.plugins: checking for updates from jiemamy.sourceforge.jp
[INFO] org.codehaus.mojo: checking for updates from jiemamy.sourceforge.jp
[INFO] artifact jp.xet.jiemamy:maven-jiemamy-plugin: checking for updates from jiemamy.sourceforge.jp
[INFO] artifact org.codehaus.mojo:sql-maven-plugin: checking for updates from jiemamy.sourceforge.jp
[INFO] artifact org.mortbay.jetty:maven-jetty-plugin: checking for updates from jiemamy.sourceforge.jp
[INFO] ------------------------------------------------------------------------
[INFO] Building jiemamy-tutorial
[INFO] task-segment: [jetty:run]
[INFO] ------------------------------------------------------------------------
[INFO] Preparing jetty:run
[INFO] [resources:resources]
[INFO] Using default encoding to copy filtered resources.
[INFO] [jiemamy:execute {execution: execute-porter}]
[INFO] >>>>>>>> Starting maven-jiemamy-plugin...
[INFO] Open Jiemamy model file jiemamy.jer
[INFO] Serializing stream to model.
[INFO] Executing Porter...
[INFO] <<<<<<<< Exit maven-jiemamy-plugin successfully.
[INFO] [sql:execute {execution: drop-db}]
[INFO] Executing commands
[INFO] 1 of 1 SQL statements executed successfully
[INFO] [sql:execute {execution: create-db}]
[INFO] Executing commands [INFO] 1 of 1 SQL statements executed successfully
[INFO] [sql:execute {execution: create-schema}]
[INFO] Executing file: D:\develop\eclipse\workspaces\main\jiemamy-tutorial\database\jiemamy.sql
[INFO] 594 of 594 SQL statements executed successfully
[INFO] [compiler:compile]
[INFO] Nothing to compile - all classes are up to date
[INFO] [resources:testResources]
[INFO] Using default encoding to copy filtered resources.
[INFO] [compiler:testCompile]
[INFO] Nothing to compile - all classes are up to date
[INFO] [jetty:run]
[INFO] Configuring Jetty for project: jiemamy-tutorial
[INFO] Webapp source directory = D:\develop\eclipse\workspaces\main\jiemamy-tutorial\src\main\webapp
[INFO] web.xml file = D:\develop\eclipse\workspaces\main\jiemamy-tutorial\src\main\webapp\WEB-INF\web.xml
[INFO] Classes = D:\develop\eclipse\workspaces\main\jiemamy-tutorial\src\main\webapp\WEB-INF\classes
2008-08-02 22:04:26.390::INFO: Logging to STDERR via org.mortbay.log.StdErrLog
[INFO] Context path = /jiemamy-tutorial
[INFO] Tmp directory = determined at runtime
[INFO] Web defaults = org/mortbay/jetty/webapp/webdefault.xml
[INFO] Web overrides = none
[INFO] Webapp directory = D:\develop\eclipse\workspaces\main\jiemamy-tutorial\src\main\webapp
[INFO] Starting jetty 6.1.9 ...
2008-08-02 22:04:26.593::INFO: jetty-6.1.9
2008-08-02 22:04:26.812::INFO: No Transaction manager found - if your webapp requires one, please configure one.
2008-08-02 22:04:27.390::INFO: Started SelectChannelConnector@0.0.0.0:8080
[INFO] Started Jetty Server
2008-08-02 22:04:35.557::INFO: Shutdown hook executing
[INFO] 2008-08-02 22:04:36.070::INFO: Shutdown hook completeJetty server exiting.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 24 seconds
[INFO] Finished at: Sat Aug 02 22:04:36 JST 2008
[INFO] Final Memory: 9M/29M
[INFO] ------------------------------------------------------------------------
D:\develop\eclipse\workspaces\main\jiemamy-tutorial>
(2)以下のようなログが表示された場合は、PostgreSQLが起動していることを確認してください。
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Connection refused. Check that the hostname and port are correct and that
the postmaster is accepting TCP/IP connections.
Connection refused: connect
(3)次のログが表示された場合は、postgresユーザーのパスワードがpostgresであることを確認してください。
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] FATAL: password authentication failed for user "postgres"
まとめと今後の展望
以上のとおり、データベースに依存したシステムの開発・運用に関連したリファクタリングやマイグレーションなどの作業を容易にしていくこと、これがJiemamy Projectのミッションです。ここでご紹介した機能以外にも、以下のとおり一般的に必要だと考えられる機能も実装しています。
- データベースのリバースによるスキーマの読み込み
- 論理名・物理名表示の切り替え
- JavaによるEntityクラス(JPA)の自動生成
- VIEWの定義ER図を画像として保存
- データベース設計仕様書(HTML)の自動生成
そのほかに、今後の展望として、以下の機能などを考えていますが、まだまだイメージには限りがありません。1つずつ実現していくつもりです。
- ER図(ダイアグラム)とEntityクラスのリファクタリングをお互いに追従させる
- エンティティクラスからERダイアグラムを生成する
- JiemamyのデータファイルをWebアプリケーション内に持つことにより、ビルド時ではなくインストール時にデータベースを初期化する(スマートインストール)
- 初期化だけではなくバージョンアップ時のマイグレーションに対応する
- JavaとEclipseのほかにニーズがあれば、そこに向けて展開していく
最後に
現在公開されているJiemamyの最新版(Version 0.1.x系)は、プロトタイプの扱いです。前述のとおり、ある程度の動作はできていますが、まださまざまな問題点を抱えており、実際の業務へ適用していただくには時期尚早だと考えています。現在、1からコードを書き直しつつ、新バージョン(0.2.x系)を鋭意開発中です。今後の発展にご期待ください。
3/3 |
Index | |
Jiemamy作者が考える “データベースの進化的設計” データベースもアジャイル開発に対応したい! |
|
Page 1 ・データベースもアジャイルで構築したい! ・DB設計・リファクタリングサポートツール「Jiemamy」 ・Jiemamyのインストール |
|
Page 2 ・デモ1:チェックアウトから起動まで ・デモ2:リファクタリング |
|
Page 3 ・まとめと今後の展望 ・最後に |
- Oracleライセンス「SE2」検証 CPUスレッド数制限はどんな仕組みで制御されるのか (2017/7/26)
データベース管理システムの運用でトラブルが発生したらどうするか。DBサポートスペシャリストが現場目線の解決Tipsをお届けします。今回は、Oracle SE2の「CPUスレッド数制限」がどんな仕組みで行われるのかを検証します - ドメイン参加後、SQL Serverが起動しなくなった (2017/7/24)
本連載では、「SQL Server」で発生するトラブルを「どんな方法で」「どのように」解決していくか、正しい対処のためのノウハウを紹介します。今回は、「ドメイン参加後にSQL Serverが起動しなくなった場合の対処方法」を解説します - さらに高度なSQL実行計画の取得」のために理解しておくべきこと (2017/7/21)
日本オラクルのデータベーススペシャリストが「DBAがすぐ実践できる即効テクニック」を紹介する本連載。今回は「より高度なSQL実行計画を取得するために、理解しておいてほしいこと」を解説します - データベースセキュリティが「各種ガイドライン」に記載され始めている事実 (2017/7/20)
本連載では、「データベースセキュリティに必要な対策」を学び、DBMSでの「具体的な実装方法」や「Tips」などを紹介していきます。今回は、「各種ガイドラインが示すコンプライアンス要件に、データベースのセキュリティはどのように記載されているのか」を解説します
|
|