LDAP は、OpenLDAP のようなアクティブ ディレクトリ システムと通信するために使用されるプロトコルであることを理解しています。
また、OpenLDAP は、オブジェクトをツリーに格納する一種のデータベースであることも理解しています。
私の質問は、リレーショナル DB の代わりに LDAP を使用する必要がある場合、いつ、何のために使用する必要があるかということです。
5 に答える
リレーショナル データベースと LDAP ベースのデータベースは、さまざまな問題を解決します。LDAP は高速読み取り、低速書き込みに重点を置いており、階層的で分散型であり、(DNS のように) 権限に基づいています。データがこの仮定に一致しない場合、LDAP は適切な選択ではありません。
LDAP は、会社のアドレス帳などのエンティティの階層を記述するのに適しています。リレーショナル データベースでは、すべての部門がすべてのアドレスを含む大きなグローバル テーブルにアクセスする必要がありますが、LDAP ソリューションを使用すると、各部門のアドレス帳の責任を部門自体に分散させながら、社内の他の人が照会できるようにすることができます。
LDAP を使用すると、あらゆる種類の情報を保存できます。アドレス帳は最も典型的な例ですが、階層的で権威に焦点を当てたデータセットとして意図できるものはすべて LDAP に格納できます。別の例: 図書館が図書館のコンソーシアムの一部であり、所蔵している書籍に関するデータを保存したいとします。データベースは階層化されており (各ライブラリはその境界内で権限を持っています)、各ライブラリは他のライブラリから独立しています。スキーマ内には、著者、出版年、タイトル、ISBN などの書籍に関するデータを格納できます。
データを格納するには、特別なファイル形式である LDIF を使用してデータを表現しますが、API も存在します。ただし、LDIF は、情報を表示する最も簡単な方法です。それは単なるプレーンテキストファイルです。ウィキペディアの例
dn: cn=John Doe,dc=example,dc=com
cn: John Doe
givenName: John
sn: Doe
telephoneNumber: +1 888 555 6789
telephoneNumber: +1 888 555 1232
mail: john@example.com
manager: cn=Barbara Doe,dc=example,dc=com
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
objectClass: top
これは、John Doe という人物に関する情報です。これは dc=example, dc=com の「領域」の下にあり、関連する他の情報がたくさんあります (テーブルの行のように考えてください)。この場合のように、階層は (明らかに) インターネット ドメインに関連付けることができますが、実際には階層の記述は非常に柔軟です。国境や会社の部署など、好みに応じて階層を編成できます。
データ ドメインを管理する必要がある場合は、LDAP を使用する必要があります。
- ストレージ要件を削減した柔軟なスキーマの必要性。
- 書き込みニーズの減少、読み取りニーズの増加
- 情報の管理と編成の強力な階層的性質
- 権限と権限の委任
この簡潔で素敵な投稿には、このシナリオに関連する非常に優れた情報があります。
さらに興味がある場合は、上記のリンクの続きであるhereでもう少し詳しく調べることができます。
LDAP は、頻繁に読み取られ、ほとんど書き込まれないデータに適しています。たとえば、LDAP は、ユーザーのログイン情報やパスワード情報を保存するためによく使用されます。
LDAP は、一部のデータ フィールドも保存できる集中型のユーザーおよびアカウント管理システムです。
データベース接続やリモート サービスなどのリソースを取得するためのルックアップ アドレス指定メカニズムとして LDAP を使用することもできます。
私が LDAP で気に入っている点は、ディレクトリ/URL スタイルでデータを取得できることです。これは、専用のクエリ言語を使用する必要がある RDBMS とはまったく異なります。物事が階層的に編成されている場合、これはしばしば意味があり、直感的です。