2009-05-19 51 views
58

在我參與過的很多項目中,我都與LDAP保持聯繫,但事實是,我並不真正瞭解它。我認爲這只是一個人目錄,但在我發現它可以包含任何分層結構的對象之後。LDAP解決了什麼問題?

我在盒安裝OpenLDAP和我發現關於剛剛安裝很多教程。

什麼是LDAP? LDAP是正確的選擇的情況是什麼?我應該知道哪些LDAP概念與它一起工作? LDAP的優點是什麼?僅僅因爲舊的應用程序使用它而被使用?互聯網上的任何地方都有好的文檔解釋所有這些問題嗎?

UPDATE: 補充我發現this link其中包含LDAP新手像我這樣的快速入門指南的答案。

回答

38

什麼是LDAP? LDAP是正確的選擇的情況是什麼?

LDAP的核心是訪問適合存儲在目錄中的對象的協議。是否「合適」是一種完全主觀的決定,這是由實施者決定的,但通常這意味着許多對象的集合很少(或從不)更新數據,其中每個對象都有明顯的或規範的方式來查看達:

  • 電話簿在圖書館(查找通過名稱或電話號碼)
  • 職稱的建築(查找由標題,作者等)
  • 租戶(通過查找地板,套房,名稱等)

等。

請注意,LDAP本身只是一個協議,並不提供任何實際的存儲空間 - 就像同樣的方式,HTTP並不意味着你是否使用Apache,Jetty,Tomcat,Mongrel等。作爲一個Web服務器。 (與一般的LDAP的一個問題是名稱的混亂重用意味着不同的事情。維基百科有a good section這一點。)

9

LDAP爲O(1)的讀取性能,以換取O(東西更糟)寫性能。它非常適合頻繁訪問的數據,但很少更改 - 人員目錄,機器名稱和地址等等。 (因此縮寫爲:輕量級目錄訪問協議)

LDAP是一個正確的選擇,使用非關係數據庫(在降低開發人員的熟悉度和奇怪的性能特性方面)的痛苦低於盲目快速的閱讀訪問。

+5

請讓你的O( )的權利。它們並不意味着你認爲 – Javier 2009-05-19 19:53:02

+1

要說明的是:我的意思是檢索時間不取決於數據存儲中元素的數量(即查詢不會越慢表格越大)。雖然插入在大多數LDAP實現中都有。 – 2009-05-19 21:24:22

+1

任何值得使用的ldap服務器都會保留dn(aka主鍵)上的索引,並允許您定義其他索引以優化常見查詢。 – dwarring 2009-05-27 02:31:03

2

LDAP是一個接入協議;它只提供一個API給您正在嘗試查找應用程序的底層技術 - directory service。 OpenLDAP是開源的目錄服務之一; Sun有另一個名爲OpenDS的實現。 Active Directory和Novell NDS是該領域常見的另外兩種。

目錄可用於存儲任何類型的資源信息和資源之間的關係 - 例如,一個用戶目錄,打印機或網絡接入設備的權利。

1

在我,我們使用LDAP作爲我們主要的用戶認證系統老的工作場所之一。

這反過來爲我們的各種系統提供了信息。他們屬於,他們應該在那裏安裝他們的主目錄,聯繫信息,員工管理。

不一定受LDAP控制,但其他我們通過LDAP混合使用的東西是存在SQL用戶,K4,samba和電子郵件帳戶生成。

3

我在兼職和全職學生工作。我的課程鼓勵(閱讀需要)許多小組項目。

我已經使用openLdap和phpLdapAdmin來控制對Subversion和Mercurial Repos,Trac項目,Hudson等的訪問。安裝起來並不容易,但保存在管理中的時間是上帝發送的。

如果您有許多項目需要能夠使用不同資源的人羣,那麼這是一個很好的工具。

13

DIT是一種層次化的描述方案,它非常適合B-Tree算法,因此在大多數情況下會產生巨大的搜索性能。像OpenDS這樣的Directory Server在微秒內返回索引搜索,而RDBMS系統則要慢得多。目錄服務器(通常稱爲LDAP服務器)交換資源(RAM,CPU)以實現快速讀取響應。 RDBMS系統在管理有問題的數據方面提供了更多的功能。需要幾乎或零更新,簡單和小型網絡協議的速度?使用目錄服務器。需要數據管理和挖掘功能,和/或在數據之間定義關係方面的數據庫的高速變化?使用RDBMS(MySQL是你最好的選擇)。

5

我喜歡的一個觀點是LDAP是一個在持久性存儲之上的應用程序,而數據庫是一個持久性存儲。兩者都可以用來存儲用戶信息。

LDAP爲您提供了一個難以在數據庫中執行的層次結構。您可以在數據庫中創建層次結構,但執行諸如委派(這些行僅屬於您)或ACL上的行很難。因此,如果您使用LDAP來存儲用戶身份,則將安全問題推送到數據庫之外更容易。試圖在數據庫中解決它很奇怪。

與此同時,LDAP報告反對(將LDAP轉換爲用於報告的數據庫)非常糟糕。要在需要快速搜索的樹中深入存儲屬性可能會對性能造成影響(不要這樣做,將數據庫放在一邊或嘗試通過重新設計DIT來平滑查詢)。在一個非常深的DIT中存儲屬性到處都是一個糟糕的LDAP或系統設計,但有時候,如果你綁定到供應商產品或傳統應用程序,這是不可避免的。