Directory service (בתרגום לעברית: שירותי מדריך או שירותי ספרייה) היא תוכנה המשמשת לאגירה, הפצה וחיפוש של מידע משותף ברשת מחשבים. סוגי המידע העיקריים המנוהלים על ידי התוכנה כוללים משתמשים, כתובת דואר אלקטרוני או מספרי טלפון, תיקיות, קבצים, מדפסות, סיסמאות של משתמשי מחשב, הרשאות, תצורות יישומים מבוזרים, מפתחות ציבוריים ועוד.
Directory service היא למעשה מסד נתונים שרשומה בו יכולה להתייחס לאובייקט כלשהו כגון אדם, מקום, שירות, או מחשב. כדי לסייע בארגון המידע, רוב שירותי הספרייה אוגרים את המידע בצורת עץ היררכי.
דוגמה למערכת Directory נפוצה בסביבת Windows היא ה-Active Directory של חברת Microsoft, המשמשת לשמירת המידע על משתמשים, קבוצות, מחשבים וכדומה.
שירותי הספרייה היוו במקור חלק מיוזמת ה-Open Systems Interconnection (או מודל ה-OSI). בשנות ה-80 של המאה שעברה, ארגון ה-ITU וארגון ה-ISO הציגו את פרוטוקול ה-X.500 אשר היווה את הבסיס לכל שירותי הספרייה הקיימים כיום. המטרה הראשונה של הפרוטוקול הייתה שימוש בהעברת הודעות אלקטרוניות בתוך הרשת הארגונית וחיפוש משאבי רשת תוך שימוש בשמות. פרוטוקול ה-LDAP (בראשי תיבות: Lightweigh Directory Access Protocol) מבוסס על הגדרות מבנה הספרייה ב-X.500, אולם משתמש בפרוטוקול TCP/IP ובקידוד מחרוזות תווים, מה שמקשר אותו יותר לעולם האינטרנט.
בתחום הנדסת התוכנה, ספרייה (Directory) דומה מאוד בהגדרתה למילון (Dictionary). היא מאפשרת חיפוש שם (Name) ומידע אודות אותו שם. כשם שלמילה במילון יכולות להיות כמה הגדרות מילוניות, כך בספרייה ניתן לשייך נתונים שונים ורבים לאותה "מילה".
ספריות יכולות להיות קטנות מאוד ולהכיל רק כמות מזערית של נתונים והגדרות נתונים, או גדולות מאוד ולהכיל כמות אין סופית של צומתי נתונים (Data Node) והגדרות נתונים (Data Type). לדוגמה, במאגר של מספרי טלפון, צומתי הנתונים יהיו שמות האנשים בעוד שסוג הנתונים יהיה מספרי הטלפון. דוגמה נוספת היא מערכת ה-DNS, בה צומתי הנתונים הם שמות דומיין (Domain) או כתובות אינטרנט.
בספריות המשמשות מערכות הפעלה של מחשבים, צומתי הנתונים מייצגים משאבים אשר מנוהלים על ידי מערכת ההפעלה, כגון שמות משתמשים, שמות מחשבים, מדפסות ומשאבים משותפים אחרים. מאז המצאת האינטרנט, נעשה שימוש בסוגי ספריות שונות אולם התקן הנפוץ כיום הוא ה-X.500.
שירות הספרייה הפשוט ביותר נקרא שירות שמות (Naming Service) ומטרתו היא למפות שמות של משאבי רשת לכתובות הרשת שלהם. בשימוש בסוג זה של ספרייה, המשתמש לא צריך לזכור את כתובת הרשת המלאה של כל משאב ומשאב ויכול להשתמש בשם קצר כדי לאתר את המשאב.
בדרך כלל מתייחסים לכל משאב ברשת כאובייקט (Object) בספרייה. מידע אודות אותו משאב ספציפי נשמר בצורת מאפיינים (Attributes) של אותו אובייקט. ניתן להגביל את הגישה למידע של אובייקטים על ידי מתן הרשאות (Permissions) לאותו אובייקט.
ספריות מתוחכמות יותר עוצבו כדי שיכילו נתונים נוספים מעבר לאובייקטים כדוגמת שירותים (Services), התקנים (Devices), הגדרת תפקיד (Entitlements), העדפות (Preferences), תוכן (Content) ועוד. את השימוש בספריות מעין אלו ניתן למצוא במערכות אשר מטפלות בתחום ניהול הזהויות (Identity Management).
שירות ספריות מגדיר את מרחב השמות (Namespace) של הרשת. מרחב שמות הוא מעין מיכל וירטואלי אשר מחזיק אובייקטים ושומר מידע אודות יחסי הגומלין ביניהם.
תהליך עיצוב ספרייה (Directory) מתבסס בדרך כלל על סדרה של חוקים אשר קובעים כיצד משאבי רשת יקבלו שם וכיצד יזהו אותם. אחד החוקים הבסיסיים ביותר קובע שכל השמות חייבים להיות ייחודיים וחד משמעיים. בפרוטוקולים X.500 ו-LDAP, השם של האובייקט נקרא Distinguished Name או DN בקיצור. ה-DN משמש להצבעה על אוסף מאפיינים אשר ביחד מרכיבים רשומה אחת (שם) בתוך הספרייה.
ל"שכפול נתונים" (Replication) ו"הפצת נתונים" (Distribution) יש משמעות מיוחדת בתהליך התכנון והניהול של שירותי הספרייה. המושג "שכפול נתונים" מתאר מצב בו מרחב השמות של ספרייה אחת מועתק (Copy) לשרת ספרייה אחר כדי לעמוד במצבים בהם אחד השרתים מפסיק לעבוד או כדי לשפר ביצועים. תהליך העתקת מרחב השמות מנוהל על ידי אותה סמכות (Authority). "הפצת נתונים" הוא תהליך בו שרתי ספרייה רבים, המחזיקים מרחבי שמות שונים, מאוחדים יחדיו לספרייה אחת כאשר כל מרחב שמות אחראי על סמכויות שונות.
ישנם כמה מאפיינים אשר מבדילים בין שירותי ספרייה למסדי נתונים יחסיים (RDB) רגילים. יש יוצאים מן הכלל, אך באופן כללי ניתן למצוא את ההבדלים הבאים:
מבחינה ארכיטקטונית, ההבדל העיקרי בין שני סוגי מאגרי המידע האלו הוא שאפליקציה אשר מתבססת על מאגר מידע יחסי מתוכננת להשתמש במודל מידע מסוים יחידני (יחסי), בעוד שספרייה מחזיקה "מזהים" מיוחדים עבור אובייקטים ואפליקציות שונות יכולות להשתמש בהם באופן שונה.
השימוש בשירות ספרייה (Directory Services) יתבצע בארגונים המכילים משאבי רשת רבים שצריך לנהל אותם וזאת במטרה לחסוך עלויות וליעל את העבודה. בין הדוגמאות למשאבי רשת מסוג זה ניתן למצוא חשבונות משתמש, פנקסי כתובות, רשימות כוח אדם, הגדרות, תפקידים, מוצרים ושירותים, התקנים, פרופילים, מדיניות, מספרי טלפון וכדומה.
מסיבות מובנות, תהליך עיצוב הספריות ומאגרי המידע היחסיים שונים מאוד האחד מהשני. מודלים של מסדי נתונים יחסיים נוטים יותר להיות בנויים עבור דרישות החברה ותהליכי העבודה שלה כגון הצגה מותאמת אישית של נתונים, גישה מהירה, והאפשרות לגשת לנתונים בכל מקום ברשת. לעומת זאת, התפקיד של מודל הספרייה הוא לאפשר שימוש תוך הסבר מינימלי וכאן נכנס ההבדל המהותי בקנה המידה. ניתן לראות זאת בכמות המאגרים העצומה אשר בשימוש בשוק למטרות שונות. חברות שרוצות לנהל זהויות בתוך הארגון שלהם ולחשוף שירותים שונים ללקוחות יעדיפו את מבנה הספריות.
לאורך השנים פותחו יישומים שונים של שירותי הספרייה מחברות שונות, בהם ניתן למצוא מערכות מפורסמות כגון: