Webサービスとディレクトリ


さあ、世界中に「クラウドコンピューティング」が普及し、今や個人でもWebサービスを利用している人が大半なのではないか?メールだけでも、Gmail、Yahoo!メール、Liveメール、他にもGoogleを中心にワープロ、スプレッドシート(表計算ソフト)、カレンダー等々のWebサービスが展開されている。また、各IT企業が企業向けクラウドサービスを展開している。
ここではそんなクラウドコンピューティングのいい悪いを抜きにして、そのWebサービスやクラウドサービスを実現するのに欠かせない「ディレクトリサービス」の話をさらっとしよう。

ディレクトリサービスとは一種のデータベースで特徴としてはリレーショナルデータベースではないということですかね。MySQL等のデータベースはリレーショナル(相関関係)を管理し、より複雑なデータを処理することが可能です。では、なぜディレクトリサービスはわざわざリレーショナルを消しているのでしょう?
それは、ディレクトリサービスがオブジェクト(物)を扱うためのデータベースだからです。例えば、住所録や名簿などの人というオブジェクトを管理したり、資産を管理したりするものです。そして、これが発展して今日、ディレクトリサービスは主にユーザー認証用の情報を管理するのに使われるようになりました。
さて、ここまでの説明では素人に理解するのはきついと思います。たぶん、クラウドも意味不明だし、データベースって何?と思うでしょう。でも大丈夫です。
本来はプロフェッショナルたちがディレクトリサービスをWebサービスで利用して、難しい技術を隠ぺいして使いやすくしているのです。

さて、ディレクトリサービスを提供するサーバーソフトといえば、ActiveDirectoryとLDAPでしょう。前者はマイクロソフトの提供しているWindowsServerの中核となる技術とも言えるもので、WindowsServerはActiveDirectoryなしには語れませんし、ActiveDirectoryもWindowsServerなしには語れません。ただ、Webサービスに使うには機能がWindowsの他のサービスとの連携用に設計されているため、オーバーヘッドも大きく不向きでしょう。もし、灘校パソコン研究部の様にメインデータベースにActiveDirectoryを使用してるなら可能な限りWindows専用サービス以外は後者のLDAPにデータをWinbindやらで移して利用するのが無難でしょう。何せ、プロトコルがオープンですし。
さて、LDAPとはLightweight Directory Access Protocolの略でRFC1777等で定義されているインターネット標準プロトコルで基本的にディレクトリサービスと言えばこれが出てくるでしょう。LDAPのサーバーソフトはたくさんありますが、個人規模(じゃなくてもですが)ならOpenLDAPがよく使われます。
ついでに、Fedora専用ですが大規模データベースの対障害性に優れた「FedoraDirectoryServer」というのもあります。

さて、あまり時間がないので簡単なLDAPのデータ構造を説明します。
LDAPではリレーショナルデータベースと違いテーブルという概念がありません。最初にいった様にあくまでも「オブジェクト」を管理するのでテーブルは不向きです。簡潔にいうと、オブジェクトをエントリという単位で管理し、そのエントリを階層構造で管理します。この階層構造を「DIT(ディレクトリインフォメーションツリー)」と呼びます。お分かりいただけましたか?
ディレクトリサービスは情報をディレクトリとして管理することでデータの構造化を図っているのです。そして、そのディレクトリにあたるのが、組織単位=ou(Organization Unit)です。DITの利点はなんといっても、一般的な組織の構造にドンピシャな点でしょう。一番上に学校を置けば、その下に生徒、教員、事務・・・・。生徒の中には学年、学年の中にはクラス。そして、同じオブジェクトを複数のエントリから制御できる別名エントリを利用して学校の下にクラブをおいて中に部員を別名エントリで格納も可能です。そして、各オブジェクトには氏名、住所等を入れればデータベースの完成。まあ、この具体例だとさすがにインターネット越しで操作するのは危険過ぎますが(汗)

とりあえず、このディレクトリサービスとリレーショナルデータベースを併用して、うまく組み合わせれば、より複雑なデータを扱うことが可能です。

Leave a comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください