DE69530595T2 - System und verfahren für die x.500-datenbanknorm - Google Patents

System und verfahren für die x.500-datenbanknorm Download PDF

Info

Publication number
DE69530595T2
DE69530595T2 DE69530595T DE69530595T DE69530595T2 DE 69530595 T2 DE69530595 T2 DE 69530595T2 DE 69530595 T DE69530595 T DE 69530595T DE 69530595 T DE69530595 T DE 69530595T DE 69530595 T2 DE69530595 T2 DE 69530595T2
Authority
DE
Germany
Prior art keywords
data
entry
search
attribute
database
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE69530595T
Other languages
English (en)
Other versions
DE69530595D1 (de
Inventor
Hans Richard HARVEY
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
CA Inc
Original Assignee
Computer Associates Think Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from AUPM7842A external-priority patent/AUPM784294A0/en
Priority claimed from AUPM9586A external-priority patent/AUPM958694A0/en
Application filed by Computer Associates Think Inc filed Critical Computer Associates Think Inc
Application granted granted Critical
Publication of DE69530595D1 publication Critical patent/DE69530595D1/de
Publication of DE69530595T2 publication Critical patent/DE69530595T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • G06F16/288Entity relationship models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/289Object oriented databases
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/45Network directories; Name-to-address mapping
    • H04L61/4552Lookup mechanisms between a plurality of directories; Synchronisation of directories, e.g. metadirectories
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/45Network directories; Name-to-address mapping
    • H04L61/4505Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols
    • H04L61/4517Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols using open systems interconnection [OSI] directories, e.g. X.500
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/45Network directories; Name-to-address mapping
    • H04L61/4505Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols
    • H04L61/4523Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols using lightweight directory access protocol [LDAP]
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • Y10S707/99934Query formulation, input preparation, or translation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99942Manipulating data structure, e.g. compression, compaction, compilation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99954Version management

Description

  • Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft eine Datenverarbeitungseinrichtung, und ist in der Anwendung der X.500-Norm auf eine relationale Datenbank von besonderer Bedeutung. Insbesondere ist die hier vorliegende Erfindung nachfolgend so beschrieben, als ob sie auf eine Implementierung unter Verwendung eines RDBMS (relationalen Datenbank-Management-Systems) gerichtet ist.
  • Stand der Technik
  • X.500 ist der internationale Standard für elektronische Directories [CCITT89]. Diese Standards definieren die Dienste, Protokolle und das Informationsmodell einer sehr flexiblen und allgemein verwendbaren Datenbank. X.500 ist in Informationssystemen anwendbar, in welchen die Daten ziemlich statisch sind (zum Beispiel einem Telefon-Directory), jedoch verteilt werden müssen (zum Beispiel zwischen Organisationen oder Ländern), erweiterbar sein müssen (zum Beispiel zum Speichern von Namen, Adressen, Jobtiteln, Einrichtungen, usw.), objektorientiert sein müssen (zum Beispiel, um auf Daten Regeln auszuführen) und/oder fernsteuerbar zugreifbar sein müssen.
  • Relationales Datenbank-Management-System
  • (RDBMS) stellt Möglichkeiten für Anwendungen zum Speichern und Verändern von Daten bereit. Unter den vielen Eigenschaften, die dieselben anbieten, sind Datenintegrität, Datenkonsistenz, Datengleichzeitigkeit, Indizierungsmechanismen, Anfrageoptimierungen, Datenwiederherstellung, Datenzurückverfolgung und Sicherheit. Sie können auch eine Vielzahl von Werkzeugen zur Leistungssteigerung, zum Import/Export, zum Backup, zum sogenannten Auditing und zur Anwendungsentwicklung bereitstellen.
  • RDBMS ist die bevorzugte Wahl der meisten Datenmanager von großem Umfang. Sie sind gegenwärtig bereits verfügbar und als zuverlässig bekannt, und verfügen über eine Vielzahl nützlicher Managementwerkzeuge. Es gibt eine große Basis von RDBMS-Installationen und daher eine große Anzahl existierender Erfahrung und Investitionen in Menschen und Prozesse, um diese Systeme zu betreiben, und daher versuchen Datenmanager diese zu nutzen, wenn ein neues System angeschafft wird. Die meisten relationalen Datenbankprodukte unterstützen den Industriestandard SQL (Structured Query Language).
  • Es hat auch eine Bewegung in Richtung auf objektorientierte Systeme gegeben, die eine Daten-Ausdehnbarkeit bereitstellen und die Möglichkeit aufweisen, beliebig komplexe Daten-Gesichtspunkte handzuhaben. Weiterhin verfügen viele Unternehmen und Regierungsabteilungen über eine große Anzahl von Datenbankanwendungen, die nicht untereinander verknüpft sind. Datenmanager suchen nach Lösungen, die es ihnen ermöglichen, ihre Daten zu integrieren und das Management dieser Daten zu vereinfachen. X.500 und die damit verbundenen Standards stellen einen Rahmen und einen Grad an Funktionalität bereit, welcher es ermöglicht, dies zu erreichen. Die Tatsache, dass X.500 ein internationaler Standard ist, bedeutet, dass Datenverknüpfungen zwischen Unternehmen und zwischen unterschiedlichen Ländern erzielt werden können.
  • Das Problem liegt daher darin, die Bedürfnisse der Datenmanager zu adressieren und X.500 mit der gesamten Flexibilität von objektorientierten Systemen zu implementieren, jedoch ein SQL-Produkt zu verwenden, so dass es die Installierbarkeit und inhärente Leistungsfähigkeit von relationalen System verbunden mit der Stabilität, Robustheit, Portabilität und Kosteneffektivität von gegenwärtigen SQL-Produkten verknüpfen kann.
  • Es hat eine Anzahl von Versuchen gegeben, das obige Problem über eine vernünftige Zeitspanne zu lösen. Keiner dieser Versuche haben in ein Produkt gemündet, welches unter Beweis gestellt hat, dass es kommerziell im Markt akzeptiert ist, und daher gibt es auf dem Markt seit langem ein Bedürfnis, welches bis heute noch nicht befriedigt worden ist.
  • 1 zeigt eine Zusammenfassung aus den "GOSIPNews", Ausgabe Nr. 4, datiert von April 1994 (Quelle: "Interoperability Products", welches in Australien durch das Zentrum für offene Systeme vertrieben wird) und welches die gegenwärtig verfügbaren X.500-Produkte auflistet. Keines dieser Produkte verwendet eine SQL-Datenbank als eine zugrundeliegende Datenspeicherung und keines dieser Produkte adressiert daher erfolgreich die Bedürfnisse des Marktes nach der Implementierung von X.500 unter Verwendung einer SQL RDBMS.
  • Die Proceedings von IFIP WG6.6 Internationales Symposium (ISBN: 0444 889 167) haben ein durch Francois Perruchond, Cuno Lanz und Bernard Plattner präsentiertes Papier veröffentlicht, welches den Titel trägt "A Relational Data Base Design for an X.500 Directory System Agent". Das veröffentlichte Directory-System ist, wie die meisten Systeme nach dem Stand der Technik, im Betrieb relativ langsam, insbesondere dann, wenn die Datenbank relativ ausführlich ist und in seiner Implementierung von X.500 unvollständig ist, wie zum Beispiel Aliases, Untersuchen und Dateneingaben.
  • Ein anderer Versucht ist veröffentlicht in den Proceedings von IEEE, ISBN 0909 394 253, Proceedings April 22–24, 1991 durch C. M. R. Leung. In dieser Veröffentlichung ist ein Datenbankschema beschrieben, in welchem eine einzelne Eingabetabelle detaillierte Information über jedes Directory-Objekt bereithält, es ist jedoch unvollständig in seiner Implementierung von X.500.
  • Dieser Versuch wurde in einer Anzahl von Textbüchern und nach dem Stand der Technik, so zum Beispiel in "bject Oriented Modeling and Design" durch J. Rumbaugh, et al, 1991, ISBN 0-13-630054-5, diskreditiert, in welchem in Abschnitt 17.3.8 klar ausgedrückt ist, dass "das Einfügen aller Eingaben in eine Tabelle kein guter Lösungsansatz für das Design von relationalen Datenbanken ist".
  • Die Veröffentlichung Cooke E. E. et al: "Directory Services in the HP Map 3.0 Environment", Hewlett Packard Journal, Volume 41, Ausgabe 4, 1. August 1990, Seiten 15–23, XP000149608 beschreibt ein System zur Bereitstellung von Datenbankdiensten unter Verwendung einer relationalen Datenbank, die drei Tabellen aufweist. Es wird der X.500 Directory-Standard verwendet.
  • Zusammenfassung der Erfindung
  • Das Ziel der hier vorliegenden Erfindung liegt in der Adressierung des Problems der Implementierung von X.500 in ein RDBMS, welches SQL oder jede andere relationale Sprache unterstützt. X.500-Dienste können durch eine Anzahl von Protokollen genutzt werden, wie zum Beispiel X.500 und LDAP.
  • In diesem Dokument ist zum Zeitpunkt seiner Einreichung SQL die am meisten populäre, relationale Sprache, obwohl es nur eine von mehreren relationalen Sprachen ist, ist es die Absicht der hier vorliegenden Erfindung, eine Anwendbarkeit auf eine andere Form einer relationalen Sprache zu ermöglichen, nicht nur auf SQL.
  • Nach der hier vorliegenden Erfindung wird ein Datenbanksystem zur Bereitstellung von Directory-Diensten bezüglich Datenobjekten bereitgestellt, wobei jedes Datenobjekt wenigstens ein Attribut und jedes Attribut einen oder mehrere Werte aufweist, mit: Empfangsmitteln zum Empfangen von Directory-Dienst-Operationsbefehlen; und Datenbankmitteln, die angeordnet sind, um Daten zu speichern und Directory-Dienst-Operationen in Übereinstimmung mit den von den Empfangsmitteln empfangenden Directory-Dienst-Operationsbefehlen auszuführen; dadurch gekennzeichnet, dass die Datenbankmittel umfassen: Hierarchiedefinitionsmittel (wie zum Beispiel eine hierarchische Tabelle HIERARCHY; DIT) zur Definition von Beziehungen zwischen Objekten und einem Entry-Identifikator, der jedes Objekt identifiziert; Attributdefinitionsmittel (wie zum Beispiel eine Attributtabelle ATTRIBUTE), um eine Vielzahl von Attributdefinitionen zu speichern, wobei jede Attributdefinition ein entsprechendes Attribut definiert und einen Attribut-Identifikator umfasst; Mittel (wie zum Beispiel eine Objekttabelle OBJECT; ENTRY) zur Speicherung von Wertedaten für ein Objekt, wobei die Wertedaten (zum Beispiel ValueNam; ValueRaw) Attributwerte und, verbunden mit jedem Attributwert, einen entsprechenden Attribut-Identifikator (AID) und einen Entry-Identifikator (EID) aufweisen, der das Objekt identifiziert, auf welches sich der Attributwert bezieht, und Mittel, die auf die Directory-Dienst-Operationsbefehle antworten, um die Datenobjekte zu ermitteln und/oder zu übertragen, welche die durch die Hierarchiedefinitionsmittel, die gespeicherten Attributdefinitionen und die gespeicherten Wertedaten definierten. Beziehungen verwenden.
  • Es ist bevorzugt, dass die Hierarchiedefinitionsmittel (HIERARCHY; IT) vorhanden sind, um Ursprungsdaten (Parent; Path) zu speichern, die den EID eines jeden Objekts zu einem anderen EID oder einem Root-Objekt in Beziehung setzen.
  • Vorzugsweise sind die Datenbankmittel weiterhin angeordnet, um dem EID eines jeden Objekts zugeordnete Pfaddaten (Path) zu speichern, die einer relativen, hierarchischen Beziehung des Objekts bezüglich des Root-Objekts entsprechen, wobei die Datenbankmittel vorgesehen sind, um Directory-Dienst-Operationen unter Verwendung dieser Pfaddaten auszuführen. So können die Datenbankmittel zum Beispiel angeordnet sein, um die Pfaddaten (Path) in einem Pfaddefinitionsmittel (TREE) getrennt von den Hierarchiedefinitionsmitteln (HIERARCHY; DIT) zu speichern.
  • Die Datenbankmittel sind insbesondere vorgesehen, um Alias-Daten (Alias) zu speichern, welche die Äquivalenz eines Objekts in Bezug auf ein anderes Objekt wiedergeben, wobei das Datenbankmittel vorgesehen ist, um die Directory-Dienst-Operationen auszuführen, indem Referenzen auf einen EID eines Objekts, welches durch seine Alias-Daten (Alias) als ein Äquivalent für ein anderes Objekt erkannt wird, in Referenzen auf die EIDs ihrer äquivalenten Objekte unter Verwendung der Alias-Daten konvertiert werden. Zum Beispiel können die Datenbankmittel vorgesehen sein, um die Alias-Daten (Alias) in Alias-Definitionsmitteln (ALIAS) getrennt von den Hierarchiedefinitionsmitteln zu speichern.
  • Die Datenbankmittel sind insbesondere vorgesehen, um Wertedaten für jedes Objekt in einer ersten Form (ValueNorm) und in einer zweiten Form (ValueRaw) zu speichern, wobei das Datenbankmittel angeordnet ist, um die Directory-Dienst-Operationen unter Verwendung eines Vergleichs der Wertedaten mit Daten auszuführen, die von den Empfangsmitteln unter Verwendung von in der ersten Form (ValueNorm) gespeicherten Daten empfangen werden, und um Daten unter Verwendung von in der zweiten Form (ValueRaw) gespeicherten Daten auszugeben. Zum Beispiel können die Datenbankmittel vorgesehen sein, um die Wertedaten (ValueNorm) in der ersten Form und die Wertedaten in der zweiten Form (ValueRaw) in getrennten Attributdefinitionsmitteln zu speichern (SEARCH, ENTRY).
  • Die Datenbankmittel können weiterhin vorgesehen sein, um Konvertierungsdaten zu speichern, die der Konvertierung von Daten zwischen als Teil von Directory-Dienst-Operationsbefehlen empfangenen Daten, die Typdaten (Type; Object ID) entsprechen, und Attribut-Identifikatoren (AID) dienen.
  • Die Datenbankmittel sind insbesondere vorgesehen, um Namen-Identifikationsdaten (Disting) zu speichern, die für ein Objekt Wertedaten (ValueNorm; ValueRaw) als Daten identifizieren, die einen Teil eines eindeutigen Namens für jedes Objekt bilden, und sind insbesondere vorgesehen, um für jedes Objekt Namensdaten zu erzeugen, und zwar unter Verwendung der oben erwähnten Wertedaten (ValueNorm; ValueRaw) die Namens-Identifikationsdaten (Disting) zu geordnet sind, die wiedergeben, dass die Wertedaten Teil eines Namens für ein Objekt bilden, um für jedes Objekt einen eindeutigen Namen (RDN) zu erzeugen, und zwar unter Verwendung der Namens-Identifikationsdaten (Disting) und der Daten, die einem Objekt und seiner hierarchischen Beziehung relativ zu einem Root-Objekt direkt oder über andere Objekte entsprechen. Es ist insbesondere vorgesehen, um diesen eindeutigen Namen (RDN) für ein Objekt unter Bezugnahme auf den dem Objekt zugeordneten EID zu speichern und um einen eindeutigen Namen für das Objekt unter Verwendung der Namens-Identifikationsdaten und der Pfaddaten zu erzeugen. Es ist weiterhin insbesondere vorgesehen, um den eindeutigen Namen (RDN) mit EID, der die Namensdaten einem entsprechenden Objekt zuordnet, in einem Namensdefinitionsmittel (NAME) getrennt von den Hierarchie-Definitionsmittel (HIERARCHY; DIT) zu speichern.
  • Der eindeutige Name (RDN) für jedes Objekt kann in einer ersten Form (NameNorm) und in einer zweiten Form (NameRaw) gespeichert werden, und die Datenbankmittel können angeordnet sein, um die Directory-Dienst-Operationen unter Verwendung eines Vergleichs der eindeutigen Namensdaten (RDN) mit Daten auszuführen, die von den Empfangsmitteln unter Verwendung von in der ersten Form (NameNorm) gespeicherten Daten empfangen werden, und um Daten unter Verwendung von in der zweiten Form (NameRaw) gespeicherter Daten auszugeben.
  • Die Empfangsmittel können angepasst sein, um Directory-Dienst-Befehle zu empfangen, umfassend Suchkriterien definierende Suchdaten, die eine Anforderung zur Ausführung einer Suchfunktion identifizieren. Die Suchdaten können Daten umfassen, die eine oder mehrere von den Wertedaten (ValueNorm; ValueRaw) zu erfüllende Bedingungen umfassen, und die Antwortmittel können angeordnet sein, um nach Empfang der Befehle durch die Empfangsmittel Daten auszugeben, die in den Datenbankmitteln gespeichert sind, und zwar in Verbindung mit einem EID entsprechend den EIDS, die in Verbindung mit den Attributwerten gespeichert sind, die eine oder mehrere zu erfüllende Bedingungen erfüllen.
  • Es folgt eine Beschreibung einer Implementierung der vorliegenden Erfindung, und zwar in einem Kontext, von dem Stand der Technik zugeordneten Problemen. Die Beschreibung wird unter Bezugnahme auf die folgenden Überschriften zweckmäßig dargestellt:
    1. grundlegendes Design
    2. konzeptionelle Methoden
    3. konzeptionelle Design
    4. logisches Design
    5. logische Methoden
    6. physikalisches Design
    7. Beispielimplementierung
  • Der X.500-Standard gibt in keiner Art und Weise an, wie ein Directory zu implementieren ist, nur seine Möglichkeiten und sein Verhalten. Ein Schlüssel in der Lösung des Implementierungsproblems ist die Realisierung, dass X.500 einen vorgegebenen Satz von Diensten (zum Beispiel Add, Modify, Search, usw.) definiert, der beliebige Daten abarbeiten kann.
  • Es wurde erkannt, dass mit dem Stand der Technik verbundene Probleme durch einen einzigartigen Versuch beseitigt werden können, durch was man als invertiertes, relationales Theoriemodell bezeichnen kann, aus einem Datenmodellierungsversuch in einen Servicemodellierungsversuch. Das ist, ausgehend vom Problem: Abarbeiten beliebiger Anfragen eines festgegebenen Datensatzes auf eine vorhandene Lösung der Abarbeitung beliebiger Daten unter Verwendung eines gegebenen Satzes von Anfragen/Diensten.
  • Jeder Dienst wird modelliert (anstelle jedes Datentyps) und die Beziehung zwischen jedem Dienst wird definiert (anstelle der Beziehung zwischen den Datentypen).
  • Die Implementierung einer Dienstmodellierung unter Verwendung relationaler Anfragen zur Befriedigung von X.500-Diensten ermöglicht die Vorteile von zu verwendenden RDBMS.
  • Dieser Lösungsversuch hat viele Vorteile. Eine Zusammenfassung ist in 3 angegeben. Einige dieser Vorzüge umfassen:
    • – relativ schnelle Startzeiten.
    • – Die Möglichkeit, Speicheranforderungen bezüglich speicherresistenter System zu reduzieren.
    • – Die Möglichkeit, X.500 auf einer SQL-Datenbank aufzubauen und dabei das Investment in Produkte, Erfahrungen und Prozesse im Umgang mit existierenden Systemen zu sichern.
    • – Die Möglichkeit, Leistung relativ unabhängig von der Größe und relativ unabhängig von der Komplexität der Datentypen zu erzielen. Jeder Datentyp wird allgemein behandelt. Jeder Datentyp hat auf demselben einen Index. Das Ergebnis der Indizierung ergibt die Möglichkeit effektiv im Directory zu suchen, ohne große Teile des Directorys in den Speicher zu laden. Im Gegensatz zu bekannten Systemen, in welchen entweder nur ein Index genutzt werden kann, um eine gegebene Anfrage zu befriedigen, oder große Bereiche von Informationen im System intensiv geladen und im Speicher durchsucht werden müssen.
    • – Die Möglichkeit, verschiedene Sprachen (zum Beispiel Spanisch, Hebräisch und Khanschi) zu unterstützen, welche eine Vielzahl unterschiedlicher, kritisch zu vergleichender Sequenzen aufweisen können, einzelne, doppelte oder andere Bitcharaktersätze können auch unterstützt werden.
    • – Verwendung eines Disk-basierten Modells zur Minimierung von Eingaben/Ausgaben und zur effektiven Abarbeitung von Eingaben/Ausgaben.
    • – Die Möglichkeit, komplexe X.500-Suchen auszuführen.
    • – Die Möglichkeit, X.500-Datenbanken zu erzeugen, und zwar von wesentlich größerer Größe als bisher möglich, ohne die Leistungsfähigkeit oder Robustheit zu beeinträchtigen. Die Datenbank kann klein oder groß (250000, 1 Million oder mehr Einträge) sein.
    • – Ein optimales Tabellendesign minimiert Verschwendung von Speicherraum.
    • – Die Möglichkeit Hunderte von Mannjahren von Erfahrungen in der Entwicklung relationaler Datenbanken auszunutzen und industriell erprobte Datenbanken mit bewiesener Zuverlässigkeit, Integrität, Sicherheit und Werkzeugen zur Entwicklung, hochleistungsfähiger Anwendungen auszunutzen.
  • Aufbauend auf diesem einzigartigen Lösungsweg, wird die folgende Offenbarung eine Anzahl von Erfindungen unter Bezugnahme auf 2A und 2B im Detail darstellen, wobei 2A und 2B schematisch einen Überblick des gegenwärtigen X.500-Systems geben. Die Tabellen und Spalten, Namen, die Anzahl der Spalten und die numerischen Werte werden auf einer beliebigen Basis zum Überblick angegeben. Die Anzahl der offenbarten Spalten gibt ein bevorzugtes ausführbares Beispiel wieder. Zusätzliche Spalten gehen der Verwendung der hier angegebenen Spalten nicht entgegen.
  • 1. PRINZIPIELLES DESIGN
  • Dem X.500-Stand der Technik war es bei der Implementierung nicht möglich, die relativ einfachen, strukturellen und betrieblichen Unterschiede zwischen den X.500-Anforderungen und den Funktionalitäten sowie SQL zu überwinden. Der X.500-Standard hat von Natur aus eine praktische Struktur, wohingegen SQL entworfen ist, um relational strukturierte Tabellen zu betreiben.
  • Für eine typische, relationale Datenbankanwendung ist die Natur der Daten gut bekannt, so bestehen zum Beispiel Tabellen aus einer Anzahl von Spalten, und jede Spalte enthält Daten bezüglich eines speziellen Datentyps (s. Tabelle B1). Die unterschiedlichen Datentypen, die gespeichert werden können, ist auf die Anzahl der Spalten der Tabelle begrenzt. Die Datentypen sind ebenso begrenzt, auf die Typen, die von der Tabelle unterstützt werden (zum Beispiel ein String, numerische Daten, Geld, Datum). Die Datenbank kann auch Daten speichern, die eine Form haben, die aus der Datenbank heraus selbst nicht verständlich sind, jedoch durch die Anwendung zum Beispiel binärer Daten verstanden werden kann.
  • Figure 00120001
    Tabelle B1: Arbeitnehmertabelle
  • Falls ein zusätzlicher Datentyp hinzugefügt werden muss (zum Beispiel mobile Telefonnummer), dann muss eine neue Spalte an die Tabelle angefügt werden. Dies kann Probleme verursachen, falls Änderungen der Datentabellen nicht einfach implementiert werden können. Weiterhin können sich dann, wenn der neue Datentyp nicht intensiv benutzt wird (zum Beispiel weniger als 1% der Organisation), signifikante, redundante Datenspeichermengen ergeben. Siehe Tabelle B2.
  • Figure 00130001
    Tabelle B2: Arbeitnehmertabelle
  • Eine Erfindung in der Anwendung von X.500 liegt darin, die Erweiterbarkeit von X.500-Attributen nach dem Stand der Technik:
    Figure 00130002
    wie oben beschrieben dadurch zu überkommen, dass diese Zeichen wie folgt dargestellt werden
    Figure 00130003
    wobei die letztere Darstellung eine erweiterbare Darstellung ist und daher an eine Implementierung mit SQL angepasst ist. Die letztere Darstellung ist als Metadaten bekannt. Der Metadatenwert kann binär sein.
  • Eine weitere Weiterentwicklung aufbauend auf dem obigen prinzipiellen Design ist die Anpassung des prinzipiellen Design an X.500. Diese Anpassung wurde realisiert durch die Bereit stellung einer Eigenschaftstabelle, in welcher Objektname und Ursprungsname dem prinzipiellen Design zugefügt werden.
  • Weitere Vorteile ergeben sich aus der oben beschriebenen Implementierung; umfassend:
    • a. Unabhängigkeit von der Komplexität eines Filters – die offenbarte Implementierung kann einen in SQL bereitgestellten Anfrageoptimierer verwenden, und daher gibt es keine Notwendigkeit, einen Anfrageoptimierer in jeder Eigenschaftsdatenbank, in welcher die vorliegende Erfindung angewendet wird, zu replizieren,
    • b. Unabhängigkeit von Größe – die beschriebene Implementierung kann skaliert werden,
    • c. Unabhängigkeit von der Tiefe eines Baums – die offenbarte Implementierung hat hierarchische Vergleichseigenschaften,
    • d. Leistungsfähigkeit – falls ein Index auf einen Spaltentyp gesetzt ist, dann ist jeder oder jeder Typ indiziert.
  • 2. KONZEPTIONELLES DESIGN
  • Der Stand der Technik hatte Schwierigkeiten in der Implementierung von X.500, da es nicht für Erweiterbarkeit, Objektorientierung und Hierarchie, welches Anforderungen an X.500 sind, strukturiert war.
  • Dies wird in Übereinstimmung mit der hier vorliegenden Erfindung dadurch adressiert, dass die Eigenschaftstabelle funktional zerlegt wird, und was in dem hier als konzeptionelles Design genannten Ergebnis mündet.
  • Das konzeptionelle Design liegt in der Bereitstellung von:
    • 1. Attributtabellen, wobei die Erweiterbarkeit dadurch adressiert wird, dass die Definition eines neuen Attributtyps in der Tabelle ermöglicht wird durch das Hinzufügen einer Spalte der Tabelle;
    • 2. Objekttabellen, welche die Attribute innerhalb eines jeden Objekts definieren; und/oder
    • 3. Hierarchietabellen, welche die Beziehungen zwischen den Objekten definieren.
  • Die Struktur der Tabellen können in Übereinstimmung mit den in 2A und 2B gezeigten Strukturen sein.
  • Weitere bevorzugte Aspekte der Erfindung liegen in Adressierungsproblemen von Datentoleranzen durch die Bereitstellung eines gegenwärtigen X.500-Systems für den Austausch von Wertespalten eines Objekts mit dem Wert "Norm" und dem Wert "Raw" Spalten und/oder mit dem Austauschen der RDN-Spalte in der Hierarchietabelle durch "NameNorm"-Spalten und "NameRaw"-Spalten.
  • Weiterhin wird die Schwierigkeit von Systemen nach dem Stand der Technik in der Bereitstellung passender Alias-Daten dadurch adressiert, dass in einem vorhandenen X.500-System eine "Alias"-Spalte in der Hierarchietabelle bereitgestellt wird. Die "Alias"-Spalte ist hervorgehoben, um anzuzeigen, dass der Eintrag ein Alias ist.
  • Eine weitere Verbesserung kann durch das Ersetzen der "Alias"-Spalte durch Alias-Spalten und A-EID-Spalten bereitgestellt werden. Eine A-EID stellt Informationen darüber bereit, wo die Alias-Punkte sind.
  • Eine weitere Verbesserung kann darin liegen, dass die "Ursprung"-Spalte in der Hierarchietabelle durch "Ursprung"-Spalten und "Pfad"-Spalten ersetzt werden.
  • Der "Pfad" adressiert das Problem der Implementierung von X.500-Suchen, mit Alias und Unterbäumen. Der "Pfad" hat wenigstens zwei einzigartige Eigenschaften: a) die Bestimmung der absoluten Position in der Hierarchie; und b) die Bestimmung, ob ein Eintrag in einem gegebenen Unterbaum ist, wird durch die Verwendung dessen Präfix durchgeführt.
  • 3. KONZEPTIONELLE METHODE
  • Eine Vielzahl einzigartiger Methoden zur Umsetzung des konzeptionellen Designs werden in der nachfolgenden, detaillierten Beschreibung offenbart, umfassend:
    • a) das Mappen von X.500-Diensten in eine Folge von SQL-Statements;
    • b) die Suchstrategie liegt in der Anwendung eines Filterns über den Suchbereich unter Verwendung der Pfadspalten oder Ursprungsspalten und/oder;
    • c) in der Handhabung mit Alias-Daten während der Navigation – wo ein Alias-Punkt in der A-EID-Spalte gespeichert ist;
    • d) in der Handhabung mit Alias-Daten während der Suche – Finden eines einzigartigen Satzes von Basisobjekten, welche Bereiche von Bäumen definieren, die durchsucht werden müssen, und dann Anwenden von b) auf jeden Bereich des Baums.
  • Eine weitere Erfindung ist realisiert durch die Verwendung der Attributtabelle für eingehende Daten, um in der AID-Form die X.500-Objekt-ID zu finden, und um ausgehende Daten aus der Datenbank zu lesen, und andersherum.
  • Weiterhin wird für jeden einkommenden, unterscheidenden Namen auf seine entsprechende EID navigiert, wobei dann jede Suche, wie von X.500 erfordert, durchgeführt wird.
  • Weiterhin kann eine jede Suche, Filter und Unterbaumsuche durch eine einzelne Pfadlösung unter Verwendung der Pfadspalte bereitgestellt werden. Eine Erfindung liegt in der Verwendung eines "Pfad"-Felds, um gleichzeitig einen beliebigen Filter über einen beliebigen Unterbaum anzuwenden. Die Komplikationen von Alias-Daten werden durch die Anwendung der oben beschriebenen Methode auf einen einzigartig aufgelösten Unterbaum angewendet.
  • Eine weitere einzigartige Methode liegt in der Speicherung des "Pfads" für jeden Eintrag als einen String. Jeder Pfad wird dann durch den Pfad und seinen ursprünglichen Eintrag vorbestimmt. Dies ist für den Filter im Suchdienst hilfreich.
  • 4. LOGISCHES DESIGN
  • Das logische Design basiert auf einem Dienst, der das konzeptionelle Design zerlegt, wodurch die Realisierung der X.500-Servicekomponenten unabhängig wird.
  • Die hieraus sich ergebenden Vorteile umfassen:
    • 1. Reduzierung der Anzahl von Indices je Tabelle, je mehr Tabellen bereitgestellt werden. Es hat sich herausgestellt, dass der erste Index der effektivste (Geschwindigkeit, Größe) ist und der zweite Index große Überhänge (Geschwindigkeit, Größe) aufweisen kann.
    • 2. Die Ermöglichung des Clusterns der Daten in den Tabellen. Das Clustern ergibt sich als Ergebnis des ersten Schlüssels (Speicherstruktur), und daher können Daten auf der Platte um deren Schlüssel herum organisiert werden. Zum Beispiel können für die "Such"-Tabelle Nachnamen zusammengeclustert werden.
    • 3. Management – kleinere Tabellen können einfacher gemanagt werden, zum Beispiel in einer schnelleren Erneuerung der Indices, im Sammeln von Statistiken, im Audit, im Backup usw.
    • 4. Verringerten Eingaben/Ausgaben – Verbesserungen in der Geschwindigkeit in Folge von kleineren Spalten, was mehr Spalten je Zeile bedeutet und daher weniger Eingaben/Ausgaben durchgeführt werden müssen.
  • 5. LOGISCHE METHODEN
  • In der folgenden Beschreibung wird eine Anzahl einzigartiger Methoden zur Anwendung der logischen Designtabellen beschrieben.
  • Zusätzlich liegt eine Methode im Zwischenspeichern der Attributstabellen. Daher werden (mit Ausnahme des anfänglichen Ladens) keine SQL-Statements in der Datenbank benötigt. Im vorhandenen X.500-System werden Umwandlungen im Speicher durchgeführt. Dies ermöglicht eine substantielle Geschwindigkeitsverbesserung.
  • Weiterhin wird die Validierung im Speicher durchgeführt, was ein Zurückrollen in der Datenbank überflüssig macht, das Zurückrollen ist sehr zeitintensiv und beansprucht das System.
  • Weiterhin wird für einen beliebigen Filter ein dynamisches SQL-Äquivalent gebildet. Dies ermöglicht beliebige Komplexität in X.500-Suchen.
  • Für Suchergebnisse verwendet das gegenwärtige System Satz-Orientierungs-Anfragen von SQL, um "Spalte zu einer Zeit" Bearbeitungen zu vermeiden. Als Folge können Suchergebnisse parallel im Speicher aufgebaut werden.
  • 6. PHYSIKALISCHES DESIGN
  • Neue Tabellen und neue Spalten werden eingeführt, um Beschränkungen in der Spaltenbreite und Schlüsselgröße zu überwinden und um Platzoptimierungen zu ermöglichen.
  • Der folgende Text ist eine Offenbarung von Ausführungsbeispielen der Erfindung:
  • 1. PRINZIPIELLES DESIGN
  • Unter Bezugnahme auf 2A adressiert das prinzipielle Design das grundlegende Problem der Darstellung der erweiterbaren, objektorientierten und hierarchischen Natur von X.500 in relationalen Tabellen. In diesem Abschnitt wird (mit Beispielen) beschrieben, dass das prinzipielle Tabellendesign durch eine einzelne Tabelle dargestellt werden kann, wie sie unten in Tabelle 1 dargestellt ist.
  • Figure 00190001
    Tabelle 1 – X.500-Eigenschaftstabelle
  • Innerhalb dieser und der folgenden Abschnitte sind alle Spaltennamen und deren Positionen in jeder Tabelle beliebig. Die Absicht besteht darin, das zu definieren, was sie enthalten und wie sie benutzt werden.
  • 1.1 Erweiterbarkeit
  • Für eine typische relationale Datenbankanwendung ist die Natur der Daten gut bekannt, so werden zum Beispiel die Tabellen aus einer Anzahl von Spalten bestehen und jede Spalte enthält Daten betreffend einen speziellen Datentyp (siehe Tabelle 1.1a). Die Tabelle ist selbstbeschreibend, so liegt zum Beispiel die Beziehung zwischen Datenobjekten, darin, dass sie in der selben Zeile angeordnet sind (das ist die Grundlage der relationalen Theorie).
  • Figure 00200001
    Tabelle 1.1a – Typische relationale Datenbank
  • Der obige Lösungsweg ist jedoch nicht erweiterbar, weil die Anzahl der unterschiedlichen Datentypen auf die Anzahl der Spalten je Tabelle beschränkt ist. Falls ein neuer Datentyp hinzugefügt werden muss (zum Beispiel die mobile Telefonnummer), dann muss eine neue Spalte an die Tabelle angefügt werden (siehe Tabelle 1.1b). Jede Anwendung, die auf diese Tabelle zugreift, muss upgedatet werden, um explizit darauf zuzugreifen.
  • Figure 00210001
    Tabelle 1.1b – Relationale Tabelle mit einer extra Spalte
  • In der Praxis bestehen auch andere Probleme. Falls ein neuer Datentyp nicht häufig verwendet wird (zum Beispiel weniger als 1% in der Organisation verfügt über eine mobile Telefonnummer), dann wird die Tabelle lückenhaft sein (zum Beispiel dann, falls eine gegebene Person über keine mobile Telefonnummer verfügt, dann wird der Zeilen/Spalten-Eintrag NULL sein). Weiterhin sind die Datentypen auf solche Typen beschränkt, die durch die Datenbank unterstützt werden (zum Beispiel String, numerisch, Geld, Datum, etc.).
  • Die Lösung liegt darin, die Datentypen als generic handzuhaben. Die vorliegenden Erfindung übernimmt die Methode der Darstellung beliebiger Attribute (zum Beispiel XOM[X/OPEN Objektmanagement] API [Anwendungsprogrammierungsinterface]) als eine Typ, Syntax, Wertkombination (s. Tabelle 1.1c).
  • Figure 00210002
    Tabelle 1.1c – Darstellung beliebiger Attribute
  • 1.2 Objektorientierung
  • X.500 definiert Objekte (zum Beispiel Personen, Organisationen, etc.), welche eine beliebige Anzahl von "Attributen" enthalten können. Da viele Objekte in der Tabelle auftreten können müssen, ist ein Mechanismus erforderlich, jedes Objekt voneinander zu unterscheiden. Eine Spalte "Objektname" wird für diesen Zweck an die Tabelle angefügt (siehe Tabelle 1.2a).
  • Figure 00220001
    Tabelle 1.2a – Darstellung von Objekten mit beliebigen Werten
  • Die oben beschriebene Methode ermöglicht es, jede Anzahl von Attributen einem Eintrag zuzuordnen. Die Attribute können von beliebiger Komplexität sein (zum Beispiel kann eine mehrzeilige, postalische Adresse gehandelt werden). Da die Anzahl der Spalten fest ist, können neue Attribute zu jedem Objekt hinzugefügt werden, ohne dass die Anwendung neu definiert werden muss. Falls ein neues Attribut hinzugefügt wird, so wird eine Anwendung, welche den Eintrag liest, eine extra Zeile zurückbekommen.
  • 1.3 Hierarchie
  • Ein Verfahren zur Darstellung hierarchischer Systeme (zum Beispiel Teile-Explosion) liegt in der Verwendung einer Ursprungs/Kind-Kombination (siehe Tabelle 1.3a).
  • Figure 00230001
    Tabelle 1.3a – Teile-Explosion-Hierarchie
  • X.500 definiert seine Objekte so, dass sie hierarchisch sind. Die Beziehungen zwischen Objekten folgt einer Baumstruktur, wobei jedes Objekt ein Ursprungsobjekt und jedes Ursprungsobjekt ein oder mehrere Kinder aufweisen kann. Diese Beziehung kann in einer allgemeinen Eigenschaftstabelle dargestellt werden, indem eine Spalte "Ursprungsname" hinzugefügt wird, die verwendet wird, um den Namen des Ursprungsobjekts zu speichern (siehe Tabelle 1.3b).
  • Figure 00240001
    Tabelle 1.3b – X.500-Eigenschaftstabelle
  • Es sollte bemerkt werden, dass die Wurzel des Baums keinen Ursprung hat. Falls also Chris und Alana beide für Datacraft arbeiten und Datacraft ein Kind der Wurzel ist, dann kann man sagen, dass Chris und Alana Kinder von Datacraft sind und dass Datacraft der Ursprung von Chris und Alana ist.
  • 2. KONZEPTIONELLES DESIGN
  • In Abschnitt 1 wurde gezeigt, dass eine einzelne Eigenschaftstabelle die erweiterbare, objektorientierte und hierarchische Natur von X.500 darstellen kann (s. Tabelle 2a).
  • Figure 00250001
    Tabelle 2a – Eigenschaftstabelle
  • Unter Bezugnahme auf 2a wird in diesem Abschnitt gezeigt, dass die volle X.500-Funktiohalität dargestellt werden kann, indem drei Tabellen benutzt werden, wie sie unten gezeigt werden (s. Tabelle 2b und 2A). Hierarchietabelle
    Figure 00250002
    Objekttabelle
    Figure 00250003
    Attributtabelle
    Figure 00250004
    Tabelle 2b – Volles, konzeptionelles Design
  • Das konzeptionelle Design adressiert die Hauptprobleme bei der Implementierung der vollen X.500-Funktionalität in relationalen Tabellen. Da jeder Hauptdesigngesichtpunkt dargestellt ist, werden Beispiele bereitgestellt, um die Lösung aufzuzeigen.
  • 2.1 Funktionelle Zergliederung
  • Die Eigenschaftstabelle (2A) kann in einzelne Tabellen zergliedert werden, welche die hierarchische, objektorientierte und erweiterbare Natur von X.500 Wiederspiegeln, vorzugsweise wie folgt:
    • – eine Hierarchietabelle, die die strukturelle Beziehung zwischen den Objekten definiert,
    • – eine Objekttabelle, die die Attributwerte innerhalb jedes Objekts definiert,
    • – eine Attributtabelle, die die unterschiedlichen Attributwerte definiert.
  • Diese Tabellen ergeben sich aus einem Prozess, der als funktionale Zergliederung bezeichnet wird.
  • Um das Problem der Korrelierung von Beziehungen zwischen Tabellen zu adressieren, werden, beliebige, numerische Identifikatoren eingeführt. Der EID oder "Entry-Identifikator" korreliert jedes Objekt mit seiner hierarchischen Information. Der AID oder "Attribut-Identifikator" korreliert jeden Wert in der Objekttabelle mit dessen Attributinformation.
  • Das Design wird als sehr effizient bewertet, weil die sich wiederholenden Gruppen in der Eigenschaftstabelle (Typ-Syntax und Objektname-Ursprungsname) entfernt worden sind. Weiterhin sind für SQL die Verbindungsspalten einfache Integerwerte.
  • Hierarchietabelle
    Figure 00270001
  • Objekttabelle
    Figure 00270002
  • Attributtabelle
    Figure 00270003
    Tabelle 2.1 – Grundlegendes, konzeptionelles Design
  • 2.2 X.500-Attribute
  • X.500-Attribute verfügen über einen Protokoll-Identifizierer, welcher transferiert wird, wenn irgendwelche Daten zwischen Endsystemen ausgetauscht werden. Diese Identifikatoren sind international definiert und werden als Objekt-Identifikatoren bezeichnet (zum Beispiel 2.5.4.4 bedeutet einen Nachname-String). Daher kann eine Spalte "Objekt-ID" an die Attributtabelle hinzugefügt werden, so dass ein Austausch zwischen X.500-Objekt-Identifikatoren und den internationalen Attribut-Identifikatoren durchgeführt werden kann.
  • Zusätzlich ermöglicht es X.500 einem Attribut eine beliebige Anzahl von Werten aufzuweisen (zum Beispiel kann eine mobile Telefonnummer einfach wie eine zweite Telefonnummer gehandhabt werden). Daher wird ein "Werte-Identifikator" oder VID eingeführt, um Werte innerhalb eines Attributs in der Objekttabelle zu identifizieren.
  • Hierarchische Tabelle
    Figure 00280001
  • Objekttabelle
    Figure 00290001
  • Attributtabelle
    Figure 00290002
    Tabelle 2.2 – Konzeptionelles Design mit X.500-Attributen
  • 2.3 X.500-Namen
  • In X.500 verwendet jeder Eintrag eine oder mehrere seiner Attributwerte (unterscheidende Werte) zur Benennung der Einträge. Eine "Disting" Spalte wird an die Objekttabelle hinzugefügt, um sich unterscheidende Werte zu kennzeichnen.
  • Die sich unterscheidenden Werte kombinieren sich um einen relativen sich unterscheidenden Namen (RDN) zu bilden, welcher den Eintrag benennt. Eine "Name" Spalte in der hierarchischen Tabelle speichert den RDN. Dies ist eine Optimierung, die die Notwendigkeit aufhebt, den RDN aus den sich unterscheidenden Werten in der Objekttabelle zu konstruieren.
  • Ein Entry wird einzigartig benannt durch einen unterscheidenden Namen (DN), der aus allen RDNs seiner Ancestors ausgehend unten von der Wurzel und dem RDN seines Objekts selbst besteht. Eine Erfindung liegt darin, eine Spalte "Pfad" der Hierarchietabelle hinzuzufügen, welche die absolute Position eines Eintrags in dem Baum als eine Liste von EIDS definiert. Der Pfad verfügt über drei wichtige Eigenschaften:
    • 1) Er ermöglicht die schnelle Konstruktion von DNs, (die EID-Liste definiert alle RDNs).
    • 2) Er ermöglicht schnelle Unterbaum-Suchen (s. konzeptionelle Methoden).
    • 3) Er ist unabhängig von seiner DN (jede der RDNs in der DN kann umbenannt werden, ohne den Pfad zu beeinflussen).
  • Hierarchietabelle
    Figure 00300001
  • Objekttabelle
    Figure 00310001
  • Attributtabelle
    Figure 00310002
    Tabelle 2.3 – Konzeptionelles Design mit X.500-Attributen und Namen
  • 2.4 X.500-Aliases
  • X.500 hat auch ein Konzept von "Aliases". Ein Alias-Objekt zeigt effektiv auf einen anderen Eintrag und stellt daher einen alternativen Namen für diesen Eintrag bereit. Daher wird ein "Alias"-Flag an die Hierarchietabelle hinzugefügt. Wenn ein Alias während einer Navigation entdeckt wird (zum Beispiel enthält das bereitgestellte DN einen Alias), dann muss der Alias-Wert aus der Objekttabelle gelesen werden. Dieser Alias-DN muss dahin gelöst werden, wohin das Alias zeigt, bevor die Navigation mit dem Originaleintrag fortgesetzt werden kann.
  • Eine Erfindung liegt in der Verwendung einer Spalte "Alias EID" oder einer A-EID, um zu speichern, "wohin das Alias" zeigt. Dies beseitigt die Notwendigkeit, wiederholend durch ein Alias zu navigieren.
  • Hierarchietabelle
    Figure 00320001
  • Objekttabelle
    Figure 00330001
  • Attributtabelle
    Figure 00330002
    Tabelle 2.4 – Konzeptionelles Design mit X.500-Attributen, Namen und Aliases
  • 2.5 X.500-Datentoleranz
  • Jedes X.500-Attribut hat eine (international definierte) Syntax. X.500-Attributsyntaxes definieren, wie ein Attribut gehandhabt werden soll. In allen String-Syntaxes (zum Beispiel printable, numeric, usw.) sollte überflüssiger Raum ignoriert werden. In einigen Syntaxes ist der Fall nicht wichtig (zum Beispiel Fall ignoriere String und Fall ignoriere Liste) und so können die Namen "Chris Masters", "Chris MASTERS" und "ChRis MaSTeRS" als identisch angesehen werden.
  • Um Vergleiche auszuführen (zum Beispiel Suche nach einem speziellen Wert), können die Syntax-Regeln angewendet werden, um eine normierte Form zu erzeugen (zum Beispiel "CHRIS MASTERS"). Falls diese normierte Form in der Datenbank gespeichert ist, dann können jegliche Abweichungen in der Eingabeform effektiv beseitigt werden, und eine exakte Übereinstimmung kann verwendet werden, was notwendig ist, wenn SQL verwendet wird.
  • Sowohl die normierten Daten als auch die "Raw" Daten werden in der Datenbank gespeichert. Die "Raw" Daten sind notwendig, damit die Benutzer die Daten exakt in dem Format empfangen können, wie sie ursprünglich eingegeben wurden. Daher wird die Spalte "Name" in der Hierarchietabelle zur Spalte "NamRaw" und eine Spalte "NameNorm" wird hinzugefügt. Ähnlich wird die Spalte "Wert" in der Objekttabelle zur Spalte "WertRaw" und eine Spalte "WertNorm" wird hinzugefügt.
  • Hierarchietabelle
    Figure 00350001
  • Objekttabelle
    Figure 00350002
  • Attributtabelle
    Figure 00360001
    Tabelle 2.5 – Volles, konzeptionelles Design
  • 3. KONZEPTIONELLE METHODEN
  • Dieser Abschnitt führt in die grundlegende X.500-Dienste ein und zeigt, wie das in Tabelle 3a oder 2A gezeigte, konzeptionelle Tabelledesign, geeignet ist, um X.500-Dienste und deren Komplexitäten zu implementieren.
  • Hierarchische Tabelle
    Figure 00360002
  • Objekttabelle
    Figure 00360003
  • Attributtabelle
    Figure 00360004
    Tabelle 3a – Konzeptionelles Tabellendesign
  • Die Beispiel-Hierarchie, gezeigt in Tabelle 3, wird verwendet, um die Dienste zu verdeutlichen. Jeder Name in dem Diagramm gibt einen Objekteintrag in der Datenbank wieder. Das Dreieck gibt einen Alias-Eintrag wieder, und die gestrichelte Linie zeigt die Verbindung zwischen dem Alias-Eintrag und dem Objekt, auf das es zeigt. Die Nummern benachbart zu jedem Eintrag sind die Eintrag-IDs.
  • Im Beispiel verfügt der Eintrag "1" über eine RDN mit dem Wert "Datacraft", der Eintrag "11" verfügt über eine RDN mit einem Wert "Sales", der Eintrag "20" verfügt über eine RDN mit dem Wert "Network Products" und der Eintrag "31" verfügt über eine RDN mit dem Wert "Alana Morgan". Die DN des Eintrags "31" ergibt sich aus einer Folge der RDNs, nämlich "Datacraft", "Sales", "Network Products", "Alana Morgan".
  • Der Alias-Eintrag "Datacraft/Networks" zeigt auf den Eintrag "Datacraft", "Sales", "Network Products". Bei der Navigation zu diesem Eintrag würde der Navigationsprozess den Alias-Eintrag finden, dann die DN des Objekts finden, durch welches durch den Alias gezeigt wird, und dann ausgehend von der Wurzel auf den Objekteintrag navigieren, welcher eine EID von "20" und einen Pfad von "1.11.20." wiedergibt.
  • Figure 00370001
    Tabelle 3b – Eintragbaum
  • Unten sind Beispieltabellen aufgeführt, die zeigen, wie Daten gespeichert sind. Die Hierarchietabelle (Tabelle 3c) zeigt, wie die Einträge in der Beispielhierarchie gespeichert sind. Die Attributtabelle (Tabelle 3e) zeigt, Attribute, die in dem Eintrag "Datacraft/Sales/Network Products/Chris Masters" enthalten sind. Die Objekttabelle (Tabelle 3d) zeigt, wie die Werte von diesen Attributen gespeichert sind.
  • Figure 00380001
    Tabelle 3c – Beispiel Hierarchietabelle
  • Figure 00380002
    Tabelle 3d – Beispiel Objekttabelle
  • Figure 00390001
    Tabelle 3e – Beispiel Attributtabelle
  • Unterscheidende Namen
  • Für den in der Beispiel-Objekttabelle (Tabelle 3d) gezeigten Eintrag zwei der Attribute, common name und Nachname, sind sich unterscheidende Werte (oder Namenswerte), welche in Kombination den RDN für den Eintrag bilden. Dieser RDN ist in der Hierarchietabelle gespeichert.
  • Attribute mit mehreren Werten
  • In X.500 ist es für ein Attribut zulässig, mehrere Werte aufzuweisen. Die VID-Spalte wird benutzt, um zwischen Werten eines Attributs zu unterscheiden. Im Beispiel der Objekttabelle ist die Telefonnummer mit mehreren Werten.
  • 3.1 Mapping-Dienste in SQL
  • 3.1.1 Attributtypen und Werte
  • Alle durch einen X-500-Service bereitgestellten Daten sind als eine Liste von Objekt-IDs und deren zugehörigen Werten bereitgestellt. Dies muss in AIDS (unter Verwendung der Attributtabelle) konvertiert werden und in normierte Werte (unter Verwendung der Objekttabelle) zur Verwendung durch die X.500-Anwendung. Die Datenbank gibt Daten als AIDS und Raw- Werte zurück, die dann in Objekt-IDs und ihre zugehörigen Werte in dem X.500-Ergebnis konvertiert werden müssen.
  • 3.1.2 Navigation
  • Jeder X.500-Dienst stellt einen unterscheidenden Namen bereit, der in eine EID für Verwendung durch eine X.500-Anwendung konvertiert ist. Wenn die Anwendung einen Dienst abarbeitet, gibt er ein oder mehrere EIDS zurück. Diese EIDS können kann zurück in unterscheidende Namen in dem X.500-Ergebnis zurückübersetzt werden.
  • Alle X.500-Dienste ruhen auf der Navigation des Directory-Baums. Um auf einen speziellen Eintrag zu navigieren, wird die folgende Prozedur durchgeführt:
    • – Ist die DN für den Eintrag gegeben, so ermittle den Eintrag in der Hierarchietabelle, der die RDN aufweist, die der ersten RDN in der DN entspricht.
    • – Speichere die EID.
    • – Ermittele rekursiv den Eintrag, der eine RDN aufweist, die gleich der nächsten RDN in der DN ist und die einen Ursprung hat, der gleich der gespeicherten EID ist.
  • Beispiel
  • Navigiere auf den Eintrag "Datacraft/Sales/Network Products/Peter Evans". Dies resultiert in einer Anzahl von Auswahl-Statements, wobei jede zurückgegebene EID als Wert des Ursprungs im nächsten Statement verwendet wird.
  • Wähle EID aus HIERARCHIE
    Wo Ursprung = 0 und RDN = "DATACRAFT"
    Wähle EID aus HIERARCHIE
    Wo Ursprung = 1 und RDN = "SALES"
    Wähle EID aus HIERARCHIE
    Wo Ursprung = 11 und RDN = "NETWORK PRODUCTS"
    Wähle EID aus HIERARCHIE
    Wo Parent = 20 und RDN = "PETER EVANS"
  • 3.1.3 Lesen
  • Ausgewählte Attribute, die gelesen werden, können bereitgestellt werden. Nur die Werte dieser Attribute (falls sie in dem Eintrag vorliegen) werden zurückgegeben.
  • "Typen only" können als Leseoption gewählt werden, wobei in diesem Fall keine Werte zurückgegeben werden. Alle in einem Eintrag vorliegenden Typen, oder die ausgewählten, werden zurückgegeben werden.
  • Navigieren zu dem Eintrag, der gelesen werden soll. Speichere die EID. Lese in der Objekttabelle die Werte von allen Spalten, die der gespeicherten EID entsprechen.
  • Beispiel
  • Lese den Eintrag "Datacraft/HQ/Network Products" und gebe alle Typen und Werte aus.
  • Navigiere zu dem Eintrag (wie in 3.1.2) und dann;
    wähle AID, ValueRaw aus Objekt
    wo EID = 20.
  • 3.1.4 Vergleichen
  • Die Vergleichsfunktion gibt ein "übereinstimmendes" oder "nicht übereinstimmendes" Ergebnis zurück. Der Raw-Wert ist ein Eingang, die Vergleichsfunktion wird jedoch unter Verwendung des normierten Werts durchgeführt.
  • Navigiere auf den erforderten Eintrag. Speichere die EID. Teste die Objekttabelle nach einem passenden Wert in allen Spalten, die der gespeicherten EID und dem spezifizierten AID entsprechen.
  • Beispiel
  • Vergleiche die Telefonnummer "03 272 9256" mit dem Eintrag "Datacraft/Sales/Network Products/Chris Masters".
  • Navigiere zu dem Eintrag und dann;
    wähle ValueRaw aus dem Objekt
    wo EID = 30
    und AID = 20
    und ValueNorm = "03 727 9456".
  • Falls ein Wert ausgewählt wird, gebe "übereinstimmend" zurück, anderenfalls gebe "nicht übereinstimmend" zurück.
  • 3.1.5 Liste
  • Navigiere auf den erforderlichen Eintrag. Speichere die EID. In der Hierarchietabelle gebe die RDNs für alle Spalten mit einem Ursprung entsprechend der gespeicherten EID zurück.
  • Beispiel
  • Liste aus dem Eintrag "Datacraft/Sales".
  • Navigiere auf den Eintrag und dann;
    wähle NameRaw aus Hierarchie
    wo Ursprung = 11.
  • 3.1.6 Füge Eintrag hinzu
  • Navigiere auf den erforderlichen Ursprungseintrag. Speichere die EID des Ursprungs. Füge eine neue EID in der Hierarchietabelle hinzu und füge Spalten in der Objekttabelle für jeden Wert im neuen Eintrag hinzu.
  • Beispiel
  • Füge einen neuen Eintrag unter dem Eintrag "Datacraft/Sales/ Network Products" hinzu.
  • Navigiere zu dem Eintrag und dann;
    füge ein in Objekt
    (EID, AID, VID, Disting, ValueNorm, ValueRaw)
    Werte (33, 3, 1, 1, EDWIN MAHER, Edwin Maher)
    und
    füge ein in Hierarchie
    (EID, Urspruch, Pfad, Alias, A-EID, NameNorm, NameRaw)
    Werte (33, 20, 1.11.20.33., 0, 0, EDWIN MAHER, Edwin Maher).
  • 3.1.7 Entferne Einträge
  • Navigiere auf den erforderlichen Eintrag, prüfe, ob der Eintrag im Baum ein Blatt ist (zum Beispiel prüfe, dass es keine Untereinträge in dem Baum gibt). Speichere die EID. Entferne den Eintrag aus der Hierarchietabelle. Entferne in der Objekttabelle alle Spalten, die der gespeicherten EID entsprechen.
  • Beispiel
  • Entferne einen Eintrag (mit EID = 33) unter dem Eintrag "Datacraft/Sales/Network Products".
  • Navigiere auf den Eintrag und dann;
    entferne aus Objekt
    wo EID = 33
    und
    entferne aus Hierarchie
    wo EID = 33.
  • 3.1.8 Ändere Eintrag ab
  • Navigiere auf den erforderlichen Eintrag. Speichere die EID. Füge in der Objekttabelle zu, entferne oder modifiziere Spalten in Übereinstimmung mit der gespeicherten EID.
  • Beispiel
  • Modifiziere den Eintrag "Datacraft/Sales/Network Products/Alana Morgan".
  • Füge den Wert hinzu – Titel = "Branch Manager"
    Navigieren auf den Eintrag und dann;
    wähle aus EID, AID, VID, ValueNorm aus dem Objekt
    wo EID = 31
    überprüfe die zurückgegebenen Spalten für ein Attribut aus Titel, falls keines existiert, kann das Attribut hinzugefügt werden, anderenfalls muss das Attribut überprüft werden, um festzustellen, falls es mehrere Werte aufweisen kann und ob es bereits existiert.
  • Füge ein in Objekt
    (EID, AID, VID, Disting, ValueNorm, ValueRaw)
    Werte (31, 12, 1, 0, BRANCH MANAGER, Branch Manager).
  • 3.1.9 Ändere RDN ab
  • Navigiere auf den erforderlichen Eintrag. Prüfe, dass der neue Name (RDN) nicht existiert im gegenwärtigen Level des Unterbaums (zum Beispiel, dass die neue DN unterscheidungskräftig ist). Speichere die EID. Modifiziere den Eintrag in der Hierarchietabelle und Objekttabelle.
  • Beispiel
  • Modifiziere die RDN des Eintrags "Datacraft/Sales/Network Products/Chris Masters" in "Christine Masters".
  • Navigiere auf den Eintrag und dann;
    wähle EID aus Hierarchie
    wo Ursprung = 20
    und ValueNorm = "CHRISTINE MASTERS".
  • Falls keine Werte zurückgegeben werden, kann die neue RDN eingefügt werden. Setze zuerst die alte RDN auf einen nicht-unterscheidungskräftigen Wert.
  • Update Objekt
    setze Disting = 0
    wo EID = 30 und ValueNorm "CHRIS"
    und
    update Hierarchie
    setze NameNorm = "CHRISTINE MASTERS" und
    setze NameRaw = "Christine Masters"
    wo EID = 30
    und
    füge ein in Objekt
    (EID, AID, VID, Disting, WertNorm, WertRaw)
    Werte (30, 3, 1, 1, "CHRISTINE", "Christine").
  • 3.2 Suchstrategie
  • Der leistungsfähigste und nutzvollste X.500-Dienst ist der Suchdienst. Der Suchdienst erlaubt es, einen beliebig komplexen Filter über einen Bereich eines Directory-Informationsbaums (den Suchbereich) anzuwenden.
    • – Ein Filter ist eine Kombination einer oder mehrerer Filtergesichtspunkte, verknüpft durch die Operatoren AND, OR und NOT. Zum Beispiel; Nachname = "Masters" und Titel = "Sales Manager".
    • – Der Suchbereich ist ein Abschnitt des Baums, der durch die Suche abgedeckt wird (Basis-Objekt-ausschließlich, Ein-Level oder Gesamt-Unterbaum).
  • Eine Technik zum Lösen von Suchen liegt in der Anwendung des Filters und dann in der Überprüfung, ob in dem Suchbereich irgendwelche übereinstimmenden Einträge vorliegen. In diesem Fall ist ein Filter auf den gesamten Baum anzuwenden und EIDS für alle Spalten, die mit dem Filter übereinstimmen, werden zurückgegeben. Dann wird für jede gefundene EID eine Schrittsuche durch die Hierarchie durchgeführt, um zu überprüfen, ob der Eintrag ein Unterordnung eines Basisobjekts ist (zum Beispiel hat der Eintrag einen Ursprung/Urursprung/..., der das Basisobjekt ist). Falls die Anzahl der Übereinstimmungen groß ist und der Unterbaum klein ist, ist dies sehr ineffizient. Diese Technik trägt nicht den Aliases Rechnung, weil ein Alias kein Ursprung für ein Objekt ist, auf das es zeigt, und weil viele Aliases auf ein einzelnes Objekt zeigen können.
  • Eine zweite Strategie liegt darin, eine Liste aller EIDS in dem Suchbereich zu erhalten und dann den Filter auf diese EIDS anzuwenden. Falls ein Alias aufgelöst wird, das außerhalb des ursprünglichen Suchbereichs zeigt, dann wird der Un terbaum, auf den durch das Alias gezeigt wird, erweitert und die EIDs in dem Unterbaum werden an die Liste angehängt. Der Filter wird dann auf die erweiterten EIDs angewendet. Dies ist ziemlich schlecht, falls der Suchbereich groß ist.
  • Eine Erfindung liegt in der gleichzeitigen Anwendung des Filters über dem Suchbereich (anstelle der sequentiellen Anwendung wie in den beiden obigen Methoden beschrieben). Dies wird als Single-Pass-Lösung bezeichnet. Dieses Verfahren ist geeignet, um eine merkliche Leistungssteigerung über den obigen Methoden bereitzustellen, weil die Spalten, die empfangen werden, die sind, die sowohl den Filter als auch die Umfangsanforderungen der Suche erfüllen.
  • Bei Ausführung einer einstufigen Suche, wird der Filter auf alle Einträge angewandt, die einen Ursprung aufweisen, der dem EID des Basisobjekts entspricht (zum Beispiel; Suche wo Ursprung = 20 wird den Filter auf die Einträge 30, 31 und 32 anwenden).
  • Bei der Ausführung einer Unterbaumsuche wird der Pfad verwendet, um die Suche auf den Suchbereich auszudehnen. Der "Pfad" für jeden Eintrag ist eine String von Zahlen (zum Beispiel "1.10.50.222.", der anzeigt, dass der Eintrag 222 einen Ursprung von 50 hat, einen Urursprung von 10 und einen Ururursprung von 1). Der Pfad verfügt über die einzigartige Eigenschaft, dass der Pfad eines jeden Eintrags ein Präfix des Pfads für alle Einträge ist, die dem Eintrag untergeordnet sind. Der Pfad eines Eintrags bildet das Präfix des Pfads für alle Einträge im Unterbaum unterhalb des Eintrags. Daher erhält man, wenn man eine Unterbaumsuche ausführt, das Basisobjekt des Unterbaums und dann wird der Filter auf alle Einträge angewendet, die einen durch den Pfad des Basisobjekts be reitgestelltes Präfix aufweisen (zum Beispiel; zur Suche nach allen Einträgen unter "Sales" wird eine Suche durchgeführt, wo der Pfad entspricht 1.1.%).
  • Basisobjektsuche:
  • Navigiere auf das Basisobjekt. Speichere die EID. Lese in der Objekttabelle normierte Werte der Spalten, die der gespeicherten EID entsprechen, wo ein Filterkriterium erfüllt ist, zum Beispiel Telefon-Präfix = "727".
  • Beispiel
  • Suche nach dem Basisobjekt "Datacraft/Sales/Network Products" für einen Eintrag mit dem Nachname = "Morgan", unter Verwendung einer "Base-Object-Only"-Suche.
  • Navigier auf das Basisobjekt und dann;
    wähle AID, ValueRaw aus Objekt
    wo EID = 20 und AID = 4
    und NameNorm = "MORGAN".
  • Einstufige Suche:
  • Navigiere auf das Basisobjekt. Speichere die EID. Gebe eine Liste von EIDs aus, welche eine Ursprungs-EID in Übereinstimmung mit der gespeicherten EID (in der Hierarchietabelle) haben und Werte aufweisen, die das Filterkriterium (Objekttabelle) erfüllen. Lese in der Objekttabelle normierte Werte für die zurückgegebenen EIDS aus.
  • Beispiel
  • Suche aus dem Basisobjekt "Datacraft/Sales/Network Products" für einen Eintrag mit dem Nachnamen = "MORGAN", verwende eine "One-Level-Only" Suche.
  • Navigiere auf das Basisobjekt und dann;
    wähle H.EID aus Hierarchie h, Objekt 0
    wo Ursprung = 20 und AID = 4 und NameNorm = "MORGAN"
    und H.EID gleich O.EID
    dann platziere die zurückgegebenen EIDS in die EID-Liste und
    wähle AID, ValueRaw aus Objekt
    wo EID in [EID-Liste].
  • Unterbaumsuche:
  • Navigiere auf das Basisobjekt. Speichere die EID. Gebe die Liste von allen EIDs zurück mit einem Pfad entsprechend dem Basisobjekt (Hierarchietabelle) und Werten, die das Filterkriterium (Objekttabelle) erfüllen. Lese in der Objekttabelle die normierten Werte für die zurückgegebenen EIDs.
  • Beispiel
  • Suche aus dem Basisobjekt "Datacraft/Sales/Network Products" für einen Eintrag mit dem Nachnamen = "MORGAN", unter Verwendung einer "Whole-Subtree"-Suche.
  • Navigiere auf das Basisobjekt und dann;
    wähle H.EID aus Hierarchie h, Objekt O
    wo Pfad ähnlich "1.11.20%" und AID = 4
    und NameNorm = "MORGAN"
    und H.EID = O.EID.
  • Dann platziere die zurückgegebenen EIDs in die EID-Liste und
    wähle AID, ValueRaw aus Objekt
    wo EID in [EID-Liste].
  • 3.3. Aliases und Navigation
  • Aliases werden während der Navigation aufgelöst, falls das "Don't-Dereference-Alias" Zeichen nicht gesetzt ist und der Dienst kein Update-Dienst (add, delete, modify, modify RDN) ist.
  • Falls ein Alias während der Navigation erkannt wird, muss das Alias aufgelöst werden. Das bedeutet, dass das Objekt erhalten werden muss, auf das das Alias zeigt. Zuerst wird die A-EID-Spalte der Hierarchietabelle überprüft. Falls A-EID 0 ist, so muss das Objekt, auf das das Alias zeigt, aus der Objekttabelle erhalten werden, und das Objekt muss dann darauf navigiert werden und die sich ergebene EID muss in der A-EID-Spalte gespeichert werden. Falls dies erfolgreich durchgeführt wird, kann das Verbleibende des Pfads navigiert werden. Durch das Speicherns des EID des Alias-Objekts in der A-EID-Spalte der Hierarchietabelle ist es möglich, das Navigieren auf Alias-Objekte zu vermeiden. Hierdurch kann Zeit gespart werden, insbesondere falls die Alias-Objekte sich in einem niederen Level der Hierarchie befinden.
  • 3.4 Aliases und Suche
  • Aliases werden während der Suche dereferenziert, falls das "Search-Aliases-Zeichen" im Suchkriterium gesetzt ist. Die Leistung des Suchdienstes während der Dereferenzierung der Aliases ist ein zweistufiger Prozess. Zuerst definiert man den Suchbereich und wendet den Filter auf die Einträge im Suchbereich an. Dereferenzierte Aliases als Teil des Suchdienstes können den Suchbereich, auf den der Filter angewendet wird, aufweiten. Sie schränken auch den Suchbereich ein, indem alle dereferenzierten Aliases aus dem Suchbereich ausgeschlossen werden.
  • Aliases und einstufige Suche
  • Falls Aliases als Teil einer einstufigen Suche dereferenziert werden und ein Alias-Eintrag gefunden wird, muss das Alias aufgelöst werden (unter Verwendung der Objekttabelle oder der A-EID). Das Alias-Objekt wird dann dem Suchbereich hinzugefügt, auf welchen der Filter angewendet wird. In einer einstufigen Suche, in welcher Aliases gefunden werden, wird der Suchbereich aus Nicht-Alias-Einträgen bestehen, die direkt dem Basisobjekt und allen dereferenzierten Aliases untergeordnet sind.
  • Aliases und Unterbaumsuche
  • Falls Aliases als Teil einer gesamten Unterbaumsuche dereferenziert werden und ein Alias-Eintrag gefunden wird, muss dieser Alias-Eintrag aufgelöst werden (unter Verwendung der Objekttabelle oder der A-EID) und dieses EID muss dann als ein anderes Basisobjekt behandelt werden, es sei denn es ist Teil eines bereits abgearbeiteten Unterbaums.
  • Wenn Aliases während einer Suche dereferenziert werden, kann die "Pfad"-Spalte genutzt werden, um Alias-Entries innerhalb einer Unterbaum-Verzweigung zu finden. Falls ein Alias-Entry gefunden wird, der außerhalb des gegenwärtigen Unterbaums zeigt, dann kann der Unterbaum, auf den durch das Alias gezeigt wird, auch nach Aliases durchsucht werden. Eine Eigenschaft der hierarchischen Baumstruktur liegt darin, dass jeder Unterbaum durch ein einzigartiges Basisobjekt einzigartig repräsentiert wird (zum Beispiel überlappen sich Unterbäume nicht). Wenn eine Unterbaumsuche durchgeführt wird, wird eine Liste von Basisobjekten aufgebaut, die einzigartige Unterbäume definieren. Falls keine Aliases gefunden werden, wird diese Liste lediglich ein Basisobjekt enthalten. Falls ein Alias gefunden wird, das außerhalb des bearbeiteten Unterbaums zeigt, wird ein Alias-Objekt zu der Liste des Basisobjekts hinzugefügt (es sei denn, das eine oder mehrere der Basisobjekte den Alias-Objekt untergeordnet sind, wobei in diesem Fall, die untergeordneten Basisobjekte durch das Alias-Objekt ersetzt werden). Der Suchbereich wird daher Nicht-Alias-Entries umfassen, die einen Pfad aufweisen, dessen Präfix durch den Pfad eines oder mehrerer Basisobjekte bestimmt wird.
  • 4. LOGISCHES DESIGN
  • Obwohl das konzeptionelle Design (s. Tabelle 4a) ausreichend ist, um die X.500-Funktionalität zu implementieren, können weitere Leistungsverbesserungen erzielt werden.
  • Hierarchische Tabelle
    Figure 00520001
  • Objekttabelle
    Figure 00520002
  • Attributtabelle
    Figure 00520003
    Tabelle 4a – Konzeptionelles Design
  • Leistungssteigerungen in diesem konventionellen, relationalen Design können erzielt werden, weil Annahmen über die Daten getroffen werden können – die Daten sind im Wesentlichen fi xiert zu der Zeit, zu der die Anwendung entworfen wird. In X.500 ist keine der Datentypen bekannt. Es können jedoch Leistungsverbesserungen erzielt werden, weil Annahmen über die Dienste getroffen werden können – diese sind zu der Zeit, zu der die X.500-Anwendung entworfen wird, bekannt.
  • Unter Bezugnahme auf 2B liegt eine Erfindung darin, zu erkennen, dass jede Tabelle um eine Hauptdienst-Beziehung herum organisiert werden kann (anstelle der Organisation um eine Hauptdaten-Beziehung herum wie nach dem konventionellen, relationalen Design). Es soll gezeigt werden, dass die obigen Tabellen in eine Anzahl kleinerer Tabellen und effektiveren Tabellen zerlegt werden können, wie dies unten dargestellt ist.
  • DIT
    Figure 00530001
  • Name
    Figure 00530002
  • Baum
    Figure 00530003
  • Alias
    Figure 00530004
  • Suche
    Figure 00530005
  • Entry
    Figure 00530006
  • ATTR
    Figure 00540001
    Tabelle 4b – Logisches Design
  • 4.1 Dienstzergliederung
  • Die praktische Realität der meisten RDBMS's liegt in großen Tabellen mit vielen Spalten, die weniger gut arbeiten als kleine Tabellen mit weniger Spalten. Die Hauptgründe liegen in der Indizierung von Optionen, in der Eingabe/Ausgabeleistung und im Tabellenmanagement (s. Abschnitte 4.5 und 4.6). Das ist der Grund, warum relationalen Designtechniken nach dem Stand der Technik primäre Informationen nicht in getrennte Tabellen fokusieren und sekundäre Informationen aus Tabellenverbindungen ableiten (zum Beispiel Normalisierung und Fragmentierungstechniken).
  • Eine Neuerung in der Erzielung von X.500 Leistungsfähigkeit liegt in der Zergliederung von Tabellen um primäre Dienstbeziehungen herum und in dem Ableiten von sekundären Diensten über Verbindungen. Dieser Prozess wird als Dienstzergliederung bezeichnet. Die folgenden Überlegungen werden angestellt:
    • (1) Spalten, die starke Beziehungen aufweisen, werden bevorzugt zusammengehalten (um unnötige Verbindungen zu vermeiden);
    • (2) falls die Anzahl der signifikanten Zeilen in einer gegebenen Spalte unabhängig von den anderen bezogenen Spalten ist, dann ist die gegebene Spalte ein Kandidat für eine separate Tabelle;
    • (3) falls eine Spalte nur zur Lokalisierung von Information (Eingabe) oder nur zur Rückübertrage von Ergebnissen (Ausgabe) verwendet wird, dann ist dieselbe ein Kandidat für eine eigene Tabelle;
    • (4) falls eine Spalte als ein Schlüssel für einen oder mehrere Dienste verwendet wird, dann ist diese bevorzugt ein erster Schlüssel und dafür in einer eigenen Tabelle (jede Tabelle kann nur einen primären Schlüssel aufweisen);
    • (5) Schlüssel sind bevorzugt einzigartig oder wenigstens stark (nicht-wiederholend).
  • Eine ersten Stufenanalyse der Spaltenverwendung ist in Tabelle 4.1 gezeigt.
  • Figure 00550001
    Tabelle 4.1 – Basisspaltenverwendung#
  • Schlüsselsymbole in der obigen Tabelle sind:
  • H
    hierarchische Tabelle
    O
    Objekttabelle
    S
    bereitgestellte Wert (verwendet in SQL zum Suchen der Tabelle)
    R
    zurückübertragener Wert (Wert entnommen aus den Tabellen)
    ( )
    Punkt, der oder der nicht vorhanden sein kann, abhängig von den Optionen der Dienste.
  • Ausgehend von der obigen Information und der weiteren Analyse kann die konzeptionelle Designtabelle weiter zergliedert werden in eine Anzahl kleineren Tabellen, wie dies in den nachfolgenden Abschnitten beschrieben wird.
  • 4.2 Zergliederung der Hierarchietabelle
  • Die Hierarchietabelle umfasst die folgenden Spalten:
    Figure 00560001
    Tabelle 4.2a – Hierarchietabelle
  • Die Hierarchietabelle enthält Informationen über Objekte und deren Ursprünge, deren Namen, deren absolute Position in der Hierarchie und ggf. über die Aliases. Diese Tabelle kann daher in vier Tabellen aufgespalten werden: DIT, Name, Baum und Alias.
  • Die Ursprungsinformation wird verwendet, um ein gegebenes Kind aufzufinden oder um diese auf Einträge anzuwenden, die einen gegebenen Ursprung haben. Zum Auffinden eines Kinds (zum Beispiel Ursprung = 0, NameNorm = "Datacraft") ist die Basis zur Navigation und zur Update-Überprüfung (Überprüfung der Existenz eines Objekts bevor dem Hinzufügen oder Modifizieren der RDN). Das Agieren bzw. Anwenden auf Eingaben, die einen gegebenen Ursprung haben, wird während des Auflistens oder der einstufigen Suche verwendet. Daher hat die DIT-Tabelle (Directory Informationsbaum) Informationen, die zur Navigation benötigt werden, sie ermöglicht es jedoch, dass deren Ursprungsspalte für andere Dienste verwendet wird.
  • Figure 00570001
    Tabelle 4.2b – DIT-Tabelle
  • Ein Objekt wird aus seinen Abkömmlingen abgeleitet über den relativ unterscheidenden Namen (RDN). RDNs werden für eine Liste zurückübertragen (in Verbindung mit einem gegebenen Ursprung) oder als Teil eines voll unterscheidenden Namens (Lesen, Suchen). Daher verfügt die Namentabelle über Informationen, die zur Zurückübertragung von Namen benötigt werden (die RawRDN).
  • Figure 00570002
    Tabelle 4.2c – Namentabelle
  • Die absolute Position eines Objekts in der Hierarchie ist erforderlich, um die DN's aufzubauen (aus der die RawRDNs empfangen werden) und um Unterbäume während der Suche auszuweiten. Daher verfügt die Baumtabelle über Informationen über den Pfad eines Eintrags (die Folge von EIDs, ausgehend von der Wurzel).
  • Figure 00570003
    Tabelle 4.2d – Baumtabelle
  • Alias-Information wird zwischengespeichert, so dass zu jeder Zeit, zu der ein Alias während der Navigation verwendet wird, es nicht wiederholend aufgelöst werden muss. Als Folge enthält die Alias-Tabelle nur Einträge, die Aliases sind. Dies wird auch während der einstufigen Suche (in Verbindung mit der DIT-Ursprungsspalte) und der Unterbaumsuche (in Verbindung mit der Pfadspalte) verwendet, um zu bestimmen, ob es irgendwelche Aliases im Suchbereich gibt.
  • Figure 00580001
    Tabelle 4.2e – Aliastabelle
  • 4.3 Zergliederung der Objekttabelle
  • Die Objekttabelle enthält die folgenden Spalten:
    Figure 00580002
    Tabelle 4.3a – Objekttabelle
  • Die Objekttabelle erhält im Wesentlichen Informationen zum Auffinden eines speziellen Werts (zum Beispiel AID = Nachname, ValueNorm = "HARVEY") und zum Empfangen von Werten (zum Beispiel AID = Nachname, ValueRaw = "Harvey"). Diese Tabelle kann daher in zwei Untertabellen aufgesplittet werden: Suche und Eingabe.
  • Die Suchetabelle wird verwendet, um Filter im Suchdienst aufzulösen. Es wird auch verwendet, um Werte während des Vergleichens, Modifizierens oder Modifizierens der RDN aufzufinden. Die Suchtabelle enthält eine Zeile für jeden Attributwert eines Eintrags. Nur die normierten Werte sind in dieser Tabelle gespeichert.
  • Figure 00580003
    Tabelle 4.3b – Suchtabelle
  • Die Eingabetabelle wird verwendet, um Werte in Lesen und Suchen auszugeben. Die Eingabetabelle enthält eine Zeile für jeden Attributwert eines jeden Eintrags. Der RawWert ist der Wert, wie exakt ursprünglich bereitgestellt, wenn der Eintrag hinzugefügt oder modifiziert wurde.
  • Figure 00590001
    Tabelle 4.3c – Eingabetabelle
  • 4.4 Attributtabelle
  • Die Attributtabelle entspricht im Wesentlichen dem konzeptionellen Design. In der Praxis ist das "Typ"-Feld nur beschreibend, weil jeder eingehende/ausgehende X.500-Objekt-Identifikator in den ursprünglichen bzw. aus dem ursprünglichen Attribut-Identifikator AID konvertiert wird. Daher wurde diese Spalte in DESC umbenannt, um anzuzeigen, dass es sich um ein beschreibendes Feld handelt.
  • Figure 00590002
    Tabelle 4.4 – ATTR-Tabelle
  • 4.5 Indexauswahl
  • Bei Verwendung von SQL kann eine Leistung erzielt werden, weil der RDBMS in der Lage ist, eine Anfrage unter Verwendung eines relevanten Index zu befriedigen. Das bedeutet, dass jede Anfrage, die eine Bedingung aufweist (die "where" Bedingung in SQL) bevorzugt einen zugeordneten Index aufweist (anderenfalls hat die RDBMS die Tabelle bezüglich eines Pegelscans neu zu sortieren). In praktischen RDBMS's gilt jedoch:
    • – dass die Anzahl der Indices beschränkt ist;
    • – dass es einen großen Overhead gibt, um sekundäre Indices zu erlangen;
    • – dass zusammengesetzte Indices benötigt werden, um eine Anfrage zu befriedigen. Daher können, falls eine Anfrage über Spalten (zum Beispiel; Typ = Vorname und Wert = "Smith") durchgeführt wird, separate Indices auf Typ und Wert nicht in einen vollständig indizierten Zugriff resultieren. Ein zusammengesetzter Index sowohl für Typ und Wert mag erforderlich sein.
  • Eine Neuerung in der Tabellenzergliederung in den vorangegangenen Abschnitten liegt in der Maximierung der Verwendung von primären Indices über die Tabellen. Dies reduziert die Anzahl der sekundären Indices (zum Beispiel werden diese primäre Indices ihre eigenen Tabellen). Nachfolgend ist eine Liste von Indices für jede der sechs Tabellen wiedergegeben, die im logischen Design verwendet werden.
  • Figure 00600001
    Tabelle 4.5 – Tabellenindices des logischen Designs
  • Das Tabellendesign bedeutet, dass viele Anfragen ohne Verknüpfungen gehandhabt werden können, was merkliche Leistungsverbesserungen ermöglicht.
  • Die Verknüpfungen, die als notwendig angesehen werden, sind unten angegeben:
    • – Auflisten – zum Rückübertragen der Raw-RDNs unter einem gegebenen Objekt (DIT verknüpft mit Name);
    • – Suche/Unterbaum – zum Auffinden der EIDS, die einen Filter über einen gesamten Unterbaum erfüllen (wo das Basisobjekt nicht die Wurzel ist) (Baum verknüpft mit Suche);
    • – Suche/einstufig – zum Auffinden der EIDs, die einen einstufigen Filter unter dem Basisobjekt erfüllen (DIT verknüpft mit Suche);
    • – Suche/Aliases/Unterbaum – zum Auffinden aller Aliases in einem Unterbaum (Baum verknüpft mit Alias);
    • – Suche/Aliases/einstufig – zum Auffinden aller Aliases unter einem gegebenen Objekt (DIT verknüpft mit Alias).
  • Bemerke, dass die oben angegebenen Verknüpfungen alle einstufig Verknüpfungen sind (zum Beispiel zwischen nur zwei Tabellen). Es ist wünschenswert, keine Verknüpfungen höherer Ordnung zu verwenden.
  • 4.6 Eingabe/Ausgabe-Leistung
  • Eine Neuerung in der Zergliederung von Tabellen um Dienste herum, was die Anzahl der Tabellen vergrößert, liegt darin, dass die neuen Tabellen wesentlich kleiner sind als die unfragmentierten Tabellen. Dies kann merklich den Betrag von Eingaben/Ausgaben wegen der folgenden Gründe reduzieren:
  • Spaltengröße
  • Durch Verringerung der Anzahl der Spalten in jeder Reihe wird die Reihenbreite verkürzt. Dies bedeutet, dass mehr Zeilen auf eine Seite passen (wo angenommen wird, dass eine Disk Eingabe/Ausgabe auf einer "Seite" von Informationen erscheint). In Kombination mit dem unten angegebenen Clustering müssen immer dann, wenn ein Satz von Zeilen empfangen werden muss, nur eine (oder ein paar) Seiten aus der Disk gelesen werden (zum Beispiel, wenn Attribute eines Objekts gelesen werden, falls die Eingabetabelle auf EID, AID, VID geschlüsselt ist, dann werden alle Zeilen betreffend dieses Objekts zusammensein und sich wahrscheinlich auf einer Seite befinden).
  • Clustering
  • Jede der fragmentierten Tabellen umfasst bevorzugterweise ihren eigenen (unabhängigen) primären Schlüssel, der es denselben ermöglicht, Daten danach zu Clustern, wie diese verwendet werden. Der primäre Schlüssel kann die "Speicherstruktur" vorgeben. So werden in der Suchtabelle, falls der primäre Schlüssel auf AID, Norm (zum Beispiel Typ, Wert) besetzt ist, alle Daten des selben Typs (zum Beispiel Nachname) oder ähnliche Werte (zum Beispiel Harvey, Harrison) im selben Bereich der Disk geclustert. Das bedeutet, dass während einer Suche (zum Beispiel Nachnamen beginnend mit "har") ähnliche Daten auf einer (oder einiger weniger) Diskseiten gesammelt werden. Falls die Zeilen klein sind, so wird die Anzahl der zu adressierenden Diskseiten merklich reduziert.
  • Zwischenspeichern (Caching)
  • Die kommerziell geläufigsten RDMBS's verfügen über die Möglichkeit, Seiten, auf die häufig zugegriffen wird, zwischenzuspeichern. Weil Tabellen effektiv der Eingabe (zum Beispiel Navigation unter Verwendung der DIT-Tabelle) oder der Ausgabe (zum Beispiel Empfangen von Informationen aus der Eingabeta belle) dienen, werden ähnliche Anfragen (zum Beispiel Suchen über den selben Bereich eines Baums) dazu führen, dass häufig benutzte Seiten zwischengespeichert werden, was bedeutet, dass häufig erteilte Anfragen deutliche Verbesserungen beisteuern. Weiterhin ist die Zwischenspeicherung auch effektiver, da die Seiten "informationsintensiv sind", was sich als Folge einer kleinen Zeilengröße und des Clusterings ergibt.
  • Management
  • Kleinere Tabellen sind wesentlich einfacher zu managen: zum Beispiel anzuschauen, zu erzeugen, zu indizieren, Statistiken zu erzeugen, für Auditing, für Backups, usw.
  • 5. LOGISCHE METHODEN
  • Dieser Abschnitt beschreibt Methoden des Zusammenspiels der logischen Designtabellen unter Bezugnahme auf 2b. Innerhalb dieses Abschnitts wird jede X.500-Methode definiert und mit einem Beispiel illustriert. Tabelle 5a zeigt einen kleinen hierarchischen Baum, der eine Alias-Referenz enthält. Die entsprechenden Tabelleninhalte sind in Tabelle 5b gezeigt.
  • Figure 00630001
    Tabelle 5a – einfacher Hierarchiebaum
  • DIT
    Figure 00640001
  • Name
    Figure 00640002
  • Merke: [...] gibt eine binäre Kodierung des exakten Dateneingabewerts an.
  • Baum
    Figure 00650001
  • Alias
    Figure 00650002
  • Attribut
    Figure 00650003
  • Suche
    Figure 00660001
  • Eintrag
    Figure 00670001
    Tabelle 5b – Beispieltabellen
  • Merke: [...] gibt einen binären Code für einen exakten Dateneingabewert an.
  • 5.1 Gemeinschaftliche Dienste
  • Baumnavigation
  • Alle X.500-Dienste beruhen auf einer Navigation des Directory-Baums. Der Zweck der Baumnavigation liegt darin, die EID eines Eintrags entsprechend dem bereitgestellten, unterscheidenden Namen zu bekommen. Die Navigation beginnt ausgehend von der Wurzel des Baum und setzt sich den Baum durch fort, bis alle die RDNs in einer DN aufgelöst (verifiziert) worden sind. Dieser Prozess ist als ein sogenanntes "Tree Work" bekannt.
  • Die DIT-Tabelle ist die primäre, die zur Baumnavigation verwendet wird. Bezugnehmend auf das Beispiel des Hierarchiebaums, das Auflösen der DN "Datacraft/Sales/Network Products/Peter Evans" umfasst die folgenden Prozesse:
    • – Scannen der DIT-Tabelle nach einer Linie, die Ursprung = 0 und RDN = "DATACRAFT" enthält. Die EID für diese Zeile ist 1.
    • – Scannen der Tabelle nach einer Zeile, die Ursprung = 1 und RDN = "SALES" enthält. Die EID für diese Zeile ist 11.
    • – Scannen der DIT-Tabelle nach einer Zeile, die Ursprung = 11 und RDN = "NETWORK PRODUCTS" enthält. Die EID für diese Zeile ist 20.
    • – Scannen der DIT-Tabelle nach einer Zeile, die Ursprung = 20 und RDN = "PETER EVANS" enthält. Die EID für diese Zeile ist 32.
  • Die DN wurde aufgelöst und alle Werte bezüglich des Objekts können aus der Entry-Tabelle unter Verwendung der Schlüssel-EID = 32 enthalten werden.
  • Aliases
  • Manchmal kann eine DN ein Alias umfassen, was effektiv eine andere DN ist. Aliases komplizieren den sogenannten "Tree Work"-Prozess, weil der "Tree Work" nicht durchgeführt werden kann, bis das Alias aufgelöst ist. Das erfordert einen separaten "Tree Work" für das Alias.
  • Beispielhaft sei die DN "Datacraft/Networks/Peter Evans" betrachtet. Die ersten beiden Schritte im Auflösen dieser DN würden sein:
    • – Scanne die DIT-Tabelle nach einer Zeile enthalend Ursprung = 0 und RDN = "DATACRAFT". Die EID für diese Zeile ist 1.
    • – Scanne die DIT-Tabelle nach einer Zeile enthaltend Ursprung = 1 und RDN = "Networks". Die EID für diese Zeile ist 10.
  • In diesem Zustand wird entdeckt, dass dieser Eintrag ein Alias ist. Die Alias-Tabelle wird gecheckt, um festzustellen, ob die EID des Alias zwischengespeichert ist. Falls dies ein erstmaliger Versuch ist, das Alias aufzulösen, dann wird die A-EID-Spalte in dieser Alias-Tabelle 0 sein. Zum Zweck der nachfolgenden Diskussion wird angenommen, dass es erste Mal ist.
  • Um das Alias aufzulösen, muss die DN des Alias-Objekts bestimmt werden. Diese ist gespeichert im "Alias Object Name"-Attribut des Alias-Eintrags. Der Alias Object Name hat einen AID = 1 (aus der ATTR-Tabelle) und so erhält man die DN aus der Eintragtabelle (RawWert), wo EID = 10 und AID = 1.
  • In diesem Beispiel ist die DN des Alias "Datacraft/Sales/Network Products". Diese DN wird unter Verwendung des normalen "Tree Work"-Prozesses aufgelöst. Der Wert der EID ist 20. In dieser Stufe wird die Navigation für die noch nicht aufgelöste RDNs in der Original-DN, nämlich "Peter Evans", fortgeführt. Der letzte erforderliche Schritt ist dann:
    • – Scanne die DIT-Tabelle nach einer Zeile enthaltend Ursprung = 20 und RDN = "PETER EVANS".
  • Sobald das Alias aufgelöst wurde, kann es in die Alias-Tabelle hinzugefügt werden (zwischengespeichert) werden. Diese Tabelle enthält eine Referenz, A-EID, zum Aliasobjekt. Im obigen Beispiel würde ein Eintrag in der Aliastabelle mit einer EID von 10 eine A-EID von 20 aufweisen. Sobald ein Alias zwischengespeichert wurde, ist ein "Tree Work" nicht mehr erforderlich, um ein Alias aufzulösen.
  • Directory-Pfade
  • Wenn Objekte in eine DIT-Tabelle hinzugefügt werden, wird eine korrespondierende Zeile in eine andere Tabelle hinzugefügt, die Baumtabelle genannt wird. Diese Tabelle speichert eine Liste von EIDs, die einen "Pfad" zu einem Objekt identifizieren.
  • Unterscheidungskräftige Namen
  • Die meisten Dienste erfordern es, dass die unterscheidungskräftigen Namen im Dienstergebnis übermittelt werden. Unter Verwendung des Directory-Pfads aus der Baumtabelle kann eine DN aus den RawRND-Werten konstruiert werden, die in der Namentabelle gespeichert sind.
  • Eingabeinformationsauswahl
  • Viele der X.500-Dienste werden mit einem Argument angefragt, das als "Entry Information Selection" oder EIS bezeichnet wird. Diese EIS-Anfrage wird benutzt, um anzuzeigen, welche Information in dem Entry übermittel werden soll. Prinzipiell kann EIS optional sein:
    • – keine Information
    • – Attribute oder Werte für ausgewählte oder alle Attribute
    • – Werte nur für ausgewählte oder alle Attribute
  • Eingabeinformationen
  • Eingabeinformation ist ein sogenannter "Return-Parameter" für das Lesen und Suchen. Er umfasst immer den unterscheidungskräftigen Namen eines ausgewählten Eintrags und, optional, Attribute und/oder Werte, wie sie in dem EIS-Argument der Anfrage gespeichert sind.
  • Gemeinsame Argumente
  • Alle X.500-Dienste leiten einen Satz von gemeinsamen Argumenten in einer Dienstanfrage weiter. Gemeinsame Argumente enthalten Informationen, wie zum Beispiel Dienststeuerungen (Zeitlimit oder Größenlimit), die DN des Anfragenden des Services und Sicherheitsinformationen.
  • Gemeinsame Ergebnisse
  • Einige X.500-Dienste leiten einen Satz von gemeinsamen Ergebnissen in der Dienstantwort weiter. Gemeinsame Ergebnisse enthalten Informationen, wie Sicherheitsparameter, die DN des Ausführenden des Service und eine "Alias dereferenziertes" Zeichen, weiter.
  • 5.2 Lesedienste
  • Ein Lesebetrieb wird benutzt, um Informationen aus einem explizit identifizierten Eintrag zu extrahieren.
  • X.500-Definition
    Figure 00720001
  • Methode
    • – Ausführung eines "Tree Work" unter Verwendung der DIT-Tabelle, falls notwendig Auflösen von Aliases. Erhalten der Basis-EID.
    • – Verwenden des Pfads aus der Baumtabelle und der RawRDNs aus der Namenstabelle, bilde eine DN.
    • – Falls die EIS keine Attribute oder Werte spezifiziert, gebe nur die DN zurück.
    • – Falls die EIS ALL-Typen und Werte spezifiziert, gebe die Raw-Werte aus der Entry-Tabelle zurück, für die EID erfüllt ist.
    • – Falls EIS ausgewählt Typen und Werte spezifiziert, erhalte die RIDs aus der Attributtabelle und geben dann ausgewählte Typen und/oder Werte zurück, für die EID erfüllt ist.
  • Beispiel
  • Lese den Eintrag "Datacraft/Sales/Network Products/Peter Evans". EIS ist zu setzen auf: Attributtypen = ALL-Attributes, Info-Types = Attribute-Types and Values.
  • Verwende die DIT-Tabelle und führe einen "Tree Work" aus unter Verwendung der EIDs 1, 11, 20 und 32 für den normierten RDN "Datacraft/Sales/Network Products/Peter Evans". Die EID des ausgewählten Objekts ist 32.
  • Extrahiere den Pfad aus der Baumtabelle für EID = 32. Der Pfad ist 1.11.20.32.
  • Erzeuge eine DN aus den RawWerten in der Namenstabelle für die EIDs 1, 11, 20, 32.
  • Verwende die Entry-Tabelle und die Attributtabelle für jedes übereinstimmende EID.
  • Gebe die Objekt-IDs aus der Attributtabelle und der ASN.1 kodierten Raw-Werte aus der Entry-Tabelle aus.
    2.5.4.0 [2.5.6.7]
    2.5.4.3 [PETER]
    2.5.4.4 [EVANS]
    2.5.4.9 [SALES PERSON]
    2.5.4.20 [(03)727-9454]
  • Gebe die DN zurück.
  • 5.3 Vergleichsdienste
  • Eine Vergleichsoperation wird verwendet, um einen Wert (der durch ein Argument einer Anfrage bereitgestellt wird) mit einem Wert oder Werten eines speziellen Attributtyps in einem speziellen Objekteintrag zu vergleichen.
  • X.500-Definiton
    Figure 00740001
  • Methoden
    • – Ausführen eines sogenannten "Tree Work" unter Verwendung der DIT-Tabelle, Auflösen, falls notwendig der Aliases. Erhalten der EID des Basisobjekts.
    • – Aus der Attributtabelle erhalten der AID des zu vergleichenden Attributs.
    • – Aus der Entry-Tabelle auswählen der Zeile bzw. Zeilen, die mit dem EID und AID übereinstimmen.
    • – Vergleichen der Werte.
    • – Ausgeben wahr oder falsch als Ergebnis des Vergleichs.
    • – Falls ein Alias zu dereferenzieren ist, ausgeben der DN des ausgewählten Objekts, verwenden des Pfads aus der Baumtabelle und der RawRDNs aus der Namenstabelle.
  • Beispiel
  • Vergleiche die DN "Datacraft/Sales/Network Products/Peter Evans" mit einer Attribute Value Exultation enthaltend "Titel = [Sales Person]".
  • Erhalten der EID für das gegebene DN unter Verwendung eines "Tree Work". Die EID des ausgewählten Objekts ist 32.
  • Verwenden der Attributtabelle, erhalten der AID für "Titel", zum Beispiel AID = 12.
  • Verwenden der Suchtabelle zum Lokalisieren von Zeilen von mit EID = 32 und AID = 12 und Testen für "Norm = Sales Person".
  • Ausgeben wahr oder falsch, abhängig vom Ergebnis dieses Tests. In diesem Umstand wird das Ergebnis wahr sein.
  • Da keine Aliases zu dereferenzieren sind, wird der DN dieses Eintrags nicht zurückübertragen.
  • 5.4 Listen-Dienste
  • Ein Listen-Betrieb wird verwendet, um eine Liste von unmittelbaren, untergeordneten Werten eines explizit definierten Eintrags zu erhalten.
  • X.500-Definition
    Figure 00760001
  • Methode
    • – Ausführen eines sogenannten "Tree Work" unter Verwendung der DIT-Tabelle, falls nötig Auflösen der Aliases. Erhalten der EID des Basisobjekts.
    • – Verwenden der DIT- und der Namenstabelle, Übertragen des Alias Flag und der RawRDN, Ursprung ist der gleich der EID des Basisobjekts.
  • Beispiel
  • Ausführen einer Liste für den DN "Datacraft".
  • Erhalten der EID für die DN unter Verwendung eines "Tree Work". Die EID des ausgewählten Objekts ist "1".
  • Für jede EID mit einem Ursprung = 1
    • – Rückübertragung der RawRDN für die Namenstabelle, zum Beispiel [Networks], [Sales], [Marketing]
    • – Zurückübertragen der Alias Flags, zum Beispiel wahr, falsch, falsch.
  • Wenn kein Alias im "Tree Work" dereferenziert wurde, wird die DN des ausgewählten Objekts nicht rückübertragen. Man soll bemerken, dass der Alias-Eintrag [Networks] nicht dereferenziert ist.
  • 5.5 Suchdienste
  • Der Suchdienst ist der am meisten komplexe von allen X.500-Diensten. Suchargumente geben an, wo die Suche zu starten ist (Basisobjekt), den Umfang der Suche (Subset), die anzuwendenden Bedingungen (Filter) und welche Information zurückgegeben werden sollte (Selection). Weiterhin wird ein sogenanntes Flag übertragen, um anzuzeigen, ob Aliases dereferenziert werden sollten (Search Aliases).
  • Die möglichen Werten für Subset sind Basisobjekt, Einstufe und gesamter Subtree. Das Basisobjekt gibt an, dass der Suchfilter nur auf Attribute und Werte innerhalb des Basisobjekts angewendet wird. Einstufe gibt an, dass der Suchfilter auf die unmittelbaren, untergeordneten Werte des Basisobjekts angewendet wird. Gesamter Unterbaum gibt an, dass der Suchfil ter auf das Basisobjekt und alle seine untergeordneten Werte angewendet wird.
  • Ein einfaches Beispiel einer Filterbedingung würde sein:
    Nachname = "EVANS" oder Telefonnummer anwesend.
  • X.500-Definitionen
    Figure 00780001
  • Die Suchprozeduren für jeden Suchumfang werden, wie unten angegeben, beschrieben:
  • Basisobjekt
    • – Führe einen "Tree Work" unter Verwendung der DIT-Tabelle aus, falls nötig, löse Aliases auf. Erhalte die EID für das Basisobjekt.
    • – Wende den Filter auf Attribute und Werte in der Suchtabelle mit dem EID des ausgewählten Objekts an.
    • – Falls die Filterbedingung erfüllt ist, gebe die Eintraginformation aus der Eintragtabelle zurück.
  • Falls ein Alias zu dereferenzieren ist, übermittle die DN zurück unter Verwendung der Baumtabelle, um den Pfad zu extrahieren und unter Verwendung der Namenstabelle, um die DN zu bilden.
  • Eine Stufe
    • – Führe einen "Tree Work" unter Verwendung der DIT-Tabelle aus, falls nötig, löse Aliases auf. Erhalte die EID des Basisobjekts.
    • – Prüfe, um festzustellen, ob irgendwelche Aliases existieren mit Ursprung = EID, und falls so, löse dieselben auf, um eine Liste dereferenzierter Aliases zu erhalten.
    • – Verwende die Suchtabelle und DIT-Tabelle, wende den Filter (Attribut/Wertebedingungen) und den Umfang (Ursprung = EID des ausgewählten Objekts und jeglicher dereferenzierter Aliases) an. Eine Liste von übereinstimmenden EID wird zurückübertragen.
    • – Falls ein Alias zu dereferenzieren ist, gebe das DN zurück unter Verwendung der Baumtabelle zur Extrahierung des Wegs und unter Verwendung der Namenstabelle, um das DN zu bilden.
  • Für jedes übereinstimmende EID:
    • – Gebe die Eintragsinformationen zurück, die aus der Suchtabelle erhalten werden unter Verwendung der Eintragtabelle (als Lesedienst).
  • Gesamter Unterbaum
    • – Führe einen "Tree Work" unter Verwendung der DIT-Tabelle aus, falls nötig, löse Aliases auf. Erhalte die EID des Basisobjekts.
    • – Prüfe, um festzustellen, ob irgendwelche Aliases existieren, mit einem Pfad-Präfix entsprechend dem Pfad des ausgewählten Objekts.
    • – Für jedes entdeckte Aliases prüfe, um festzustellen, falls das Alias außerhalb des aktuellen Unterbaums zeigt, und wiederhole diesen Schritt, falls es dieses tut. Sobald alle Aliases aufgelöst wurden, wird ein Satz von einzigartigen Basisobjekten gefunden sein (ohne überlappende Bereiche).
    • – Verwende die Suchtabelle und Baumtabelle, wende den Filter (Attribut/Wertebedingungen) und den Umfang (Pfad ähnlich dem Pfad-Präfix des ausgewählten Objekts) an, und zwar auf jedes einzigartige Basisobjekt. Eine Liste von übereinstimmenden EIDs wird zurückübertragen.
    • – Falls ein Alias während der Navigation zu dereferenzieren ist (nicht während der Suche), gebe das DN aus unter Verwendung der Baumtabelle, um den Pfad zu extrahieren und unter Verwendung der Namenstabelle, um DN zu bilden.
  • Für jedes übereinstimmende EID:
    Gebe die Entry-Information aus, die aus der Suchtabelle unter Verwendung der Eintragstabelle erhalten wurde (als ein Lesedienst).
  • Beispiel
  • Führe eine Suche auf dem Basisobjekt "Datacraft/Sales" aus mit.
    • – Umfang gesetzt auf gesamten Unterbaum
    • – ein Filter "Nachname, anfänglicher Substring = M". (Suche alle Nachnamen, die mit "M")
    • – setze Search Aliases auf wahr
    • – setze EIS auf Attributtypen = all attributes, setze infotypes = attribute types and values.
  • Methode
  • Erhalte die EID des Basisobjekts, DN unter Verwendung eines "Tree Work". Die EID des Basisobjekts ist "11".
  • Aus der Baumtabelle erhalte den Pfad für EID = 11, zum Beispiel "1.11.".
  • Prüfe für jede Aliases unter den Einträgen, die einen Pfad aufweisen, beginnend mit "1.11.". In diesem Fall gibt es keine Aliases.
  • Erhalte das AID für das Attribut "Nachname" in der Attributtabelle, zum Beispiel: 4.
  • Wende den Filter und den Umfang gleichzeitig an. Zum Beispiel verwende die Suchtabelle, erhalte eine Liste von EIDs aus der Zielliste, wo AID = 4 und die Werte beginnen mit einem "m", verknüpft mit der Baumtabelle, deren Pfad ähnlich ist "1.11.%". Die übereinstimmenden EIDS sind 30 und 31.
  • Verwende die Entry-Tabelle und die Attributtabelle für jedes übereinstimmende EID:
    • – rückübertrage die Objekt-IDs aus der Attributtabelle und und der ASN.1 kodierten Raw-Werte aus der Eintragtabelle, zum Beispiel
      2.5.4.0 [2.5.6.7]
      2.5.4.3 [Chris]
      2.5.4.4 [Masters]
      2.5.4.9 [Sales Manager]
      2.5.4.20 [(03)727-9456]
      2.5.4.20 [(018)042671)
      2.5.4.0 [2.5.6.7)
      2.5.4.3 [Alana]
      2.5.4.4 [Morgan]
      2.5.4.9 [Sales Support)
      2.5.4.20 [(03)727-9454]
  • 5.6 Hinzufügen Eingabedienst
  • Ein Hinzufügen Eingabe-Betrieb wird verwendet, um einen Blatteintrag entweder einem Objekteintrag oder einem Directory-Informationsbaum hinzuzufügen.
  • X.500-Definition
    Figure 00820001
  • Methode
    • – Verwenden der DIT-Tabelle, Ausführen eines "Tree Work" auf den Ursprung des hinzuzufügenden Eintrags (Ursprung EID).
    • – Verwenden der DIT-Tabelle, prüfe, ob der Eintrag existiert (prüfe für RDN gleich neue RDN und Ursprung = Ursprung EID).
    • – Falls der Entry nicht weiter existiert, ordne eine neue EID zu und füge den Eintrag hinzu. Füge ein in die DIT-Tabelle, die Namenstabelle, die Baumtabelle, die Suchtabelle, die Entry-Tabelle und, falls es ein Alias-Eintrag ist, in die Alias-Tabelle.
  • Beispiel
  • Unter dem Objekt mit einer DN "Datacraft/Marketing" füge ein Objekt mit den folgenden Attributen und Werten an.
    Nachname [Delahunty]
    Gemeinsamer Name [Mary]
    Titel [Marketing Manager]
    Telefonnummer [(03)727-9523]
  • Erhalte die EID des Basisobjekts DN unter Verwendung eines "Tree Work". Die EID dieses Basisobjekts ist "12".
  • Verwende die DIT-Tabelle, ermittele einen duplizierten Eintrag, zum Beispiel Ursprung = 12 und RDN = "MARY DELAHUNTY". Es existieren keine duplizierten Einträge.
  • Füge die folgenden Zeilen an die gezeigten Tabellen an.
  • DIT
    Figure 00830001
  • Name
    Figure 00840001
  • Baum
    Figure 00840002
  • Suche
    Figure 00840003
  • Eintrag
    Figure 00840004
  • 5.7 Entferne Entry-Dienst
  • Eine Entferne Entry-Operation wird verwendet, um einen Blatteintrag (entweder ein Objekteintrag oder einen Alias-Eintrag) aus dem Directory-Informationsbaum zu entfernen.
  • X.500-Definition
    Figure 00850001
  • Methode
    • – Führe einen "Tree Work" unter Verwendung der DIT-Tabelle aus. Erhalte die EID des Basisobjekts.
    • – Falls ein Eintrag existiert und dieser Eintrag ein Blatteintrag ist, entferne für die Bedingung EID = EID des ausgewählten Objekts diesen aus der DIT-Tabelle, der Namenstabelle, der Baumtabelle, der Suchtabelle, der Eingabetabelle und, falls es ein Alias-Eintrag ist, aus der Alias-Tabelle.
  • Beispiel
  • Entferne das Objekt mit einer DN "Datacraft/Marketing/Mary Delahunty".
  • Methode
  • Erhalte die EID des Basisobjekts DN unter Verwendung eines "Tree Work". Die EID für das Basisobjekt ist "21". Prüfe, dass keine Einträge den Ursprung = 21 aufweisen.
  • Entferne alle Zeilen aus der DIT-Tabelle, der Namenstabelle, der Baumtabelle, der Suchtabelle und der Eingabetabelle (siehe auch add entry Beispiel) für die EID = 21 ist.
  • 5.8 Ein Dienst zum Modifizieren eines Eintrags
  • Der Modifiziere Eintrag-Betrieb wird verwendet, um eine Serie von einen oder mehreren der folgenden Modifikationen auf einen einzelnen Eintrag anzuwenden:
    • – füge ein neues Attribut hinzu
    • – entferne ein Attribut
    • – füge einen Attributwert hinzu
    • – entferne einen Attributwert
    • – ersetze ein Attribut
    • – verändere ein Alias
  • X.500-Definition
    Figure 00860001
  • Methode
    • – Führe einen "Tree Work" unter Verwendung der DIT-Tabelle aus. Erhalte die EID des ausgewählten Objekts.
  • Für jedes ausgewählte Objekt führe eine oder mehrere der folgenden Aktionen aus: Hinzufügen eines Werts, Entfernen eines Werts, Hinzufügen eines Attributs, Entfernen eines Attributs. Die Schritte, die für jede dieser Aktionen erforderlich sind, sind die folgenden:
  • Füge Wert hinzu
    • – Falls das Attribut existiert, füge den Wert in die Eingabetabelle und in die Suchtabelle. Überprüfungen sind: ist das Attribut ein Test mit einem einzigen Wert für einen existierenden Wert; ist das Attribut ein Test mit mehreren Werten für einen duplizierten Wert.
  • Lösche Wert
    • – Für die Eingabetabelle und die Suchetabelle lösche die Werte, falls sie existieren. Ein unterscheidungskräftiger Wert kann nicht gelöscht werden.
  • Füge Attribut hinzu
    • – Falls ein Attribut nicht existiert, füge den Attributwert in die Eingabetabelle und die Suchtabelle ein.
  • Entferne Attribut
    • – Für die Eingabetabelle und die Suchtabelle lösche diese, falls das Attribut existiert. Lösche alle Werte mit AID = ATTR und EID = Basisobjekt. Namensattribute können nicht gelöscht werden.
  • Beispiel
  • Ändere den Eintrag "Datacraft/Sales/Network Products/Chris Masters" mit den folgenden Änderungen:
    Figure 00870001
  • Die Suchtabelle und Entry-Tabelle reflektiert die Änderungen.
  • Suche
    Figure 00880001
  • Eintrag
    Figure 00880002
  • 5.9 Ändere RDN-Dienst
  • Die ändere RDN-Operation wird verwendet, um relativ unterscheidungskräftige Namen eines Blatteintrags (entweder ein Objekteintrag oder eine Alias-Eintrag) aus dem Directory Informationsbaum zu ändern.
  • Figure 00890001
  • Methode
    • - Führe einen "Tree Work" unter Verwendung der DIT-Tabelle aus. Erhalte die EID und die Ursprungs-EID des Basisobjekts.
    • - Verwende die DIT-Tabelle, prüfe nach äquivalenten Einträgen und gebe Fehler zurück, falls einer gefunden ist. Ein äquivalenter Entry hat RDN = neue RDN und Ursprung = Ursprung-EID.
    • – Verwende die Namentabelle, ersetze die alte RDN durch die neue RDN.
    • – Verwende die DIT-Tabelle, ersetze die alte RDN durch die neue RDN
    • – Verwende die Entry-Tabelle, füge einen neuen Wert ein.
    • – Verwende die Suchen-Tabelle, ermittele Wert = alte RDN und setze Disting auf 0. Füge neuen Wert ein.
  • Falls lösche alte RDN auf wahr gesetzt ist, folgt die Prozedur dem "Tree Work", wie folgt:
    • – verwende die DIT-Tabelle, prüfe nach einem Abkömmling mit dem selben Namen und einer EID ungleich der Basis-EID
    • – verwende die Namentabelle, ersetze die alte RDN durch die neue RDN
    • – verwende die DIT-Tabelle, ersetze die alte RDN durch die neue RDN
    • – verwende die Entry-Tabelle, lösche die alten Werte und setze die neuen Werte ein
    • – verwende die Suchen-Tabelle, lösche die alten Werte und setze die neuen Werte ein.
  • Beispiel
  • Ändere die RDN "Datacraft/Sales/Network Products/Chris Masters". Die neue RDN ist "Christine Masters".
  • Lösche alte RDN ist gesetzt auf falsch.
  • Die Änderungen in den Tabellen werden folgende sein: DIT
    Figure 00900001
    Name
    Figure 00900002
  • Suche
    Figure 00910001
  • Eintrag
    Figure 00910002
  • 5.10 Komplikationen
  • Falls ein Fehler, eine Beschränkung oder ein Aufgeben während des Prozesses eines der Dienste eintritt, so wird die Bearbeitung unterbrochen und eine geeignete Fehlermeldung ausgegeben.
  • Fehler
  • Jeder X.500-Dienst besteht aus drei Teilen: ARGUMENT, ERGEBNIS und FEHLER. In der obigen Beschreibung der Dienste wurden ARGUMENT und ERGEBNIS in die X.500-Definitionen einge schlossen. Fehlerbedingungen sind jedoch sehr viele und unterschiedlich, so dass kein Versuch unternommen wird, sie in diesem Dokument zu beschreiben. Das Dokument des Nationalen Instituts für Standards und Technologie (NIST) "Stabile Implementierungsübereinkommen für Verknüpfungsprotokolle offener Systeme, Version 3" gibt einen vollen Überblick von Fehlern innerhalb des X.500-Standards.
  • Zeitbegrenzungen und Größenbegrenzungen
  • Zeitbegrenzungen und Größenbegrenzungen bilden einen Teil der Dienststeuerung. Sie können optional auf ein begrenztes Limit gesetzt werden und sind in den gemeinsamen Argumenten enthalten.
  • Das Zeitlimit gibt die maximale eingeschlossene Zeit in Sekunden an, innerhalb dessen der Dienst bereitgestellt werden soll. Größenbegrenzungen (nur anwendbar auf Listen und Suchen) geben die maximale Anzahl von zurückzuübermittelnden Objekten an. Falls eine der Grenzen erreicht wird, wird ein Fehler berichtet. Für ein auf einer Liste oder einer Suche erreichtes Limit ist das Ergebnis eine beliebige Auswahl von akkumulierten Ergebnissen.
  • Aufgabe
  • Operationen, die mit dem Directory interagieren, zum Beispiel Lesen, Vergleichen, Auflisten und Suchen, können unter Verwendung des Aufgabekriteriums aufgegeben werden, falls der Benutzer nicht weiter an dem Ergebnis interessiert ist.
  • Aliases und Suche
  • Falls ein Alias in eine Suche eingebunden ist und das Alias auf eine eigenständige Abzweigung eines Directory-Baums zeigt, so ist eine Dereferenzierung des Alias erforderlich:
    • – Navigation ausgehend vom Wurzeleintrag auf den referenzierten Eintrag
    • – Suchen aller untergeordneter Punkte des referenzierten Eintrags
  • In dem in Tabelle 5.10 gezeigten Beispiel würde, falls eine gesamte Unterbaumsuche auf Basis des Objekts "Telco/Corporate/Dataservices" durchgeführt wurde, die Eingaben "Marvin Powis" und das Alias "Strategic" gesucht werden. Strategic zeigt jedoch auf eine unterschiedliche Abzweigung des Baums, was ein Suchen des Eintrags "Strategic" und aller seiner untergeordneten Größen erfordert, zum Beispiel "Alan Bond", "Rex Hunt", "Wayne Carrey" und "John Longmeyer".
  • Figure 00940001
    Tabelle 5.10 – Ein Beispielbaum mit einem Alias, welches sich auf einen unterschiedlichen Abzweig des Baums referenziert.
  • 5.11 Implementierungs-Optimierungen
  • Die logischen Methoden umfassen eine Anzahl von Optimierungen, die die Leistung verbessern. Diese Methoden werden unten beschrieben.
  • Zwischenspeichern
  • Die Attributtabelle kann zwischengespeichert sein. Dies bedeutet, dass (abgesehen vom anfänglichen Landen der Attribute) keine SQL-Statements in der Datenbank beachtet werden müssen, wenn Attribute dekodiert oder kodiert werden. Im gegenwärtigen X.500-System werden Attributkonvertierungen im Speicher durchgeführt. Dies stellt eine merkliche Geschwindigkeitsverbesserung dar.
  • Validierung
  • Abfrageoptimierungen werden, wo möglich, im Speicher durchgeführt. Dies verhindert, das Zurückrollen in Datenbanken, was sehr zeit- und systemintensiv ist. Zum Beispiel dann, wenn ein Eintrag hinzugefügt wird, wird jedes Attribut validiert, bevor ein Versuch unternommen wird, den Eintrag hinzuzufügen. Falls ein Fehler gefunden wird, müssen keine SQL-Anfragen berücksichtigt werden.
  • Optimierung der Anfragehandhabung
  • Weil die Formate der meisten Dienste bekannt sind, können viele Probleme dieser Dienste während des statischen SQL-Statements gelöst werden. Komplexere Dienste, wie zum Beispiel Suchen mit komplexen Filtern, können bunter Verwendung einer dynamischen SQL gelöst werden. Dies erlaubt es, beliebig komplexe Suchen durchzuführen.
  • Parallele Anfragen
  • Auch dann, wenn Sucherergebnisse bearbeitet werden, verwendet das vorliegende System Satzorientierungsanfragen von SQL, um "Zeilen zu einer Zeit"-Bearbeitungen zu vermeiden. Demnach können Suchergebnisse parallel im Speicher zusammengefügt werden.
  • Datenspeicherung
  • Die Tabellen, die Raw-Daten speichern, speichern die Daten im ASN.1-Format. Dies stellt ein effizientes Mittel bereit, um Daten in die Datenbank zu transferieren oder aus derselben herauszutransferieren.
  • Datenbanktechniken
  • Komplexe Dienste können weiterhin dadurch verbessert werden, indem Anfrageoptimierer verwendet werden, die einen Mechanismus zur Reduzierung der verwendeten Zeit in der Abarbeitung einer Anfrage bereitstellen. Die Verwendung einer relationalen Datenbank stellt auch einen effektiven Gebrauch des Speichers dar und ermöglicht es, große Datenbanken zu konstruieren, ohne dass eine große Anzahl von verfügbarem Speicher erforderlich ist. Viele andere X.500-Anwendungen speichern die gesamte Datenbank im Speicher zwischen, um gute Leistung zu erzielen. Dieses Verfahren benötigt große Speichermengen und ist nicht skalierbar.
  • 6. PHYSIKALISCHES DESIGN
  • Das physikalische Design ergibt sich aus einem Prozess, der als physikalische Transformation des logischen Designs bezeichnet wird. Das physikalische Design stellt eine bevorzugte Realisierung oder Ausführung des logischen Designs dar. 2b und die weiter unten angegebenen Tabellen zeigen eine Form des physikalischen Designs. Neue Spalten und Tabellen sind durch doppelte Linien hervorgehoben.
  • Figure 00970001
    Tabelle 6 – physikalisches Design
  • Die Gründe für die obigen Änderungen werden unten beschrieben.
  • 6.1 Effizienz
  • Infotabelle
  • Diese Tabelle hält den höchsten EID-Wert, der in der Datenbank verwendet wurde. Der Einschluss der Infotabelle ermöglicht es, den nächsten EID zu erhalten, ohne jegliche Berechnung des maximalen EIDS, der in der Datenbank verwendet wurde. Dies stellt eine verbesserte Effizienz im Hinzufügen von Einträgen in die Datenbank bereit. Noch wichtiger, das Einschließen der Infotabelle, entfernt Inhaltsprobleme, die auftreten können, wenn mehrere DSA's zu einer Zeit Einträge hinzufügen.
  • Schattenschlüssel
  • Drei Tabellen wurden Schattenschlüssel hinzugefügt. Diese sind:
    • a) die Norm-Key-Spalte in der Suchtabelle
    • b) die RDN-Key-Spalte in der DIT-Tabelle
    • c) die ELV1-, ELV2-, ELV3- und ELV4-Spalten in der Baumtabelle.
  • Jede dieser Schattenschlüsselspalten ist eine gekürzte Version einer größeren Spalte. Sie wurden hinzugefügt, um die Indices jeder Tabelle zu kürzen. Dies stellt eine verbesserte Leistungsfähigkeit für jede Anfrage bereit, die die Indices benutzen, und es verbessert auch den Gebrauch von Diskraum, weil kleine Indices weniger Raum verbrauchen als große Indices.
  • Schattenschlüssel in der Pfadtabelle verwenden die strukturierte Natur des Pfads. Sind diese ein zusammengesetzter Schlüssel, so kann eine exakte Übereinstimmung in SQL benutzt werden, anstelle des "Like"-Operators.
    Zum Beispiel, wenn ELV1 = 1 und ELV2 = 10 und ... anstelle des wo Pfad ähnlich "1.10.".
  • Falls jede der ELV-Spalten ihren eigenen Index aufweist, dann braucht eine Unterbaumsuche nur das Basisobjekt zu verwenden. Zum Beispiel ELV2 = 10, weil alle Objekte unter dem Eintrag 10 ein ELV2 = 10 aufweisen werden.
  • SENTRY-Tabelle
  • Einige Typen von Attributwerten brauchen nicht normalisiert zu werden, zum Beispiel Integer-Daten, Boolsche Daten, Datumsdaten. Anstelle dieselben zweimal zu speichern (Suche.Norm und Entry.Raw), können dieselben nur einmal in einer hybriden Tabelle gespeichert werden, die als S-Entry-Tabelle bezeichnet ist. Dies verringert die Tabellengröße und vergrößert die Speichereffizienz auf Kosten von der Durchsuchung von zwei Tabellen und dem Empfangen von zwei Tabellen.
  • OCLASS-Tabelle
  • Die meisten Attribute verfügen über eine große Variation ihrer Werte, zum Beispiel Nachnamen können variieren zwischen AALDERS bis ZYLA mit einer großen Anzahl verschiedener Werte dazwischen. Objektklassen (deren Werte Objekt-Identifikatoren oder OIDs sind) haben jedoch nur sehr wenige Werte, zum Beispiel in einer Organisation von 1000 Menschen, die einzigen Objektklassen in dem Directory können für die Organisation, Organisationseinheit und Organisationspersonal bestehen (für welche die letztgenannte die Meisten aufweisen). Die Oclass-Tabelle gibt eine numerische Beschreibung für eine Objektklasse, genannte OCID. Die OCID kann in der S-Entry-Tabelle gespeichert werden und es kann immer dann ein Mapping durchgeführt werden, wenn eine Objektklasse gesucht oder erhalten wird. Die anderen Listspalten speichern Standard-Objektklassen-Konfigurationsinformationen – nämlich die Attribute, die enthalten sein müssen und können, und die inhärenten Superklassen.
  • 6.2 Portabilität
  • BLOB-Tabelle
  • Diese Tabelle wurde eingeführt, um "binary large objects" zu umfassen. Die maximale Größe eines Zeilenantrags in der Entry-Tabelle ist beschränkt durch die Länge des Raw-Felds. Dies bedeutet, dass Einträge fragmentiert werden müssen. Fragmentierte Einträge besetzen mehr als eine Zeile und so muss ein VFRAG-Feld verwendet werden, um das Fragment des Eintrags anzuzeigen, das in der speziellen Zeile gespeichert wird.
  • Es gibt zwei Optionen zum Speichern sehr großer Werte:
    • a) füge ein "Fragmentflag" in die Eintragtabelle ein und speichere den Eintrag in Fragmenten über eine Anzahl von Linien; oder
    • b) füge eine BLOB-Tabelle zu, um den Eintrag zu speichern, und füge ein "BLOB-Flag" in die Entry-Tabelle ein, um anzuzeigen, dass dieser Wert in der BLOB-Tabelle gespeichert ist.
  • Die zweite Option hat eine Vielzahl von Vorteilen. Zuerst vermeidet das Einschließen einer BLOB-Tabelle, dass die Ein tragtabelle sehr groß wird. Typischerweise sind die meisten Einträge kleiner als einige hundert Zeichen in der Länge, so dass die Länge des Raw-Felds in der Entry-Tabelle dementsprechend reduziert werden kann, um auf solche Einträge abgestimmt zu sein, und das Raw-Feld in der BLOB-Tabelle kann vergrößert werden auf einen Wert, der die maximale Rekordgröße erreicht. Das wird das Speichern effizienter gestalten, zum Beispiel die Anzahl ungenutzter Bits in jeder Spalte einer jeden Tabelle reduzieren und die Anzahl der benötigten Fragmente für jeden Eintrag in BLOB-Tabelle reduzieren. Dies bedeutet auch, dass jeder Wert nur einen Eintrag in der Eintragtabelle hat und dass die Eintragtabelle und Suchtabelle ihre 1-1-Korrelation beibehalten.
  • Weiterhin erlaubt die Verwendung einer BLOB-Tabelle, dass Anwendungen alle Datenbanken verwenden, die binary large objects unterstützen (zum Beispiel 64 k Binary-Spalten).
  • 6.3 Funktionale Erweiterbarkeit
  • Flag-Spalten
  • Es ist bevorzugt Flag-Spalten hinzuzufügen. Diese Spalten wurden hinzugefügt, um die Erweiterbarkeit des Designs zu ermöglichen. Spezielle Werte können hinzugefügt werden an die Flags als neue, erforderliche Funktionalitäten, ohne die Struktur der Tabellen zu ändern.
  • Merke:
    • a) In der Suchtabelle kann das Disting-Feld in das Flag-Feld absorbiert sein.
    • b) In der DIT-Tabelle kann das Alias-Feld in das Flag-Feld adsorbiert sein.
  • Die Flag-Spalten können auch eine "Summen"-Funktion für jede der Tabellen bereitstellen. Das bedeutet, dass die Natur eines Eintrags zu einem gewissen Umfang bestimmt werden kann, indem der Wert des Flagfelds überprüft wird. So kann zum Beispiel ein Flag in der DIT-Tabelle gesetzt werden, wenn der Eintrag ein Blatt ist. Die Überprüfung dieses Flags ist einfacher als das Überprüfen der Kinder des Eintrags.
  • Die Flag-Spalten können auch verwendet werden, um Sicherheitsinformationen zu speichern, ob ein Alias-Punkt innerhalb seines Ursprungsunterbaums ist, ob ein Wert ein BLOB ist, usw.
  • 7. BEISPIEL-IMPLEMENTIERUNG
  • Die folgende Beschreibung stellt ein Beispiel der Leistung und der Möglichkeiten des Systems dar. Es soll verstanden werden, dass die vorliegende Erfindung durch die folgende Beschreibung nicht beschränkt wird.
  • 7.1 Insgesamte Systemvorteile
  • Die vorliegende Erfindung stellt eine Vielzahl verbesserter Leistungen gegenüber dem Stand der Technik bereit. Die Leistung kann auf vielfältige Art und Weise verbessert werden, umfassend:
    Aliases;
    Größe (Verwendung der relationalen Theorie);
    Komplexität (Verwendung eines Anfrageoptimierers und von Suchmethoden);
    Erweiterbarkeit (Verwendung von Metadaten); und
    im Wesentlichen ohne das Verschlechtern der Effizienz (Verwendung des disparsierten Modells) und der Zuverlässigkeit (Verwendung von RDBMS).
  • Die vorliegende Erfindung ist einzigartig darin, dass es möglich ist, Leistungsverbesserungen in allen oben angegebenen Bereichen zu erzielen.
  • 7.2 Testergebnisse
  • Leistungstests der vorliegenden Erfindung wurden ausgeführt mit dem Ziel von:
    • – Beweisen, dass ein SQL-basiertes X.500-Anwendungssystem hohe Geschwindigkeiten ausführen kann, widerlegend einen im Markt weitverbreiteten Mythos, dass es unmöglich ist, eine X.500-DSA-Anwendung als eine integrierte RDBMS-Anwendung zu implementieren und Effizienz und Leistung bereitzustellen.
    • – Beweisen, dass das Design einer SQL-basierten X.500-Anwendung stehende, speicherresistente X.500-Designs in der Leistung übertreffen kann, insbesondere für Datenbanken größer als 100000 Einträge, was ein typisches Limit für gewöhnliche Designs ist.
    • – Bereitstellung eines strukturierten Umfangs von Tests, die obige Leistung nach Bedarf für eine große Vielzahl von Diensten und Datenbankgrößen unter Beweisstellen können.
  • Die Ergebnisse sind in der folgenden Tabelle 7a wiedergegeben.
  • Figure 01040001
    Tabelle 7a
  • Anmerkungen:
    • 1. Alle Suchen und Abfragen geben alle Informationen zurück
    • 2. Alle Tests wurden durchgeführt unter der folgenden Umgebung;
    • – Sun Spark Station 5 mit 32 MB Speicher (Entry-Level Unix-Maschine)
    • – Ingres 6.1/04 konfigurierte für 32 Anwender (Standard-Ingres-Installation)
    • – DSA-Prototyp V2.1.2
    • – Zeiten wurden auf der DSA-Konsole gemessen (zum Beispiel umfasst dies nicht Netwerk-Overheads)
  • Alle Zahlen sind in der Einheit von Sekunden angegeben und "K" bedeutet 1000.
  • 7.3 Test Ergebnisse
  • Ein Satz von Directories wurde konstruiert in einem Bereich von 1K bis 200K Einträgen mit variierender Breite und Tiefe der Hierarchie, und ein korrespondierender Testplan wurde produziert. Die Tests wurden mehrfach durchgeführt, um deren Konsistenz sicherzustellen. Die folgenden Argumenten können aus den Tests gezogen werden:
    • 1. Die Effekte der Navigation waren im Test vernachlässigbar.
    • 2. Das Lesen eines Objekts gegenüber einem Alias zeigte im Test keine messbare Vergrößerung in der Leistung und in einigen Fällen war sogar das Lesen eines Objekts gegenüber einem Alias schneller als das Lesen des Objekt-Directories. Dies ergibt sich aus der verringerten, erforderlichen Navigation, wenn ein Alias nach unten zeigt auf ein Objekt, das tiefer in der Baumstruktur ist als der Alias-Eintrag.
    • 3. Die Suchergebnisse waren "flach" über unterschiedliche bemessene Unterbäume in unterschiedlich bemessenen Directories sowohl für exakte als auch anfängliche Stringsuchen.
    • 4. Anfängliche und exakte Suchen des gesamten Baums waren im Test geringfügig schneller als ihre entsprechenden Unterbaumsuchen, und zwar dann, wenn die Anzahl der Suchen größer war. Das liegt darin begründet, dass die Suchen des vollen Baums SQL effizienter nutzen können (es sind keine Tabellenverzweigungen erforderlich).
    • 5. Alle Dienste wurden im Test unter einer Sekunde durchgeführt, ausgenommen für Suchen, die eine große Menge von Daten übermitteln. Die durchschnittliche Zeit des Empfangens je Eintrag fällt, wenn die Anzahl der empfangenen Einträge fällt (zum Beispiel für 10 Einträge ist die Empfangszeit näherungsweise 50 msec. je Eintrag, für 100 Einträge fällt dies auf annäherungsweise 20 msec. je Eintrag).
    • 6. Alle komplexen Suchen wurden im Test unter einer Sekunde durchgeführt. Es gab jedoch einige obskure Suchen (zum Beispiel die Kombinationen mit NOT enthalten, die nicht genauso gut arbeiten).
  • Weil dies ein Disk-basiertes System ist (eher als ein Speicherbasiertes System) hängt die Leistung im Wesentlichen nur von der Anzahl der aktuell zu übertragenden Einträge ab. Dies ist relativ unabhängig von der Komplexität der Suche, der tiefe der Hierarchie, der Anzahl der Attribute je Eintrag oder der Attributtypen, die in der Anfrage benutzt werden. In einer "Live"-Anwendung des Systems kann es möglich sein, die erzielten Testergebnisse dadurch zu verbessern, dass das Zwischenspeichern der Parameter eingestellt wird, und indem eine größere Vielfalt von Attributen verwendet wird.

Claims (22)

  1. Datenverarbeitungsvorrichtung zur Bereitstellung von Directorydiensten bezüglich Datenobjekten, wobei jedes Datenobjekt wenigstens ein Attribut und jedes Attribut einen oder mehrere Werte aufweist, mit: Empfangsmitteln zum Empfangen von Directorydienst-Operationsbefehlen; und Datenbankmitteln, die angeordnet sind, um Daten zu speichern und Directorydienst-Operationen in Übereinstimmung mit den von den Empfangsmitteln empfangenen Directorydienst-Operationsbefehlen auszuführen; dadurch gekennzeichnet, dass die Datenbankmittel umfassen: Hierarchiedefinitionsmittel zur Definition von Beziehungen zwischen Objekten und einem Entry-Identifikator, der jedes Objekt identifiziert; Attributdefinitionsmittel, um eine Vielzahl von Attributdefinitionen zu speichern, wobei jede Attributdefinition ein entsprechendes Attribut definiert und einen Attribut-Identifikator umfasst; Mittel zur Speicherung von Wertedaten für jedes Objekt, wobei die Wertedaten Attributwerte und, verbunden mit jedem Attributwert, einen entsprechenden Attribut-Identifikator und einen Entry-Identifikator aufweisen, der das Objekt identifiziert, auf welches sich der Attributwert bezieht; und Mittel die auf die Directorydienst-Operationsbefehle antworten, um die Datenobjekte zu ermitteln und/oder zu übertragen, welche die durch die Hierarchiedefinitionsmittel, die gespeicherten Attributdefinitionen und die gespeicherten Wertedaten definierten Beziehungen verwenden.
  2. Eine Vorrichtung nach Anspruch 1, wobei das Hierarchiedefinitionsmittel vorgesehen ist, um Ursprungsdaten zu speichern, die den Entry-Identifikator eines jeden Objekts auf einen anderen Entry-Identifikator oder ein Rootobjekt beziehen, wodurch Daten gespeichert werden, die für jedes Objekt einer hierarchischen Beziehung relativ zu dem Rootobjekt direkt oder über andere Objekte entsprechen, wobei das Datenbankmittel vorgesehen ist, um Directorydienst-Operationen unter Verwendung der Ursprungsdaten auszuführen.
  3. Vorrichtung nach Anspruch 1 oder 2, wobei das Datenbankmittel weiterhin vorgesehen ist, um dem Entry-Identifikator eines jeden Objektes zugeordnete Pfaddaten zu speichern, die einer relativen hierarchischen Beziehung des Objekts bezüglich des Rootobjektes entsprechen, und wobei die Datenbankmittel vorgesehen sind, um Directorydienst-Operationen unter Verwendung dieser Pfaddaten auszuführen.
  4. Vorrichtung nach Anspruch 3, wobei das Datenbankmittel vorgesehen ist, um die Pfaddaten in einem Pfaddefinitionsmittel getrennt von den Hierarchiedefinitionsmitteln zu speichern.
  5. Vorrichtung nach jedem der vorstehenden Ansprüche, wobei das Datenbankmittel vorgesehen ist, um Aliasdaten zu speichern, die die Äquivalenz eines Objektes in Bezug auf ein anderes Objekt wiedergeben, wobei das Datenbankmittel vorgesehen ist, um die Directorydienst-Operationen auszuführen, indem Referenzen auf einen Entry-Identifikator eines Objektes, welches durch seine Aliasdaten als ein Äquivalent für ein anderes Objekt erkannt wird, in Referenzen auf die Entry-Identifkatoren ihrer äquivalenten Objekte unter Verwendung der Aliasdaten konvertiert werden.
  6. Vorrichtung nach Anspruch 5, wobei das Datenbankmittel vorgesehen ist, um die Aliasdaten in Aliasdefinitionsmitteln getrennt von dem Hierarchiedefinitionsmittel zu speichern.
  7. Vorrichtung nach jedem der vorstehenden Ansprüche, wobei das Datenbankmittel vorgesehen ist, um Wertedaten für jedes Objekt in einer ersten Form und in einer zweiten Form zu speichern, wobei das Datenbankmittel angeordnet ist, um die Directorydienst-Operationen unter Verwendung eines Vergleiches der Wertedaten mit Daten auszuführen, die von den Empfangsmitteln unter Verwendung von in der ersten Form gespeicherten Daten empfangen werden, und um Daten unter Verwendung von in der zweiten Form gespeicherten Daten auszugeben.
  8. Vorrichtung nach Anspruch 7, wobei das Datenbankmittel vorgesehen ist, um die Wertedaten in der ersten Form und die Wertedaten in der zweiten Form in getrennten Attributdefinitionsmitteln zu speichern.
  9. Vorrichtung nach jedem der vorstehenden Ansprüche, wobei das Datenbankmittel weiterhin vorgesehen ist, um Konvertierungsdaten zu speichern, die der Konvertierung von Daten zwischen als Teil von Directorydienst-Operationsbefehlen empfangenen Daten, die Typdaten entsprechen, und Attribut-Identifikatoren dienen.
  10. Vorrichtung in Übereinstimmung mit jedem der vorstehenden Ansprüche, wobei das Datenbankmittel vorgesehen ist, um Daten zu speichern, die der Generierung von eindeutigen Namen für jedes der Objekte dienen, wobei das Datenbankmittel vorgesehen ist, um die Directorydienst-Befehle unter Verwendung der eindeutigen Namen für die Objekte auszuführen.
  11. Vorrichtung nach Anspruch 10, wobei das Datenbankmittel vorgesehen ist, um Namen-Identifikationsdaten zu speichern, die für ein Objekt Wertedaten als Daten identifizieren, die einen Teil des eindeutigen Namens für jedes Objekt bilden.
  12. Vorrichtung nach Anspruch 11 unter direkter oder indirekter Abhängigkeit auf Anspruch 2, wobei das Datenbankmittel vorgesehen ist, um für jedes Objekt Namensdaten zu erzeugen, und zwar unter Verwendung von Wertedaten, die Namens-Identifikationsdaten zugeordnet sind, die wiedergeben, dass die Wertedaten einen Teil eines Namens für ein Objekt bilden, und um für jedes Objekt einen eindeutigen Namen zu erzeugen, und zwar unter Verwendung der Namens-Identifikationsdaten und der Daten, die einem Objekt und seiner hierarchischen Beziehung relativ zu einem Rootobjekt direkt oder über andere Objekte entsprechen.
  13. Vorrichtung nach Anspruch 11 oder Anspruch 12, direkt oder indirekt abhängig von Anspruch 3, wobei das Datenbankmittel vorgesehen ist, um den eindeutigen Namen für ein Objekt unter Bezugnahme auf den dem Objekt zugeordneten Entry-Identifikator zu speichern, wobei das Datenbankmittel vorgesehen ist, um den eindeutigen Namen für das Objekt unter Verwendung der Namens-Identifikationsdaten und der Pfaddaten zu erzeugen.
  14. Vorrichtung nach Anspruch 13, wobei das Datenbankmittel vorgesehen ist, um den eindeutigen Namen mit dem Entry-Identifikator, der die Namensdaten einem entsprechenden Objekt zuordnet, in einem Namensdefinitionsmittel getrennt von dem Hierarchiedefinitionsmittel zu speichern.
  15. Vorrichtung in Übereinstimmung mit Anspruch 14, wobei das Datenbankmittel vorgesehen ist, um den eindeutigen Namen für jedes Objekt in einer ersten Form und in einer zweiten Form zu speichern, wobei das Datenbankmittel vorgesehen ist, um die Directorydienst-Operationen unter Verwendung eines Vergleiches der eindeutigen Namensdaten mit Daten auszuführen, die von den Empfangsmitteln unter Verwendung von in der ersten Form gespeicherter Daten empfangen werden, und um Daten unter Verwendung von in der zweiten Form gespeicherter Daten auszugeben.
  16. Vorrichtung nach jedem der vorstehenden Ansprüche, wobei das Empfangsmittel angepasst ist, um Directorydienst-Befehle zu empfangen, die eine Anforderung zur Ausführung einer Vergleichsfunktion identifizieren, und wobei das Datenbankmittel vorgesehen ist, um nach Empfang eines solchen Befehls durch das Empfangsmittel die Anforderung des Vergleiches von Daten, die den Datenobjekten und anderen Daten zugeordnet sind, auszugeben.
  17. Vorrichtung nach Anspruch 16, wobei das Empfangsmittel angepasst ist, um eine Anfrage zur Ausführung einer Vergleichsfunktion zu empfangen, wobei der Befehl Daten aufweist, die mit Daten zu vergleichen sind, welche Datenobjekten zugeordnet sind.
  18. Vorrichtung nach Anspruch 16, wobei das Empfangsmittel angepasst ist, um Directorydienst-Befehle zu empfangen, die eine Vergleichsanforderung identifizieren, wobei die Befehle Daten umfassen, die eine Vielzahl von Datenobjekten wiedergeben, und wobei das Antwortmittel angeordnet ist, um nach Empfang dieser Befehle durch das Empfangsmittel die Datenobjekte zu lokalisieren und um das Ergebnis des Vergleichs der Daten, die den lokalisierten Datenobjekten zugeordnet sind, auszugeben.
  19. Vorrichtung nach jedem der vorstehenden Ansprüche, wobei das Empfangsmittel angepasst ist, um Directorydienst-Befehle zu empfangen, die eine Anforderung identifizieren, um in den Datenbankmitteln gespeicherte Daten abzuändern, und wobei das Antwortmittel vorgesehen ist, um nach Empfang dieser Befehle durch das Empfangsmittel die in den Datenbankmitteln gespeicherten Daten abzuändern.
  20. Vorrichtung nach jedem der vorstehenden Ansprüche, wobei das Empfangsmittel angepasst ist, um Directorydienst-Befehle zu empfangen, die eine Anforderung zur Ausführung einer Suchfunktion identifizieren, wobei die Befehle Suchkriterien definierende Suchdaten umfassen, wobei das Antwortmittel vorgesehen ist, um nach Empfang dieser Befehle durch das Empfangsmittel Daten auszugeben, welche in der Datenbank in Verbindung mit Entry-Identifikatoren gespeichert sind, entsprechend Entry-Identifikatoren, die in Verbindung mit Daten gespeichert sind, die das durch die empfangenen Suchdaten definierte Suchkriterium erfüllen.
  21. Vorrichtung nach Anspruch 20, wobei die Suchdaten Daten umfassen, welche eine oder mehrere durch Wertedaten zu erfüllende Kriterien umfassen, um wobei das Antwortmittel vorgesehen ist, um nach Empfang der Instruktionen durch das Empfangsmittel Daten auszugeben, welche in dem Datenbankmittel in Verbindung mit Entry-Identifikatoren gespeichert sind, die Entry-Identifikatoren entsprechen, welche in Verbindung mit Attributwerten gespeichert sind, die eine oder mehrere der zu erfüllenden Bedingungen erfüllen.
  22. Vorrichtung nach Anspruch 20 oder 21 unter direkter oder indirekter Abhängigkeit auf Anspruch 2, wobei die Suchdaten Umfangsdaten umfassen, die eine oder mehrere Bedingungen definieren, welche den Umfang einer Suche festlegen, und wobei das Antwortmittel vorgesehen ist, um nach Empfang der Instruktionen durch das Empfangsmittel Daten auszugeben, welche das durch die empfangenen Suchdaten definierte Suchkriterium erfüllen, die in Verbindung mit den Entry-Identifikatoren gespeichert sind, wobei in dem Datenbankmittel Daten gespeichert sind, die den Entry-Identifikatoren Daten mit einer hierarchischen Beziehung, welche eine oder mehrere der durch die Umfangsdaten definierten Bedingungen erfüllen, zuordnen.
DE69530595T 1994-09-01 1995-08-30 System und verfahren für die x.500-datenbanknorm Expired - Lifetime DE69530595T2 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
AUPM784294 1994-09-01
AUPM7842A AUPM784294A0 (en) 1994-09-01 1994-09-01 X.500 system and methods
AUPM9586A AUPM958694A0 (en) 1994-11-21 1994-11-21 X.500 system and methods
AUPM958694 1994-11-21
PCT/AU1995/000560 WO1996007147A1 (en) 1994-09-01 1995-08-30 X.500 system and methods

Publications (2)

Publication Number Publication Date
DE69530595D1 DE69530595D1 (de) 2003-06-05
DE69530595T2 true DE69530595T2 (de) 2004-03-18

Family

ID=25644756

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69530595T Expired - Lifetime DE69530595T2 (de) 1994-09-01 1995-08-30 System und verfahren für die x.500-datenbanknorm

Country Status (7)

Country Link
US (10) US6052681A (de)
EP (5) EP0777883B1 (de)
JP (1) JPH10505690A (de)
AT (1) ATE239257T1 (de)
DE (1) DE69530595T2 (de)
ES (1) ES2204962T3 (de)
WO (1) WO1996007147A1 (de)

Families Citing this family (140)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0777883B1 (de) * 1994-09-01 2003-05-02 Computer Associates Think, Inc. System und verfahren für die x.500-datenbanknorm
US7315860B1 (en) * 1994-09-01 2008-01-01 Computer Associates Think, Inc. Directory service system and method with tolerance for data entry storage and output
AUPQ678500A0 (en) * 2000-04-07 2000-05-11 Computer Associates Think, Inc. Directory searching apparatus and method(s)
US8065338B2 (en) 1995-08-30 2011-11-22 Computer Associates Think, Inc. Directory searching methods and systems
US6295380B1 (en) * 1997-02-27 2001-09-25 Matsushita Electric Industrial Co., Ltd. Object data processing apparatus, object data recording apparatus, data storage media, data structure for transmission
US7631012B2 (en) 1997-05-22 2009-12-08 Computer Associates Think, Inc. System and method of operating a database
US6760746B1 (en) 1999-09-01 2004-07-06 Eric Schneider Method, product, and apparatus for processing a data request
GB2329044B (en) * 1997-09-05 2002-10-09 Ibm Data retrieval system
US6243703B1 (en) * 1997-10-14 2001-06-05 International Business Machines Corporation Method of accessing and displaying subsystem parameters including graphical plan table data
US6192362B1 (en) * 1997-12-15 2001-02-20 International Business Machines Corporation System and method for creating a search form for accessing directory information
CA2334880A1 (en) * 1998-06-11 1999-12-16 Boardwalk Ltd. System, method, and computer program product for providing relational patterns between entities
US6356892B1 (en) * 1998-09-24 2002-03-12 International Business Machines Corporation Efficient implementation of lightweight directory access protocol (LDAP) search queries with structured query language (SQL)
US6347312B1 (en) * 1998-11-05 2002-02-12 International Business Machines Corporation Lightweight directory access protocol (LDAP) directory server cache mechanism and method
US6587856B1 (en) * 1998-12-07 2003-07-01 Oracle International Corporation Method and system for representing and accessing object-oriented data in a relational database system
US7801913B2 (en) * 1998-12-07 2010-09-21 Oracle International Corporation System and method for querying data for implicit hierarchies
US6748374B1 (en) 1998-12-07 2004-06-08 Oracle International Corporation Method for generating a relational database query statement using one or more templates corresponding to search conditions in an expression tree
US6442546B1 (en) * 1998-12-30 2002-08-27 At&T Corp. Messaging system with application-defined states
US7188138B1 (en) * 1999-03-22 2007-03-06 Eric Schneider Method, product, and apparatus for resource identifier registration and aftermarket services
USRE43690E1 (en) 1999-03-22 2012-09-25 Esdr Network Solutions Llc Search engine request method, product, and apparatus
US9141717B2 (en) 1999-03-22 2015-09-22 Esdr Network Solutions Llc Methods, systems, products, and devices for processing DNS friendly identifiers
US7085763B2 (en) * 1999-04-27 2006-08-01 Canon Kabushiki Kaisha Device search system
US6539382B1 (en) * 1999-04-29 2003-03-25 International Business Machines Corporation Intelligent pre-caching algorithm for a directory server based on user data access history
US7313581B1 (en) * 1999-04-29 2007-12-25 International Business Machines Corporation Method for deferred deletion of entries for a directory service backing store
US6470332B1 (en) * 1999-05-19 2002-10-22 Sun Microsystems, Inc. System, method and computer program product for searching for, and retrieving, profile attributes based on other target profile attributes and associated profiles
US6473898B1 (en) * 1999-07-06 2002-10-29 Pcorder.Com, Inc. Method for compiling and selecting data attributes
AUPQ428499A0 (en) 1999-11-26 1999-12-23 Computer Associates Pty. Ltd. A method and apparatus for operating a data base
JP3569912B2 (ja) * 1999-12-27 2004-09-29 日本電気株式会社 Ip網サービス管理のためのサービス指向dit構成を記録したコンピュータ読み取り可能な記録媒体
US6615223B1 (en) 2000-02-29 2003-09-02 Oracle International Corporation Method and system for data replication
AU2001243443A1 (en) * 2000-03-09 2001-09-17 The Web Access, Inc. Method and apparatus for performing a research task by interchangeably utilizinga multitude of search methodologies
JP2001291308A (ja) * 2000-04-10 2001-10-19 Alpine Electronics Inc Dvdビデオプレーヤ
US6714930B1 (en) * 2000-05-31 2004-03-30 International Business Machines Corporation Lightweight directory access protocol, (LDAP) trusted processing of unique identifiers
AU2001271604A1 (en) * 2000-06-28 2002-01-08 Gutierrez, Francisco System and method for providing personalized recommendations
US6609121B1 (en) * 2000-07-17 2003-08-19 International Business Machines Corporation Lightweight directory access protocol interface to directory assistance systems
JP3983961B2 (ja) * 2000-07-18 2007-09-26 株式会社東芝 ディレクトリ情報管理装置及びプログラムを記録したコンピュータ読み取り可能な記録媒体
GB2368929B (en) * 2000-10-06 2004-12-01 Andrew Mather An improved system for storing and retrieving data
AUPR111700A0 (en) * 2000-10-31 2000-11-23 Fillingham, Neil Peter Browsing method and apparatus
US8161081B2 (en) 2001-03-16 2012-04-17 Michael Philip Kaufman System and method for generating automatic user interface for arbitrarily complex or large databases
US7016897B2 (en) * 2000-12-29 2006-03-21 International Business Machines Corporation Authentication referral search for LDAP
US7480860B2 (en) * 2001-04-23 2009-01-20 Versata Computer Industry Solutions, Inc. Data document generator to generate multiple documents from a common document using multiple transforms
US7016945B2 (en) * 2001-04-27 2006-03-21 Sun Microsystems, Inc. Entry distribution in a directory server
US6785686B2 (en) 2001-05-29 2004-08-31 Sun Microsystems, Inc. Method and system for creating and utilizing managed roles in a directory system
US7363286B2 (en) * 2001-10-29 2008-04-22 International Business Machines Corporation File system path alias
US6976015B2 (en) * 2001-11-07 2005-12-13 Hyperion Solutions Corporation Method for extracting data from a relational database using a reduced query
US7225256B2 (en) 2001-11-30 2007-05-29 Oracle International Corporation Impersonation in an access system
US7213018B2 (en) 2002-01-16 2007-05-01 Aol Llc Directory server views
US7693830B2 (en) 2005-08-10 2010-04-06 Google Inc. Programmable search engine
US7743045B2 (en) 2005-08-10 2010-06-22 Google Inc. Detecting spam related and biased contexts for programmable search engines
US7716199B2 (en) 2005-08-10 2010-05-11 Google Inc. Aggregating context data for programmable search engines
CA2398049A1 (en) * 2002-08-27 2004-02-27 Kevin W. Jameson Collection shortcut reference expander
US20040088365A1 (en) * 2002-10-30 2004-05-06 Sun Microsystems, Inc. Service information model mapping with shared directory tree representations
US7076488B2 (en) * 2003-01-29 2006-07-11 Hewlett-Packard Development Comapny, L.P. XML-LDAP adapters and methods therefor
US8250108B1 (en) * 2003-02-07 2012-08-21 Teradata Us, Inc. Method for transferring data into database systems
US7216123B2 (en) * 2003-03-28 2007-05-08 Board Of Trustees Of The Leland Stanford Junior University Methods for ranking nodes in large directed graphs
US7028029B2 (en) * 2003-03-28 2006-04-11 Google Inc. Adaptive computation of ranking
CA2427228A1 (en) * 2003-04-30 2004-10-30 Ibm Canada Limited - Ibm Canada Limitee Information retrieval systems for optimization of queries having maximum or minimum function aggregation predicates
US20040243616A1 (en) * 2003-05-30 2004-12-02 International Business Machines Corporation Sorting and filtering a treetable using the indices of the rows
US20050010610A1 (en) * 2003-07-08 2005-01-13 Konica Minolta Business Technologies, Inc. File management system, file management apparatus and image forming apparatus
US20050015383A1 (en) * 2003-07-15 2005-01-20 Microsoft Corporation Method and system for accessing database objects in polyarchical relationships using data path expressions
US7313572B2 (en) * 2003-09-30 2007-12-25 Oracle International Corporation Attribute partitioning for user extensibility
US20050222989A1 (en) * 2003-09-30 2005-10-06 Taher Haveliwala Results based personalization of advertisements in a search engine
US8321278B2 (en) * 2003-09-30 2012-11-27 Google Inc. Targeted advertisements based on user profiles and page profile
US7340447B2 (en) * 2003-10-09 2008-03-04 Oracle International Corporation Partitioning data access requests
US7882132B2 (en) 2003-10-09 2011-02-01 Oracle International Corporation Support for RDBMS in LDAP system
US7904487B2 (en) 2003-10-09 2011-03-08 Oracle International Corporation Translating data access requests
US7620630B2 (en) * 2003-11-12 2009-11-17 Oliver Lloyd Pty Ltd Directory system
US7111797B2 (en) * 2004-03-22 2006-09-26 International Business Machines Corporation Non-contact fluid particle cleaner and method
US7716223B2 (en) 2004-03-29 2010-05-11 Google Inc. Variable personalization of search results in a search engine
US8489551B2 (en) * 2004-05-21 2013-07-16 Ca, Inc. Method for selecting a processor for query execution
GB0412906D0 (en) 2004-06-09 2004-07-14 Capture Ltd Data compilation apparatus and method
US7565630B1 (en) 2004-06-15 2009-07-21 Google Inc. Customization of search results for search queries received from third party sites
US7904488B2 (en) 2004-07-21 2011-03-08 Rockwell Automation Technologies, Inc. Time stamp methods for unified plant model
US7779022B2 (en) * 2004-09-01 2010-08-17 Oracle International Corporation Efficient retrieval and storage of directory information system knowledge referrals
US7340672B2 (en) * 2004-09-20 2008-03-04 Intel Corporation Providing data integrity for data streams
US8756521B1 (en) 2004-09-30 2014-06-17 Rockwell Automation Technologies, Inc. Systems and methods for automatic visualization configuration
US7315854B2 (en) * 2004-10-25 2008-01-01 International Business Machines Corporation Distributed directory replication
US7962484B2 (en) * 2004-12-03 2011-06-14 Oracle International Corporation LDAP bulk append
US8433720B2 (en) * 2004-12-29 2013-04-30 Oracle International Corporation Enabling an application to interact with an LDAP directory as though the LDAP directory were a database object
EP1677208A1 (de) * 2004-12-30 2006-07-05 Sap Ag Verfahren und System zum Suchen nach Datenobjekten
EP1688817A1 (de) * 2005-02-03 2006-08-09 Sun Microsystems France S.A. Verfahren und Vorrichtung zur Tabellensuche nach Rollenmitgliedschaft in Abhängigkeit der anfordernden Anwendung
US7685203B2 (en) * 2005-03-21 2010-03-23 Oracle International Corporation Mechanism for multi-domain indexes on XML documents
US7373348B2 (en) * 2005-04-14 2008-05-13 International Business Machines Corporation Distributed directory deployment
US7672737B2 (en) 2005-05-13 2010-03-02 Rockwell Automation Technologies, Inc. Hierarchically structured data model for utilization in industrial automation environments
US7650405B2 (en) 2005-05-13 2010-01-19 Rockwell Automation Technologies, Inc. Tracking and tracing across process boundaries in an industrial automation environment
US8799800B2 (en) 2005-05-13 2014-08-05 Rockwell Automation Technologies, Inc. Automatic user interface generation
US7676281B2 (en) 2005-05-13 2010-03-09 Rockwell Automation Technologies, Inc. Distributed database in an industrial automation environment
US7809683B2 (en) 2005-05-13 2010-10-05 Rockwell Automation Technologies, Inc. Library that includes modifiable industrial automation objects
US7689634B2 (en) * 2005-09-16 2010-03-30 Oracle International Corporation Flexible approach to store attribute information (META-DATA) related to files of a file system
US8412750B2 (en) * 2005-09-26 2013-04-02 Research In Motion Limited LDAP to SQL database proxy system and method
US7548789B2 (en) 2005-09-29 2009-06-16 Rockwell Automation Technologies, Inc. Editing lifecycle and deployment of objects in an industrial automation environment
US7881812B2 (en) 2005-09-29 2011-02-01 Rockwell Automation Technologies, Inc. Editing and configuring device
US7660638B2 (en) 2005-09-30 2010-02-09 Rockwell Automation Technologies, Inc. Business process execution engine
US8275680B2 (en) 2005-09-30 2012-09-25 Rockwell Automation Technologies, Inc. Enabling transactional mechanisms in an automated controller system
US7822736B2 (en) * 2005-09-30 2010-10-26 Computer Associates Think, Inc. Method and system for managing an index arrangement for a directory
US7801628B2 (en) 2005-09-30 2010-09-21 Rockwell Automation Technologies, Inc. Industrial operator interfaces interacting with higher-level business workflow
US7562087B2 (en) 2005-09-30 2009-07-14 Computer Associates Think, Inc. Method and system for processing directory operations
US8484250B2 (en) 2005-09-30 2013-07-09 Rockwell Automation Technologies, Inc. Data federation with industrial control systems
US7734590B2 (en) 2005-09-30 2010-06-08 Rockwell Automation Technologies, Inc. Incremental association of metadata to production data
US7743363B2 (en) * 2005-10-13 2010-06-22 Microsoft Corporation Extensible meta-data
US8321486B2 (en) * 2005-11-09 2012-11-27 Ca, Inc. Method and system for configuring a supplemental directory
US20070112791A1 (en) * 2005-11-09 2007-05-17 Harvey Richard H Method and system for providing enhanced read performance for a supplemental directory
US8326899B2 (en) 2005-11-09 2012-12-04 Ca, Inc. Method and system for improving write performance in a supplemental directory
US8458176B2 (en) * 2005-11-09 2013-06-04 Ca, Inc. Method and system for providing a directory overlay
US7624118B2 (en) * 2006-07-26 2009-11-24 Microsoft Corporation Data processing over very large databases
US7734611B2 (en) * 2006-11-01 2010-06-08 Red Hat, Inc. Dynamic views based on LDAP
US8073842B2 (en) * 2006-11-01 2011-12-06 Red Hat, Inc. Deriving cross-organizational relationships from LDAP source data
US7730084B2 (en) * 2006-11-01 2010-06-01 Red Hat, Inc. Nested queries with index
US7734662B2 (en) * 2006-11-01 2010-06-08 Red Hat, Inc. Extension of organizational chart dynamic group lists based on LDAP lookups
US7797281B1 (en) 2007-01-12 2010-09-14 Symantec Operating Corporation Granular restore of data objects from a directory service
US9112873B2 (en) 2007-04-10 2015-08-18 Apertio Limited Alias hiding in network data repositories
US8402147B2 (en) * 2007-04-10 2013-03-19 Apertio Limited Nomadic subscriber data system
US8782085B2 (en) * 2007-04-10 2014-07-15 Apertio Limited Variant entries in network data repositories
CN101295306B (zh) * 2007-04-26 2012-09-05 国际商业机器公司 目录服务器中的修改条目名称操作方法和相应设备
US8112434B2 (en) * 2007-07-09 2012-02-07 International Business Machines Corporation Performance of an enterprise service bus by decomposing a query result from the service registry
US20090063417A1 (en) * 2007-08-30 2009-03-05 Kinder Nathan G Index attribute subtypes for LDAP entries
DE102007057248A1 (de) * 2007-11-16 2009-05-20 T-Mobile International Ag Verbindungsschicht für Datenbanken
US9558169B2 (en) * 2007-11-20 2017-01-31 Sap Se Hierarchical grouping columns
EP2131293A1 (de) 2008-06-03 2009-12-09 Alcatel Lucent Verfahren zur Abbildung eines X500-Datenmodells in einer relationalen Datenbank
DE102008047915B4 (de) * 2008-09-19 2010-05-12 Continental Automotive Gmbh Infotainmentsystem und Computerprogrammprodukt
US20100241893A1 (en) 2009-03-18 2010-09-23 Eric Friedman Interpretation and execution of a customizable database request using an extensible computer process and an available computing environment
WO2010112076A1 (en) * 2009-04-02 2010-10-07 Telefonaktiebolaget Lm Ericsson (Publ) Method for managing a directory, controller, system including servers, and computer program
JP5471035B2 (ja) 2009-05-26 2014-04-16 ソニー株式会社 表示装置、表示装置の製造方法、および電子機器
US8868510B2 (en) * 2009-12-03 2014-10-21 Sybase, Inc. Managing data storage as an in-memory database in a database management system
US8484401B2 (en) 2010-04-15 2013-07-09 Rockwell Automation Technologies, Inc. Systems and methods for conducting communications among components of multidomain industrial automation system
US8984533B2 (en) 2010-04-15 2015-03-17 Rockwell Automation Technologies, Inc. Systems and methods for conducting communications among components of multidomain industrial automation system
US9392072B2 (en) 2010-04-15 2016-07-12 Rockwell Automation Technologies, Inc. Systems and methods for conducting communications among components of multidomain industrial automation system
CN102231757B (zh) * 2011-06-29 2013-11-06 浙江大学 一种在线的服务组合推荐系统及其推荐方法
US9430548B1 (en) * 2012-09-25 2016-08-30 Emc Corporation Generating context tree data based on a tailored data model
US10635674B2 (en) 2012-09-28 2020-04-28 Oracle International Corporation Migrating a pluggable database between database server instances with minimal impact to performance
US10922331B2 (en) 2012-09-28 2021-02-16 Oracle International Corporation Cloning a pluggable database in read-write mode
US9158796B1 (en) * 2013-03-11 2015-10-13 Ca, Inc. Data source modeling methods for heterogeneous data sources and related computer program products and systems
US20140343989A1 (en) * 2013-05-16 2014-11-20 Phantom Technologies, Inc. Implicitly linking access policies using group names
US10789131B2 (en) 2015-10-23 2020-09-29 Oracle International Corporation Transportable backups for pluggable database relocation
US10579478B2 (en) 2015-10-23 2020-03-03 Oracle International Corporation Pluggable database archive
US10606578B2 (en) 2015-10-23 2020-03-31 Oracle International Corporation Provisioning of pluggable databases using a central repository
US11068437B2 (en) 2015-10-23 2021-07-20 Oracle Interntional Corporation Periodic snapshots of a pluggable database in a container database
US10162729B1 (en) 2016-02-01 2018-12-25 State Farm Mutual Automobile Insurance Company Automatic review of SQL statement complexity
CN108536705B (zh) * 2017-03-02 2021-10-01 华为技术有限公司 数据库系统中对象的编码及运算方法与数据库服务器
CN107463695A (zh) * 2017-08-14 2017-12-12 浪潮软件股份有限公司 一种数据存储的方法及装置
US10942908B2 (en) * 2019-01-14 2021-03-09 Business Objects Software Ltd. Primary key determination
US11726952B2 (en) 2019-09-13 2023-08-15 Oracle International Corporation Optimization of resources providing public cloud services based on adjustable inactivity monitor and instance archiver

Family Cites Families (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4914571A (en) * 1987-06-15 1990-04-03 International Business Machines Corporation Locating resources in computer networks
US5218699A (en) * 1989-08-24 1993-06-08 International Business Machines Corporation Remote procedure calls in heterogeneous systems
AU631276B2 (en) 1989-12-22 1992-11-19 Bull Hn Information Systems Inc. Name resolution in a directory database
US5117349A (en) 1990-03-27 1992-05-26 Sun Microsystems, Inc. User extensible, language sensitive database system
US5291583A (en) 1990-12-14 1994-03-01 Racal-Datacom, Inc. Automatic storage of persistent ASN.1 objects in a relational schema
US5317742A (en) * 1991-06-21 1994-05-31 Racal-Datacom, Inc. Dynamic translation of network management primitives to queries to a database
US5388255A (en) * 1991-12-19 1995-02-07 Wang Laboratories, Inc. System for updating local views from a global database using time stamps to determine when a change has occurred
US5414812A (en) * 1992-03-27 1995-05-09 International Business Machines Corporation System for using object-oriented hierarchical representation to implement a configuration database for a layered computer network communications subsystem
US5412804A (en) 1992-04-30 1995-05-02 Oracle Corporation Extending the semantics of the outer join operator for un-nesting queries to a data base
US5442690A (en) * 1992-08-25 1995-08-15 Bell Communications Research, Inc. Telecommunication service record structure and method of execution
JPH0820982B2 (ja) 1992-11-12 1996-03-04 インターナショナル・ビジネス・マシーンズ・コーポレイション コンピュータ・アプリケーションプログラム収納体の項目をフィルタ処理する方法
US5491817A (en) * 1993-05-25 1996-02-13 Bell Communications Research Inc. Linking system and method for accessing directory information about an object in one context when information in another context is known
US5548726A (en) 1993-12-17 1996-08-20 Taligeni, Inc. System for activating new service in client server network by reconfiguring the multilayer network protocol stack dynamically within the server node
US5659725A (en) 1994-06-06 1997-08-19 Lucent Technologies Inc. Query optimization by predicate move-around
US5758144A (en) 1994-06-24 1998-05-26 International Business Machines Corporation Database execution cost and system performance estimator
US5664172A (en) * 1994-07-19 1997-09-02 Oracle Corporation Range-based query optimizer
EP0777883B1 (de) 1994-09-01 2003-05-02 Computer Associates Think, Inc. System und verfahren für die x.500-datenbanknorm
DE69528749T2 (de) 1995-02-17 2003-09-18 Ibm Objektorientierte Programmierschnittstelle zur Entwicklung und zur Ausführung einer Netzwerkverwaltungsapplikation auf einer Netzwerkkommunikationsinfrastruktur
US5649182A (en) 1995-03-17 1997-07-15 Reitz; Carl A. Apparatus and method for organizing timeline data
WO1996034350A1 (en) 1995-04-24 1996-10-31 Aspect Development, Inc. Modeling of object-oriented database structures, translation to relational database structures, and dynamic searches thereon
US5634053A (en) 1995-08-29 1997-05-27 Hughes Aircraft Company Federated information management (FIM) system and method for providing data site filtering and translation for heterogeneous databases
US8065338B2 (en) 1995-08-30 2011-11-22 Computer Associates Think, Inc. Directory searching methods and systems
US5692181A (en) * 1995-10-12 1997-11-25 Ncr Corporation System and method for generating reports from a computer database
US5794232A (en) * 1996-03-15 1998-08-11 Novell, Inc. Catalog services for distributed directories
US5953716A (en) 1996-05-30 1999-09-14 Massachusetts Inst Technology Querying heterogeneous data sources distributed over a network using context interchange
US5745900A (en) 1996-08-09 1998-04-28 Digital Equipment Corporation Method for indexing duplicate database records using a full-record fingerprint
US5987446A (en) 1996-11-12 1999-11-16 U.S. West, Inc. Searching large collections of text using multiple search engines concurrently
US5878415A (en) 1997-03-20 1999-03-02 Novell, Inc. Controlling access to objects in a hierarchical database
US6003050A (en) 1997-04-02 1999-12-14 Microsoft Corporation Method for integrating a virtual machine with input method editors
US6122627A (en) 1997-05-09 2000-09-19 International Business Machines Corporation System, method, and program for object building in queries over object views
US5806061A (en) 1997-05-20 1998-09-08 Hewlett-Packard Company Method for cost-based optimization over multimeida repositories
US7631012B2 (en) 1997-05-22 2009-12-08 Computer Associates Think, Inc. System and method of operating a database
US6236997B1 (en) 1997-06-23 2001-05-22 Oracle Corporation Apparatus and method for accessing foreign databases in a heterogeneous database system
US6112198A (en) 1997-06-30 2000-08-29 International Business Machines Corporation Optimization of data repartitioning during parallel query optimization
US5864840A (en) * 1997-06-30 1999-01-26 International Business Machines Corporation Evaluation of existential and universal subquery in a relational database management system for increased efficiency
US6016499A (en) 1997-07-21 2000-01-18 Novell, Inc. System and method for accessing a directory services respository
US6112304A (en) 1997-08-27 2000-08-29 Zipsoft, Inc. Distributed computing architecture
GB2329044B (en) 1997-09-05 2002-10-09 Ibm Data retrieval system
US6195653B1 (en) 1997-10-14 2001-02-27 International Business Machines Corporation System and method for selectively preparing customized reports of query explain data
US6044442A (en) 1997-11-21 2000-03-28 International Business Machines Corporation External partitioning of an automated data storage library into multiple virtual libraries for access by a plurality of hosts
US6009422A (en) 1997-11-26 1999-12-28 International Business Machines Corporation System and method for query translation/semantic translation using generalized query language
US6016497A (en) 1997-12-24 2000-01-18 Microsoft Corporation Methods and system for storing and accessing embedded information in object-relational databases
US6192405B1 (en) 1998-01-23 2001-02-20 Novell, Inc. Method and apparatus for acquiring authorized access to resources in a distributed system
US6085188A (en) 1998-03-30 2000-07-04 International Business Machines Corporation Method of hierarchical LDAP searching with relational tables
US6115703A (en) 1998-05-11 2000-09-05 International Business Machines Corporation Two-level caching system for prepared SQL statements in a relational database management system
US6119129A (en) 1998-05-14 2000-09-12 Sun Microsystems, Inc. Multi-threaded journaling in a configuration database
US6356892B1 (en) 1998-09-24 2002-03-12 International Business Machines Corporation Efficient implementation of lightweight directory access protocol (LDAP) search queries with structured query language (SQL)
US6199062B1 (en) 1998-11-19 2001-03-06 International Business Machines Corporation Reverse string indexing in a relational database for wildcard searching
KR100288140B1 (ko) 1998-12-07 2001-05-02 이계철 이기종 데이터베이스 관리 시스템에 접근 가능한 연결 제공 시스템 및 그 방법
US6370522B1 (en) 1999-03-18 2002-04-09 Oracle Corporation Method and mechanism for extending native optimization in a database system
GB9915465D0 (en) 1999-07-02 1999-09-01 Lenzie Robert S Identified preferred indexes for databases
US6879990B1 (en) 2000-04-28 2005-04-12 Institute For Scientific Information, Inc. System for identifying potential licensees of a source patent portfolio

Also Published As

Publication number Publication date
JPH10505690A (ja) 1998-06-02
EP1313037B1 (de) 2013-10-02
EP0777883A4 (de) 1998-05-20
US7685142B2 (en) 2010-03-23
US20030105749A1 (en) 2003-06-05
EP0777883A1 (de) 1997-06-11
WO1996007147A1 (en) 1996-03-07
US20020169767A1 (en) 2002-11-14
US20020116370A1 (en) 2002-08-22
DE69530595D1 (de) 2003-06-05
ATE239257T1 (de) 2003-05-15
EP1313039A3 (de) 2005-04-13
ES2204962T3 (es) 2004-05-01
EP1313036A3 (de) 2005-04-13
EP1313037A2 (de) 2003-05-21
US20020103785A1 (en) 2002-08-01
US20060020613A1 (en) 2006-01-26
US20030213316A1 (en) 2003-11-20
EP0777883B1 (de) 2003-05-02
US6052681A (en) 2000-04-18
EP1313037A3 (de) 2005-04-13
US20020107828A1 (en) 2002-08-08
EP1313039A2 (de) 2003-05-21
US7620623B2 (en) 2009-11-17
US7634513B2 (en) 2009-12-15
EP1313038A2 (de) 2003-05-21
EP1313036A2 (de) 2003-05-21
US20030191759A1 (en) 2003-10-09
EP1313039B1 (de) 2013-01-09
US20030208478A1 (en) 2003-11-06
EP1313038A3 (de) 2005-09-07

Similar Documents

Publication Publication Date Title
DE69530595T2 (de) System und verfahren für die x.500-datenbanknorm
DE69912410T2 (de) Schnelles zeichenkettensuchen und -indizieren
DE69724356T2 (de) Verfahren und Apparat für die Darstellung von Information im Bezug auf jeden einzelnen von mehreren Hyperlinks
DE60025208T2 (de) Verfahren und gerät für effiziente näherungssuche
DE19954534A1 (de) Rückwärtsindexieren von Zeichenketten in einer relationalen Datenbank zum Suchen mit Joker
DE69906488T2 (de) Verfahren zur Synchronisierung eines Datenbankschemas mit seiner Darstellung in einem objekt-orientierten Repository
DE69333960T2 (de) Namenauflösung in einem Mehrsystem-Netz
DE19617381C2 (de) Objektumwandlungsvorrichtung von einem flachen Objektraum in einen Klassen-strukturierten Raum
DE60035432T2 (de) System zur verwaltung der rdbm fragmentierungen
DE19747583B4 (de) Kommunikationssystem und Verfahren
DE10358834A1 (de) Verfahren, Einrichtung und Computer-Produkt zum Analysieren von Binärdaten
DE102007037646B4 (de) Computerspeichersystem und Verfahren zum Indizieren, Durchsuchen und zur Datenwiedergewinnung von Datenbanken
DE10162495A1 (de) Erweiterbare Datenbank
EP1276056B1 (de) Verfahren zum Verwalten einer Datenbank
DE602004013397T2 (de) Verfahren und Apparat zum Verschieben von Daten zwischen Speichersystemen
EP3563261B1 (de) Bitsequenzbasiertes datenklassifikationssystem
EP1166228B1 (de) Verfahren zur nutzung von fraktalen semantischen netzen für alle arten von datenbank-anwendungen
EP1030254B1 (de) Verfahren und System zum Verwalten von Dokumenten
WO1997015016A1 (de) Datenbankmanagementsystem sowie datenübertragungsverfahren
DE19813883B4 (de) Verfahren, Computerprogrammprodukt und Dokumentenmanagementsystem zum Zugriff auf Internet-Informationen für geschlossene Benutzergruppen
DE10057634A1 (de) Verfahren zur Verarbeitung von Text in einer Rechnereinheit und Rechnereinheit
DE10006959B4 (de) Verfahren zur Abfrage einer Datenbank
DE10142379B4 (de) Verfahren zum Erstellen von Hyperlinks und deren Verwendung zum Aufruf von Zieldokumenten aus einem Ausgangsdokument
DE112021000573T5 (de) Hierarchische daten
DE10002339A1 (de) Speichervorrichtung für abstrakte Syntaxdaten und Management-Informationsbasis

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8328 Change in the person/name/address of the agent

Representative=s name: PATENTANWAELTE QUERMANN + STURM GBR, 65195 WIESBADE

8328 Change in the person/name/address of the agent

Representative=s name: RICHARDT PATENTANWAELTE, 65185 WIESBADEN