お手軽Webグループウェア
サイボウズ Office 6

資料請求サイトマップサイボウズホーム


サイボウズ かんたんシリーズ
ホーム 製品情報 導入事例 活用ノウハウ ダウンロード 価格・見積・発注 マニュアル サポート
製品情報
概要
新機能
基本セット
年間継続サービス
マネジメントオプション
モバイルオプション
クライアント用フリーウエア
ASP
関連製品・サービス
動作環境
技術
Harmony (ユーザーインタフェース)
CyDE




CyDE ( Cybozu Database Engine )


速いデータベースには訳がある

サイボウズ Office はデータベースを利用した Webアプリケーションの一種であり、動作環境として CGI(Common Gateway Interface)を採用している。
CGI はたいていの Webサーバーが標準的にサポートしており、サーバーOS や Webサーバーソフトに依存しないオープンなインターネット技術の一つとして広く世界的に普及している。サイボウズ Office が安定動作するのも、実はこういったオープンで標準的な動作環境を採用していることも理由に挙げられる。しかしながら、CGI ではブラウザーからリクエストがあるたびに、CGIプロセスとしてアプリケーションが起動されるため、同時に多くのアクセスが集中するとサーバーに負荷がかかる。

CGI をよく理解していないライターが、「CGI は遅い」と安易に記事を書くのもこういった事情がある。しかし、それ以外の遅くなる原因を一つ一つ消していくと、サイボウズ Office のように高速な Webアプリケーションができるのである。

遅くなる原因の一つは、データベースとのやり取りのオーバーヘッドだ。サイボウズ Office では、データベースへの接続、データの出し入れ、クローズにかかる時間を最小化するために、極めて軽量なデータベースエンジン「CyDE」を実行ファイルに内包させている。データベースにアクセスするために別の余計なプログラムを走らせる必要はないため、プロセスが起動した瞬間にデータベースへのアクセスが開始でき、プロセスの終了とともにデータベースへの接続を終了できるのだ。さらにCyDEは、Webアプリケーションでの利用に特化させることで、接続時に発生するやり取りも最小限にし、高速化を追求している。

また、オブジェクト指向データベースとオブジェクト指向言語を組み合わせ、プログラムのサイズも極限まで小さくする努力をしている。もし、貴方が現在他社のWebグループウエアと比較検討しているのなら、プログラムサイズの大きさを比較してみて欲しい。軽量なプログラムを実現することで、プロセスの起動時間および終了時間を短縮し、サーバーのメモリなど、リソースの消費量も抑えられる。サイボウズ Office が高速に動作するのもおわかりいただけるだろう。

図:データベース比較図
図:データベース比較図

逆に、例えば Perl によって書かれたプログラムを考えてみよう。Perl のプログラムを実行させるときは、一度プログラムのソースを読み込んだ後、インタプリタによってコンピュータが実行できるように翻訳しなければならない。Perl プログラムをプロセスとしてサーバーに常駐させておく方法もあるが、設定が複雑であるだけではなく、Webサーバーソフトを限定するため、汎用プログラムには向いていない。

また、データをテキスト形式で保存している場合もやっかいだ。データを処理する度に、データファイルを最初から最後まで全部読み込ませる必要が出てくるため、使えば使うほど遅くなっていく。
サイボウズ Office は、実のところバージョン2まではこの方法でデータ保存を行っていた。しかしながら、ポータル環境としての個人トップページを表示させるためには全部のアプリケーションのデータをトップページの表示で読み込ませなければならない。実用的な速度でこれを実現させるためには、テキスト形式での保存は限界だった。

要はシンプルに考えることだ。CGIという標準的な環境において、高速動作を目指すのであれば、オブジェクト指向技術を駆使してシンプルに作ればよいのだ。



ナレッジ系DBに最適なオブジェクトデータモデルの採用

CyDEはオブジェクトデータモデルを採用している。グループウエアでは、簡単な表では表現できないような複雑な相関関係をもったデータを扱うからである。

RDB(Relational Database)のデータモデルと比較した場合、RDBでは表形式でデータをモデル化するのに対し、ODB(Object Database)は人間がイメージできるオブジェクト形式のままデータをモデル化することが相違点だ。
RDBは、金勘定の計算などの簡単に定型化できる業務に利用するときには便利であるが、簡単に表で表現できない複雑なデータ構造となった場合には、無理が生じる。無理やりRDBのテーブルで構造を表現したところで、最適な状態ではないため、処理スピードも上がらない。複雑なリレーションを考えれば考えるほど整合性を取ることが難しく、複雑なプログラムになってしまうのである。さらに悪いことに、ちょっとした機能の追加を行なうにしても、データの持ち方からプログラムに至るまで、大幅にやり直す必要がでてくる。

つまり、グループウエアのようにナレッジ系の複雑なデータを扱う場合は、オブジェクトデータモデルに基づいたODBを利用するほうが遥かに高速で安定したデータベースができる。なぜなら人の脳の思考方式はオブジェクトデータモデルに近いからだ。
ODBを利用すると、データモデルとオブジェクト指向開発言語の親和性の高さにも助けられ、柔軟な設計変更が比較的簡単に行なえる。

スケジュールのデータ構造を例にあげて説明してみよう。イベントは誰かのスケジュールに登録されているが、その反面、共有されているイベントは複数の人に属していると考えることもできる。サイボウズ Office ではユーザーが持つスケジュール情報を参照し、カレンダーの中からイベントを見つけ出す。共有イベントでは、共有しているユーザーにもやはり同じスケジュール情報が存在する。その共有イベントの実体は一つしかなく、削除すると両方から消えなければならない。これをRDBで実現すると、話は複雑になる。
共有イベントというテーブルを用意し、そのイベントに対して誰が紐付けされているかを表として格納する。イベントは2名だけで共有されているかも知れないし、実はそのイベントは全社行事で、数百人で共有されているかもしれない。RDBを駆使してどのようなリレーションを作るにしても、シンプルな表では示すことができない。従ってプログラムも複雑になる。このプロセスがいくつも同時に発生する場合にサーバーにかかる負荷を一度想像して欲しい。


RDB(Relational Database)

図:Relational Database図


複数のシートにデータの参照にいき、照合する必要がある。

しかし、オブジェクトデータモデルなら話は簡単だ。共有イベントが複数の人に紐付けできるように設計すれば、イベントデータは一つにまとめられ、素直にデータをたどるだけでよい。プログラムもオブジェクトの扱いを前提に進められるため、ソースコードもシンプルになる。


ODB(Object Database)

図:Object Database図


オブジェクトデータモデルの場合、パスは一直線で目的地へ届く。

CyDEは、サイボウズ Office のバージョン3 から搭載されており、既に数多くの導入事例と4年の実績がある。
優雅に水面を泳ぐ白鳥も、水面下では一生懸命水をかいているという話がある。サイボウズ Office も同じようなものだと私は考えている。

CyDEエンジンを搭載したサイボウズ Office 6 をダウンロードされる方は、下記をご覧ください。


ダウンロード



関連リンク

「サイボウズ Office 6」の資料は下記「資料請求」からお申し込みできます。


資料請求

ページの先頭へ