{{title DBI対応プラグイン&移行ツール}}

<<〜βテスト中〜>>

<<当ページで提供しているリソースのライセンスは GPL v2 とさせていただきます。(2016/10/12)>>

!!! 内容

FreeStyleWiki の DefaultStorage をデータベースを利用したものに変更する為のプラグインと、DB作成の為のツールです。

DBを利用することによりページ数の増加に伴うパフォーマンスの低下を最小限に抑えることが出来るかもしれません。

現在のところ、DBD::SQLite - 1.09, 1.11 のバージョンにてテストしています。
{{layout cols,width:47%
:: localhost

* WinXP
* ActivePerl v5.8.4
* DBI v1.50
* DBD::SQLite v1.11+patch, v1.09
}}
{{layout cols,width:47%
:: kgsoft.jf.land.to

* FreeBSD
* Perl v5.8.7
* DBI v1.48
* DBD::SQLite v1.09
}}
{{ilayout clear}}

:: データベース名:wiki.db
:::どこまで出来るかわかりませんが、以下部分を DB 移行対象としていきたいと思います。
* backup/*.wiki
* data/*.wiki
* config/modtime.dat
* config/showlevel.log
* log/freeze.log
* log/access.log
* log/attach.log - 未定

!!! 進捗状況

{{layout roll,title:過去の進捗状況
::2006/04/25
:::StandardDatabaseStorage.pm の作成開始!
::2006/04/28
:::データベース移行ツールがとりあえず動作する状態まで。{{br}}
:::文字コードは EUC のままで良いかどうか(DB内部ではUTF-8という手も・・・)。{{br}}
:::EUCではWindows上のSQLite管理ツール等では文字化けしてしまう・・・。{{br}}
:::(データはEUCで正しく入ってるけどね){{br}}
:::StandardDatabaseStorage では複雑なSQLは使用しない方針!{{br}}
:::(他のドライバとの互換性の為){{br}}
:::パフォーマンス向上の為の仕組みは、各ドライバに依存してしまう為、StandardDatabaseStorage を継承した Storageモジュールを作成して実装する方針。
}}
::2006/05/07
:::StandardDatabaseStorage が後、get_freeze_list, is_freeze を残すのみ。
:::ロック処理は別途考えよう・・・。
:::ローカル環境では apache.exe が1つなのでロック不要で、既に稼働中(未実装部はDefaultStorage の方の機能を使っているので問題ない)。
:::ページ数が100ちょっとだから、体感的には変わりない模様。
::2006/05/07 - 17:00
:::StandardDatabaseStorage α版(VERSION - 0.02) の公開

!!! データベースへの移行ツール

* {{ref wikidb.cgi,,,lastmodified}}

+ wiki.cgi と同じディレクトリに保存し、実行権限を与えてください。
+ ブラウザーより wikidb.cgi のURLへアクセスしてください。
+ ログイン画面が表示されますので、<<導入しているFreeStyleWikiの管理者権限>>でログインしてください。
+ ログイン後、setup.dat の設定情報と、利用されるDBI,DBDのバージョン情報が表示されます。
** このページがエラーとなる場合や、バージョン情報が表示されない場合は、利用できない可能性が高いです。
+ WikiFarm 名を指定して「データベース作成」ボタンをクリックすれば、既存のWikiページ情報を利用して、設定した場所にデータベースファイルが作成されます。

!!! DBI対応データベース・ストレージ

* {{ref StandardDatabaseStorage.pm,,,lastmodified}}

+ 移行ツールを使用し、各DB(Farm含む)を作成する
+ 上記添付ファイルを plugin/dbi に保存する
+ setup.dat の storage を変更する
 storage = plugin::dbi::StandardDatabaseStorage

以上。

<<まだα版です。ロック等の処理も行っていないので、同時アクセスや同時更新などのテストも行っていません。ご利用の際はテスト環境等で行ってください。>>

<<バグ・改善案等ございましたら、コメントください。>>

!! データベース利用時の各種拡張モジュール
ここで公開するモジュールは、データベース・ストレージ利用時の拡張機能です。
既存のプラグイン当のパフォーマンスアップの為にDBへのアクセスを行う為の修正などが含まれています。
<<導入先は plugin/dbi/extension となります。>>

:: 検索機能のパフォーマンス向上 - {{ref SearchHandler.pm,,,lastmodified}}
::: 該当するファイルを「SELECT - LIKE 検索語」等で絞り込む修正を行っています。
::: また、検索結果の並べ替え機能も追加しました。[名前順、更新日順、更新日順(新着順)]

!!! 依存関係

本プラグインでは以下のモジュール内の関数をオーバーライドしています。

* <<プラグイン名::関数名>>

これらの関数を別のパッチ等で変更を加えている方は、本プラグイン導入後に既存の変更箇所が無効になってしまいますので、本プラグインへパッチ等の変更箇所を適用する必要があります。

!!! データベース利用の為の設定

:: setup.dat
__利用するストレージクラスの設定__

既存の設定項目を書き換えるか、コメントアウトして追加します。
==注意点として、<<移行ツール使用時は Wiki::DefaultStorage を有効にして置いてください。>>==
移行ツールでは、Wiki::DefaultStorage が使用されます。

{{code Text,0,0
# ストレージのクラス名
#storage = Wiki::DefaultStorage
storage = plugin::dbi::StandardDatabaseStorage
}}


__データベース接続の為の設定__
{{code Text,0,0
# データベース接続情報
db_driver = SQLite
db_dir  = ./db
db_name = wiki.db
#db_user = 
#db_pass = 
}}

!!! 変更履歴

{{layout roll,title:過去の更新履歴
::2006/04/28
* とりあえず作業報告用にページ作成
}}
::2006/05/07
* wikidb.cgi
** バグ修正
** Wiki::DefaultStorage を必ず使用するように変更
* plugin::dbi::StandardDatabaseStorage
** α版(VERSION - 0.02)公開

{{pcomment ,10,count}}