Home > MovableType > MovableTypeはなぜDBを利用しているのか?

MovableTypeはなぜDBを利用しているのか?

疑問に思っていたのですが、なぜMovableTypeはCGIでここまでやっているのにデータベースを利用しているのでしょうか。それがずっと気になっていたのですが、先ほど解けました。

実は今さっき、再インストールしたんです。不慮の事故で(笑)。ただデータベース関係で調べようとしていただけなんですけどね…。

ことの発端は前記事です。これ書いていてデータベースが気になったんです。

実は先ほどまで自分のMovableTypeのデータベースはBerkeley DBを利用していると思っていたんですが、確認してみるとどうやらSQLiteを使用していたみたいなんですね。

導入方法がロリポップ式で、てっきりそれはBerkeley DBのデータベースなもんだと思っていたんですよ。でも違ったわけです。

しかもちゃんとくっきりSQLiteって書いてありました。


ロリポップの文章を引用すると、

データベースの設定です。下記のように修正します。 43行目の Database /path/to/sqlite/database/fileを Database sqlitedb とします。


ノォォォ!!!!Database sqlitedb
って書いてあるじゃんか。


って。

でも気づいていない自分はとんでもないことをしでかしました。

「あーBerkeley DB遅いなあ。(ホントはSQLite)もうSQLiteにしてやろ(もうSQLiteだった)」というわけで、

http://30smash.main.jp/mt/33settei/config.html
で書いてある方法にconfig.cgiを書き直すことにしたんです。dbっていうフォルダ作って、それでconfig.cgiを書き直して…と。

さーてどうなったかなあと確認してみると、

MovableTypeへようこそ!


え???????

MovableTypeへようこそ!


って、


うおい!

なんじゃそりゃ。と思いましたよ。だって僕はもうMovableTypeへようこそしちゃってて、記事をたくさん書いてきたんですから。もうMovableTypeの住人だってのに、ようこそってなんだよって。

そう、思いました。


でもここは至って冷静。つまり、データベースの利用法が変わったために起きた現象なんだと理解しました。そしてもしものことがあろうかと、僕はブログをローカルに保存しておいたんですよ。これで何かあってもデータがなくなることはありません^^


そして、またいちいちめんどくさいログインID設定したりパスワード設定して、MobvableTypeがインストールされました。

僕はこのときサーバのフォルダを確認していました。

「おし、dlogのフォルダもデータもあるし、たぶんログインしたら元通りだろうな」と…。

軽い気持ちでログインすると、


「ブログの設定をしてください」って出てたんですね。

僕は「おいおい、僕はdlogってもんを作ってたんだぜ?そんな設定ってさあ…」という感じで現実逃避したわけです。

そして花園を抜ければそこは現実がまっており、新しいブログを設定しました。でもここでも僕はあきらめていませんでした。

「dlogのデータはちゃんとあるんだ!はっ、もしかしたら再構築したらきっと元に戻るんじゃないか!?ふふ、きっとそうだ!」

再構築した結果。


晴れてデフォルトのページになりましたヽ( ´¬`)ノ


エントリー数0。コメント0。トラックバック0。ブログ数1。


ブログ名は、

First Blog

です。

dlogのデータは手元にありましたが、どこか遠い存在な人のような気がしました。近いようで遠い存在。そう、つまり今の団塊世代の夫婦関係のような、そんな心になりました。


妻「遠いのよ!あなたが近くにいても遠く感じるの!

夫「おいおい安子。何言ってんだ。今まで一緒に長年歩いてきたじゃないか。お互い空気みたいな存在なんだよ。フッ。空気みたいになくちゃならない存在なんだ。

妻「でも!何を話してもあなたの心なんてわからないの!

夫「安子、…おい安子!ちょっと待てよ…

by某ドラマより


ちょうど妻がdlog、夫が僕って感じですかね。安易にconfig.cgiを変更した僕が悪かったんですorz


そしてdlogとは熟年離婚寸前でしたが、それを食い止めたのちらっと見た何の変哲もないひとつのファイルです。それが「sqlitedb」ってファイルです。

mtフォルダの、ちょうどconfig.cgiと一緒の階層にそれがあったんですね。前々からなんか怪しいなと思いましたよ。だってsqliteなんて書いてあるんですからね。

そこで、もしかしたらこれがdlogのデータベースなのかもって思いました。ファイルサイズも大きいし。

ここで整理してみました。まずロリポップのMovableTypeの設置方法の文章を見たんです。すると、

データベースの設定です。下記のように修正します。 43行目の Database /path/to/sqlite/database/file を Database sqlitedb とします。

って書いてあります。これはBerkeley DBだと最初に僕が勘違いしていたものなんですが…。dlogの最初のデータベースの設定です。そしてそこに書いてある「sqlitedb」っていうのは、僕がmtフォルダで見たものと同一のものですね。


そして新しくconfig.cgiを設定しなおしてしまった方法を、
http://30smash.main.jp/mt/33settei/config.htmlでみると、

サイト名の下に「cgi-bin」、「cgi-bin」の下に「mt」というフォルダを作って、   そこに解凍したフォルダをアップロードする。 ・/cgi-bin/mtフォルダの下に「db」というフォルダを作成。 ・ロリポップではこの設定が一番パフォーマンスが良いです。

mt-config.cgi設定例 … SQLiteを使った場合

##### POSTGRESQL #####
#ObjectDriver DBI::postgres
#Database DATABASE_NAME
#DBUser DATABASE_USERNAME
#DBPassword DATABASE_PASSWORD
#DBHost localhost

##### SQLITE #####
ObjectDriver DBI::sqlite
Database ./db/sqlite.db

##### BERKELEYDB #####
#DataSource /path/to/database/directory


黒い部分は「データベースをdbのフォルダにsqlite.dbってファイルで保存するからね」っていう指示で、僕も自分のMovableTypeの中のdbフォルダをのぞいてみると、案の上ありました。

「も、もしやこれは!?」


と感じて、今すぐにでもdbフォルダの中にあるsqlite.dbに、mtフォルダにあったsqlitedbを上書きしたかった気持ちを抑えて、どちらともローカルにダウンロードしておきました。

もしものことを考えてです。この辺は熟年しているので、抜かりはありません(笑

そして、最初にデータベースとして稼動していたmtフォルダ内にあるsqlitedbの名前をsqlite.dbに変更して、新しく不慮の事故でインストールしてしまったdbフォルダ内になるsqlite.dbに上書き保存しました。

そしてログイン。


すると、

ブログの部分にdlogという文字と共に、今まで共に歩んできたエントリーという人生の軸後が光始めたのです!


元に戻ったぞ!と結構うれしかったりしました。

妻「やっぱりあなたじゃないとだめなの

夫「俺もやっとわかったよ。俺たちは空気のような存在じゃなくて、重力のような存在だったんだ。

妻「え?

夫「だから、離れたくても離れられない、見えない引力でお互いを支えあっているってことなんだよ

妻「まあ。ポッ


by某氏の遊び心より


そんなわけで熟年離婚は回避したんわけですが、ここで分かったことがいくつかあります。


◆MovableTypeは大きく3つに独立して成り立っている

・1つ目

MovableTypeそのものはCGIによって稼動しており、そのCGI事態は「ツールのユーザインタフェースと、記事の生成」を担っているといえます。ユーザインタフェースというのは、見た目ですね。

記事の生成に関してはイマイチわかりませんけど、たぶんCGIが行っているんじゃないかなって思います。

直感的に使いやすいユーザインタフェースはCGIによってなされており、また記事を新規投稿できるのもCGIの部分でなされているかと思います。

これが3つのうちの1つ目です。


・2つ目

2つ目は、「データの管理」はsqlite.dbによって行われているようです。この1つのファイルがMovableTypeの中枢といってもいいと思います。

データベースを利用する理由は、一括で管理できるからでしょう。よくわからないですけど、たぶんそんな感じかと。想像できないと思うので、例えでお話ししたいと思います。

もしこのsqliteが今の状態ではなく白紙の状態になったときを考えてみてみます。

今現在、このdlogは30個の記事が生成されています。またdlogのコメントやトラックバックを受取るかとらないか、またpingを飛ばす先などが設定されています。

そしてテンプレートのメインページやスタイルシートのソースも中身も最初とは変わっており、僕が書き直した状態で存在します。


ここでこのsqlite.dbを最初にインストールしたてのsqlite.dbに戻してしまいます。


すると、dlogの記事データは存在するのですが、メインメニューをみてみるとdlogとあった名前は「First blog」となり、エントリー数0、コメント数0、トラックバック0、テンプレートはデフォルトに逆戻り、
今まで設定してきたことは全てデフォルトに戻っています。


つまり、
これが何を意味するのかというと!画像で分かりやすくみてみよう!

これが現在使っているdlogのdbです。これをデフォルトの状態にすると…
movabledb1.gif


はい、こうなりますヽ( ´¬`)ノ
movabledb2.gif

つまりdbでMovableTypeの何を管理しているのかというと、記事のデータ、元となるテンプレート等です。正確にいうと、別の場所に、htmlによって保存されているファイル(当サイトでいうとdlogというフォルダの中身)との繋がりを保存しているともいえます。

別の場所にhtmlによって保存されている記事を編集するためには、dbに保存されているdlogの記事への「鍵」みたいなのが必要なんですね。

たぶん鍵によって繋がりが保たれているのではないかなと思います。だから別のデータベースだと、dlogの編集は不可能なんですね。もっとも、ソースをいじれば可能かもしれませんが…。


説明がヘタクソなのであれなんですが、もっと言うとMovableTypeのsqlite.dbはユーザインタフェースと記事を生成するCGIと、記事を保存しているhtml(もしくはshtml,php)との繋がりを担っていると共に、それらを統括する役目を持っているということです。

またこのsqlite.dbによって、記事の数の情報やpingの飛ばすURL、テンプレートのソース等が管理されているんですね。だから、たぶんMovableTypeの中枢がこのsqlite.dbという1つのファイルなんだと思います(‘◇‘)b

これが3つのうちの2つ目にあたります。


・3つ目

3つ目は何度も言っていましたが、ファイルの保存場所がCGIのツールやdbの場所とは違う場所で、正確にはあなたが指定したフォルダの中でhtml(もしくはshtmlやphp)として保存されています。

つまり、サイトそのものですね。

これはCGIによって生成されて独立した状態でファイルとして保存されており、それらはMovableType本体が無くなったとしても見ることはできますが、そこから記事を増やすといったことはできません。


ちょっとイメージしにくいかなって思うんですがどうでしょうか?


もうちょっと分かりやすくいうと、ホームページ・ビルダーというソフトをご存知でしょうか?それはウェブページを作成できるソフトウェアなんですけど、書き込むことでhtml言語によって作成されたファイルが出来上がるんですよね。

そうして指定した場所に保存することができます。MovableTypeでも同じで、違うのはそこが自分のパソコンなのか、それともサーバなのかといったとこです。

ホームページ・ビルダーによって作成されたhtmlはホームページ・ビルダーが無くなったとしても、ブラウザでみることができますよね?

ということでMovableTypeも同じで、ブラウザで何の影響もなく見ることができます。

そしてホームページ・ビルダーが失えばそのhtmlは編集できませんし、MovableTypeもCGIのツールがなくなれば生成したhtmlを編修することはできませんよね。


というわけで、3つ目はCGIのツールによって作成されたhtmlです。

◆まとめ

まとめると、MovableTypeはCGIのツール、db、htmlによる組み合わせで成り立っており、それぞのれの役目を書き出すと、

CGIのツール…ユーザインタフェースと記事を指定した場所に生成する。簡単に現すと、ホームページビルダーとか、HP作成エディタみたいなものですね。

db(aqlite.db)…CGIとhtmlの繋ぎ役であり、MovableTypeの全てといってもいいくらいの情報がここに保存されている。

html…生成したhtmlのウェブページ全てです。dlogでいうならば、全てのページはCGIによって生成されて僕が指定した場所に保存されています。MovableTypeがなくなったとしても、dlogは別フォルダとして独立して保存されているので、形が崩れたり見えなくなったりとすることはありません。

ただし、それ以上作成することは不可能となります。

というわけで、MovableTypeはそれら3つから成り立っており、結局あんま複雑な仕組みでもないってことですね。憶測の部分も多々ありますので間違いだらけかもしれませんが、そこは勘弁してください。

ちょっと分かりにくい部分もあったかと思いますけど、この辺で退却です。
またいつかきれいにまとめる日が来るかと思うので、そのときまで待ってください。

Home > MovableType > MovableTypeはなぜDBを利用しているのか?

Search
Feeds
Access

Return to page top