Slideのコンテンツ保存媒体にデータベースを使う

 Slideのデフォルト設定では、WebDAVでアップロードされたファイルなどのコンテンツは、 全てSlideのメモリ上に保存されます。 そのため、WebアプリケーションとしてのSlideプロセスが終了すると消えてしまいます。 永続的なコンテンツ保存の方法の1つとして面白いものに、 外部のデータベース管理システム(RDBMS)とSlideがJDBCを使って通信し、 コンテンツを外部のデータベースに格納する方法があります。 ここではRDBMSとしてMySQL 3.23.47を使ってこれを試したので設定手順を紹介します。

  1. Slide Webアプリケーションの Domain.xmlをテキストエディタで開き、 <store name="memory"> を含むdefinitionブロックをコメントにし、 代わりにその下の、 <store name="jdbc"> を含むdefinitionブロックのコメントを外します。
  2. さらに、以下のように、データベースに接続するためのJDBCドライバのクラス名、 URL、ユーザ、パスワードを設定します。

        <definition>
          <store name="jdbc">
            <nodestore classname="slidestore.reference.JDBCDescriptorsStore">
             <parameter name="driver">org.gjt.mm.mysql.Driver</parameter>
             <parameter name="url">
               jdbc:mysql://localhost:3306/slidemdb?useUnicode=true&characterEncoding=SJIS
             </parameter>
             <parameter name="user">urano</parameter>
             <parameter name="password">urano593</parameter>
            </nodestore>
            <securitystore>
              <reference store="nodestore" />
            </securitystore>
            <lockstore>
              <reference store="nodestore" />
            </lockstore>
            <revisiondescriptorsstore>
              <reference store="nodestore" />
            </revisiondescriptorsstore>
            <revisiondescriptorstore>
              <reference store="nodestore" />
            </revisiondescriptorstore>
            <contentstore classname="slidestore.reference.JDBCContentStore">
             <parameter name="driver">org.gjt.mm.mysql.Driver</parameter>
             <parameter name="url">
               jdbc:mysql://localhost:3306/slidemdb?useUnicode=true&characterEncoding=SJIS
             </parameter>
             <parameter name="user">urano</parameter>
             <parameter name="password">urano593</parameter>
            </contentstore>
          </store>
          <scope match="/" store="jdbc" />
        </definition>
    

  3. 次に、そのデータベースに、コンテンツ格納用の各種テーブルを作成しないといけません。 これは、主要なRDBMSに対するCREATE TABLE文の例が Slideのドキュメント「JDBC Howto」に載っていますから、 それらをそのまま使えばよいと思います。 例えばこの例ではMySQLなので、次のようなSQL文をmysqlクライアントなどを使って発行します。

    create database slidemdb;
    use slidemdb;
    
    create table objects(
      uri blob not null, classname blob,
      constraint uriIndex primary key (uri(255)) );
    
    create table children(uri blob, childuri blob);
    
    create table links(link blob, linkto blob);
    
    create table permissions(object blob, revisionnumber varchar(20),
      subject blob, action blob, inheritable int, negative int);
    
    create table locks(id blob, object blob, subject blob, type blob,
      expirationdate varchar(15), inheritable int, xexclusive int);
    
    create table revisions(uri blob not null, primary key uriIndex
      (uri(255)), isversioned int, initialrevision varchar(10) );
    
    create table workingrevision(uri blob, baserevision varchar(20), xnumber
      varchar(20) );
    
    create table latestrevisions(uri blob, branchname blob, xnumber
      varchar(20) );
    
    create table branches(uri blob, xnumber varchar(20), childnumber
      varchar(20) );
    
    create table revision(uri blob, xnumber varchar(20), branchname blob);
    
    create table label(uri blob, xnumber varchar(20), label blob);
    
    create table property(uri blob, xnumber varchar(20), name blob, value
      blob, namespace blob, type varchar(100), protected int);
    
    create table revisioncontent(uri blob, xnumber varchar(20), content blob);
    

    もちろん、既存のデータベースを使うのであれば、 冒頭部のCREATE DATABASE文は不要です。
  4. これで、以前と同様WebDAVクライアントを使って接続してみます。 インターフェースはメモリの場合と全く変わりませんが、 今度はSlide Webアプリケーションを停止して再起動しても、 以前のコンテンツが残っていると思います。 また、mysqlでデータベース・テーブルOBJECTSなどを検索しても、 中にデータが入っていることが確認できます。

Open Source Web Architecture Top

(first uploaded 2003/07/10 last updated 2003/07/10, URANO398 - KQ TAURA)

Gポイントポイ活 Amazon Yahoo 楽天

無料ホームページ 楽天モバイル[UNLIMITが今なら1円] 海外格安航空券 海外旅行保険が無料!