(View this PageEdit this PageUploads to this PageHistory of this PageHomeRecent ChangesSearch the SwikiHelp Guide)
[blog] [ML] [todo] [CVS] [bug] [apache log] [swiki log] [statistics] [map] [man] [info] [アンテナ]

tDiary:dbi_io

注意

永らく放置しておりましたが、この機会に出直し(修正)したいと思います。

-----------

始めに

DbiIOとは、tDiaryのバックエンドとしてPostgreSQL等のDBを使用す
tDiaryIOクラスの一つになります。
なぜこのようなものを作成したかという詳細な経緯は
hnsからtDiaryの移行に関して(格闘編)」を参照して下さい。
まだまだ、バグやら、速度向上やら改善点はあるかと思いますがとりあえず動きます。

DbiIOは、内部では、DBI/DBDを使用していますので、DBI/DBDがサポートしているDBであれば、なんでも使えるはずです。
また、幸運にも私自身が標準的なSQLしか知らないので(笑)、DB依存性の
強いSQLもありません。
これらは何を言わんとしているのかと言いますと、ぶっちゃけDBがどこにあっても
, MySQLやOracleであっても、OKだということを言っています。なので、DBだけ別サーバーにしたり、
レプリケーション張って障害に強くしたり、DBを複数用意して、高負荷にも
絶え得るものを作ることも(ある意味)可能であるということを言っています。
(まあ個人の日記サイトに求めるべき内容のものでもないですけど。
私自身は、tDiaryの潜在は結構あると考えています。
ちょっと手を入れれば、バグトラッキングシステムになりそうですし、
「突っ込み」に手を入れれば、コメント付き投票CGIみたいなものにもたやすく
改造できるはずです。そういったときに、上記のような応用例も出てきてもいいかと
思っています)

(なお、私がこれを実装した本来の目的は、単に「hnsからの移行をしやすくする
ため」だったりするという後ろ向きな動機に関しては、そっとしておいてあげて下さい。)

-----------

必要なもの

下記は、必須になります。

-----------

DB仕様

-----------

テーブル仕様

          CREATE TABLE "DiaryData" (
             "diary_id" varchar(8) NOT NULL,
             "year" varchar(4) NOT NULL,
             "month" varchar(2) NOT NULL,
             "day" varchar(2) NOT NULL,
             "title" varchar,
             "last_modified" int8 NOT NULL,
             "visible" bool NOT NULL,
             "body" varchar NOT NULL,
             "author" varchar,
             "style" varchar,
             CONSTRAINT "DiaryData_pkey" PRIMARY KEY ("diary_id")
          );
          CREATE  INDEX "diary_id_DiaryData_key" ON "DiaryData" ("diary_id");

          CREATE TABLE "CommentData" (
             "diary_id" varchar(8) NOT NULL,
             "name" varchar,
             "mail" varchar,
             "last_modified" int8 NOT NULL,
             "visible" bool NOT NULL,
             "no" int8 NOT NULL,
             "author" varchar,
             "comment" varchar
          );
          CREATE  INDEX "diary_id_CommentData_key" ON "CommentData" ("diary_id");
          
          CREATE TABLE "RefererData" (
             "diary_id" varchar(8) NOT NULL,
             "count" int8 NOT NULL,
             "ref" varchar NOT NULL,
             "no" int8 NOT NULL,
             "author" varchar
          );
          CREATE  INDEX "diary_id_RefererData_key" ON "RefererData" ("diary_id");

-----------

インストール方法

(1) 上記の設定で、DB, Tableを作成します。
(2) dbi_io.rbをtdiary/tdiaryの下に適切なパーミションをつけて配置します。
(3) tdiary/tdiary.confの設定を変更します。(以下を参照)
               (tdiary.confの抜粋です)

               # 
               # 
               # 日記保存形式の指定【オプション】
               #   日記の保存形式を標準から変更する場合には、必要な設定をしなければなり
               #   ません。何も指定しない場合にはtDiary2形式(テキスト)になります。
               #   何を指定するかは、その保存形式用プログラムの説明に従ってください。
               #   以下の2行のコメント(#)をはずすと、tDiary1形式(バイナリ)になります。
               #require 'tdiary/pstoreio'
               #@io_class = TDiary::PStoreIO
               require 'tdiary/dbi_io'
               @io_class = TDiary::DbiIO
               #– PgsqlIOの場合の設定 –
               @pgsql_driver_url = 'dbi:Pg:tDiaryDB' 			# URLを設定します。
               @pgsql_user       = 'xxxxxxxxxxxx'				# DBのアカウント
               @pgsql_passwd     = 'xxxxxxxxxxxx'				# DBのパスワード

(4) cacheは削除して下さい。
以上です。

-----------

ダウンロード先



-----------

今後のTodo



-----------

バグ報告&連絡先






-----------

最新のコード

dbi io.rb

-----------

Links to this Page