#author("2023-09-20T14:30:43+02:00","","")
#author("2023-09-20T14:34:10+02:00","","")
* データベース対応 [#c9ace5de]

- ページ: [[BugTrack]]
- 投稿者: [[零鐵]]
- 優先順位: 低
- 状態: 提案
- カテゴリー: 本体新機能
- 投稿日: 2021-12-14 (火) 19:36:07
- バージョン: 1.5.3

** メッセージ [#o7d91918]
SQLを使えるようにすれば処理速度が上がるのではないのかと思ってます^^

** パッチ ([[はいふん]]) [#c066f26c]
- [[github.com:hai-fun/pukiwiki-dev/releases/download/bt2535-r1.1/database_r1.1.patch]]

カウンタは1.5.2から既にDBが利用できるので不要でした。([[BugTrack/2422]])~

*** リポジトリ [#a1ef5fc3]
- [[github.com:hai-fun/pukiwiki-database]]

*** 仕様 [#t5dbb661]
-ページ、履歴、差分をDB化しました。
-MySQLとSQLiteのみ動作確認しており、デフォルトでは手軽に扱えるSQLiteを使用するようになっていますのでDBを有効化するだけで動作します。
-データベースを有効化してもページ等のファイルは自動的に変換されません。
--通常のファイル管理方式のデータとデータベースのデータが重複している場合、データベースのデータを優先します。
-デフォルトでは''wiki/pukiwiki.db'' にDBが生成されます。
-database.php にDBを操作するための関数が入っています。([[関数一覧表>./database.php]])((普段、これらの関数をプラグインで用いることがないと思われます。殆どfile.phpからdatabse.phpの関数を呼び出しています。))
-dumpプラグインでダウンロードした際、データベース方式のままではなく、通常のファイル管理方式へ変換されます。
--アップロード時はデータベースへ保存されます。(DB有効時)
-file.php の関数を用いてファイル操作をするプラグインは動作するが、直接ファイルを操作しているプラグインは動作しなくなる。(wiki/*, diff/*, backup/*)
-- そのため、修正する必要があります。

*** pukiwiki.ini.phpの設定 [#u6c2fc45]
|LEFT:|LEFT:|LEFT:|c
|~変数|~説明|~デフォルト値|h
|~$database|データベースの有効化(1)/無効化(0)|-((データベースはページの多いwiki、もしくはファイル数の上限が小さいサーバーで効果的であり、標準では無効 (0) で良いと考えています。))|
|~$database_dsn|データソース名|'sqlite:' . DATA_DIR . 'pukiwiki.db'|
|~$database_username|DBのユーザー名、認証機能のないDBでは不要|'admin'|
|~$database_password|DBのパスワード、認証機能のないDBでは不要|'pass'|
|~$database_prefix|テーブル名の接頭辞|''|
|~$database_timeout|タイムアウト時間(秒)|30|
|~$database_page_name_max_length|ページ名の最大文字数|190|
|~$database_options|ドライバーオプション|array()|

--------
- データベース対応ですね。出来たらよいですね。以前にもここで議論があったようです。今はPHPにSQLiteがバンドルされているので、手軽さは上がっています。ファイル前提にしている外部プラグインの互換性が難しいところです -- [[umorigu]] &new{2021-12-17 (金) 09:02:53};
- データベース化してみました。%%[[github.com:hai-fun/pukiwiki-patch/releases/download/database/database.patch]]%% -- [[はいふん]] &new{2022-06-12 (日) 17:18:40};
-- おそらく、データベース化によって利用できなくなるプラグインも出てきそうなのでpukiwiki.ini.phpで切り替えられるようにはしています。 -- [[はいふん]] &new{2022-06-12 (日) 17:22:56};
-- これはすごい。ファイル入出力をDB化したということですか? GitHub か OSDN Personal Forge でGit管理して差分が見えるようになっていると助かります -- [[umorigu]] &new{2022-06-15 (水) 02:16:16};
-- ありがとうございます。そうですね、ページ、バックアップ、差分類のファイル入出力をデータベース化しました。GitHubにプッシュしておきました。[[github.com:hai-fun/pukiwiki-dev/compare/BugTrack-2535-database]] -- [[はいふん]] &new{2022-06-15 (水) 21:24:21};
-- いいですね。ありがとうございます。これこのはいふんさんのリポジトリの中でPull Requestにして、レビューできる形になりませんか? GitHub の公式PukiWikiリポジトリはミラーなのでここに直接PullRequestやマージはしないので。レビューした上で本体に取り込みたいですね。あと、仕様をこのページにまとめてほしいです。何をDB化して何をしていないとか、制約とか、考え方とか、その他の情報を書いてください。あと、ベースは「コピー」したものではなくて git clone で生成したものが良いです。そうすると、変更前が現状のソースコードと寸分の違いもないことを確認できます。 -- [[umorigu]] &new{2022-06-20 (月) 09:15:33};
-- PukiWikiミラーリポジトリをForkし、DB化パッチを適用したリポジトリを載せ、仕様等書いてみました。 -- [[はいふん]] &new{2022-08-07 (日) 09:49:04};
- これ、既存のpukiwikiをデータベース方式に移行したり、データベース方式のものを従来のファイル管理型に移行したりする方法はあるのでしょうか? -- [[m0370]] &new{2022-06-16 (木) 07:16:01};
-- 今のところdumpプラグインを利用すると可能ではあります。 -- [[はいふん]] &new{2022-06-16 (木) 07:44:33};
- RecentChanges辺りを修正しました。 [[github.com:hai-fun/pukiwiki-dev/releases/download/bt2535-r1.1/database_r1.1.patch]] -- [[はいふん]] &new{2022-06-19 (日) 14:31:33};
- タイトル変更しました。 「SQLを使えるようにする」→「データベース対応」 -- [[umorigu]] &new{2022-08-19 (金) 21:27:00};
- はいふんさん、こちら規模が大きいのと、コードレベルでコメントをしたいので [[github.com:umorigu/hai-fun_pukiwiki-database/pull/1]] のような形で Pull Request を作ってもらえないでしょうか? Forkしたリポジトリ「内」でPull Requestを作ります。 -- [[umorigu]] &new{2022-08-19 (金) 21:21:28};
-- ご丁寧にありがとうございます。[[github.com:hai-fun/pukiwiki-database/pull/1]] で Pull Request を作ってみました。 -- [[はいふん]] &new{2022-08-21 (日) 17:20:47};

|回数|ファイル管理|データベース管理(MySQL)|データベース管理(SQLite)|導入なし |h
|1   |0.017 sec   |0.626 sec              |0.045 sec               |0.013 sec|
|2   |0.030 sec   |0.502 sec              |0.115 sec               |0.017 sec|
|3   |0.018 sec   |0.619 sec              |0.052 sec               |0.032 sec|
|4   |0.011 sec   |0.615 sec              |0.047 sec               |0.014 sec|
|5   |0.016 sec   |0.585 sec              |0.048 sec               |0.018 sec|
|平均|0.018 sec   |0.589 sec              |0.061 sec               |0.019 sec|
- ファイル管理方式とデータベース方式で速度を測定してみました。 -- [[はいふん]] &new{2023-09-20 (水) 21:06:46};
|回数|ファイルシステム|データベース(MySQL)|データベース(SQLite)|導入なし |h
|1   |0.017 sec       |0.626 sec          |0.045 sec           |0.013 sec|
|2   |0.030 sec       |0.502 sec          |0.115 sec           |0.017 sec|
|3   |0.018 sec       |0.619 sec          |0.052 sec           |0.032 sec|
|4   |0.011 sec       |0.615 sec          |0.047 sec           |0.014 sec|
|5   |0.016 sec       |0.585 sec          |0.048 sec           |0.018 sec|
|平均|0.018 sec       |0.589 sec          |0.061 sec           |0.019 sec|
- ファイルシステム方式とデータベース方式でHTML変換速度を測定してみました。 -- [[はいふん]] &new{2023-09-20 (水) 21:06:46};

#comment

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Site admin: PukiWiki Development Team

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 8.2.12. HTML convert time: 0.079 sec.

SourceForge