Haskellによる非破壊的木構造を用いたCMSの実装

Daichi TOMA
Sep 13, 2013

はじめに

本研究室では非破壊的木構造データベース Jungle の開発を行っている。 非破壊的木構造は、通常の木構造と違い、木構造自体を破壊せずに編集を行うことが可能である。

Jungle には、既に Java による実装があるが、本研究ではHaskellによる再実装を行った。 その結果、Java 版と同程度の性能を得ることができた。また、Java 版の実装と比較し、開発期間及びコード行数の短縮ができた。

非破壊的木構造データベース Jungle

非破壊的木構造を取り扱うデータベースである。 既に Java による実装が存在する。

特徴を以下に示す。

破壊的木構造

ロックを行わなければ、参照中に他の編集者が編集してしまうと、整合性がなくなってしまう。

図を入れる。見やすいように線とか太くする。

非破壊的木構造

参照中に他の編集者が編集してしまっても、整合性がなくなることはない。

図を入れる。見やすいように線とか太くする。

非破壊的木構造の特徴

非破壊的木構造は、破壊的木構造と異なり以下の利点がある。

ロックを必要とせず、自由にコピーを行えるため、スケーラブルなシステムに有用である。

Haskell

Haskell は、純粋関数型プログラミング言語である。 変数への代入は一度のみで、書き換えることはできない。

非破壊的木構造は変数への代入が発生しないことから、関数型言語と相性が良いと考えられる。 そのため、Haskell を用いて再実装を行った。

性能評価

非破壊的木構造データベース Jungle を用いて簡易掲示板システムを作成し、既存の Java 版との性能比較を行った。

Haskell 版 Jungle の HTTP サーバには、Haskell によって書かれた Warp を用いた。

Java 版 Jungle の HTTP サーバには、Jetty を用いた。

実験方法

実験環境

xeon使ったよーとか

実験結果

ほぼ同じぐらい

並列実行

並列実行

遅延評価

遅延評価

まとめ

今後の課題