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

tDiary:PgsqlIO

tDiary:PgsqlIOは、1.5.2向けのテスト版になります。今は、tDiary:dbi_ioが熱い(使える方)です。

-----------

始めに

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

PgsqlIOは、PgsqlIOという名称からして、PostgreSQL専用のように思われますが、
実際には、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" varchar NOT NULL,
                   "visible" bool NOT NULL,
                   "body" varchar NOT NULL,
                   CONSTRAINT "DiaryData_pkey" PRIMARY KEY ("diary_id")
                );

                CREATE TABLE "CommentData" (
                   "diary_id" varchar(8) NOT NULL,
                   "name" varchar,
                   "mail" varchar,
                   "last_modified" varchar NOT NULL,
                   "visible" bool NOT NULL,
                   "no" varchar NOT NULL,
                   "comment" varchar
                );

                CREATE TABLE "RefererData" (
                   "diary_id" varchar(8) NOT NULL,
                   "count" int8 NOT NULL,
                   "ref" varchar NOT NULL,
                   "no" varchar
                );

-----------

インストール方法

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

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

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

-----------

ダウンロード先

-----------

今後のTodo



-----------

バグ報告&連絡先

-----------


CSV用DBIはありませんが、SQLiteに対応しています。
サーバ不要なのでCSV並の気軽さで使えます。

CommentData,RefererDataのdiary_idにインデクス作ったほうが良くないですか。
あとno,last_modifiedもvarcharじゃなくてintがいいでしょう。

MoonWolf: noがvarcharだと'10''2'になります。10個以上コメントがあるとおかしくなりますね。





-----------

Links to this Page