DE68927621T2 - Echtzeitdatenbasis - Google Patents

Echtzeitdatenbasis

Info

Publication number
DE68927621T2
DE68927621T2 DE68927621T DE68927621T DE68927621T2 DE 68927621 T2 DE68927621 T2 DE 68927621T2 DE 68927621 T DE68927621 T DE 68927621T DE 68927621 T DE68927621 T DE 68927621T DE 68927621 T2 DE68927621 T2 DE 68927621T2
Authority
DE
Germany
Prior art keywords
data
tuple
index
hash
location
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 - Fee Related
Application number
DE68927621T
Other languages
English (en)
Other versions
DE68927621D1 (de
Inventor
Feyzi Fatehi
Cynthia Givens
Le Thieu Hong
Ching-Chao Lui
Michael J Wright
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.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Co
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
Application filed by Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of DE68927621D1 publication Critical patent/DE68927621D1/de
Application granted granted Critical
Publication of DE68927621T2 publication Critical patent/DE68927621T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related 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
    • 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/99938Concurrency, e.g. lock management in shared database

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

  • Die Erfindung bezieht sich auf die Struktur einer Echtzeitdatenbank, beispielsweise einer Datenbank für Computer-integrierte Herstellungssysteme.
  • Ein typisches Echtzeitsystem besteht aus zwei eng gekoppelten Untersystemen, einem gesteuerten Prozeß und einer Steuerung. Der gesteuerte Prozeß könnte beispielsweise eine automatisierte Herstellung, eine Waffensystemsteuerung oder eine Materialaustausch-Transaktionsverwaltung sein. Die Steuerung ist ein Computer, der den Status des gesteuerten Prozesses überwacht und geeignete Befehle erteilt.
  • In Echtzeitsystemen unterliegen die unterstützten Anwendungen strengen Zeitbeschränkungen. Zwei kritische Parameter von Echtzeitsystemen sind die Antwortzeit und die Datenmeßrate. Derartige Systeme dürfen keine Daten verpassen und dieselben müssen auf Ereignisse ansprechen, die asynchron und nicht rekursiv sind. Folglich müssen Echtzeitsysteme innerhalb vorbestimmter Zeitgrenzen auf Daten zugreifen. Das Fehlschlagen eines Zugriffs auf Daten innerhalb der Grenzen auf Daten kann einen Verlust der Steuerung über den Prozeß zur Folge haben. In vielen Fällen wird ein Verlust der Steuerung nicht als eine Verhaltensverschlechterung betrachtet; derselbe wird als ein Ausfall betrachtet.
  • Im Zusammenhang mit Computern ist ein "Echtzeit"-Programm ein solches, das kontinuierlich abläuft, wobei es spontan auf Änderungseingaben reagiert. Bei Computerprogrammen ist der Gegensatz zu "Echtzeit" "Stapelverarbeitung" (batch) oder " auf Plattenbasis" (disk-based). Echtzeitprogramme sind viel enger in ihre Umgebungen involviert, was bedeutet, daß der Entwurf und die Implementierung von Echtzeitprogrammen strengere Verhaltensanforderungen erfüllen muß.
  • Obwohl herkömmliche Plattenbasis-Datenbanksysteme eine wirkungsvolle Einrichtung zum Speichern von Daten und bequeme Merkmale, beispielsweise benutzerfreundliche Schnittstellen, liefern, stützen sich dieselben auf einen Sekundärspeicher, um die Datenbank zu speichern. Eine Transaktionsverarbeitung erfordert das Zugreifen auf Daten, die in dem Sekundärspeicher gespeichert sind, so daß die Transaktionsantwortzeit in der Größenordnung von 30 Millisekunden liegen kann. Obwohl dies für herkömmliche Anwendungen, die einen menschlichen Benutzer involvieren, schnell genug ist, ist es nicht schnell genug für Echtzeitanwendungen wie z.B. eine Prozeßsteuerung. Folglich unterscheiden sich die Verhaltensanforderungen und die Entwurfsauflagen für Echtzeitdatenbanksysteme stark von denjenigen herkömmlicher Datenbanksysteme, die keine derart schwerwiegenden Beschränkungen bezüglich der Antwortzeit aufweisen. Plattenbasis-Datenbankverwaltungssoftware kann ungeachtet dessen, ob sie eine hierarchische, eine Netzwerk- oder eine relationale Struktur verwendet, nicht Daten schnell genug wiedergewinnen oder sogar speichern, um die Bedürfnisse vieler Echtzeitanwendungen zu erfüllen.
  • Eine Echtzeitdatenbank muß viel schneller sein als eine Plattendatenbank, in vielen Fällen etwa 10 bis 100 mal schneller. Ferner sollte eine Echtzeitdatenbank einen speziellen Bereich zum Speichern von Datenblöcken, beispielsweise Formeln oder unformatierten Daten, aufweisen. Es existiert ein Kompromiß zwischen der Geschwindigkeit und den Merkmalen, wobei einige Fähigkeiten, die allgemein in einer herkömmlichen Datenbank zu finden sind, in einer Echtzeitdatenbank verringert oder weggelassen werden müssen.
  • Das wichtigste Verhaltenskriterium für eine Echtzeitdatenbank ist die Antwortzeit. Dieselbe muß eine vorhersagbare, sehr schnelle Datenzugriffsgeschwindigkeit aufweisen. Das Zugreifen auf Daten mit einer sehr schnellen Geschwindigkeit bedeutet üblicherweise, daß die Daten in einem Speicher (memory) gespeichert sein müssen, und nicht einem Sekundärspeicher (secondary storage). Um auf die Daten zuzugreifen, sollten für eine Vielzahl von Vorrichtungen oder Prozessen die Daten in einem gemeinsam verwendeten Speicher gespeichert sein. Die Zugriffsgeschwindigkeit weist eine sehr hohe Priorität auf, wobei jedoch die Datenunversehrtheit bei der Implementierung von Datenmanipulationsroutinen nicht geopfert werden darf.
  • Die Such- und Datenmanipulations-Fähigkeiten der Echtzeitdatenbank ermöglichen es, daß eine Anwendung in einer pünktlichen und effizienten Form auf ausgewählte Daten zugreift. Eine indizierte Suche trägt zu höheren Datenzugriffsgeschwindigkeiten bei. Ein Datenzugriff muß für Konfigurationsdaten, Echtzeitprozeßwerte, Zugriffscodes, Prozeßformelwerte und andere Prozeß-bezogene Informationen geliefert werden. Das Hinzufügen, Beseitigen und Modifizieren von Daten auf einer Echtzeitbasis ermöglicht es, daß die Anwendung die Daten organisiert und die Daten auf die wirksamste Art und Weise verwendet.
  • Die Computer-integrierte Herstellung (CIM; CIM = Computer Integrated Manufacturing) benötigt eine geplante Struktur einer Online-Echtzeitdatenverarbeitung. Dies erfordert garantierte Zugriffsgeschwindigkeiten und einen Verhaltensschutz, so daß ein industrieller Prozeß kontinuierlich überwacht und gesteuert werden kann. Eine garantierte Zugriffsgeschwindigkeit bedeutet, daß ungeachtet der Situation jede zeitkritische Anwendung Daten innerhalb einer bestimmten, sehr kurzen Zeitperiode in der Größenordnung von 10 bis 100 Mikrosekunden wiedererlangen kann.
  • Die Computer-integrierte Herstellung ist grundsätzlich eine gemeinsam verwendete Datenbank, so daß die Datenverwaltung ein wesentlicher Teil des Systems ist. Die Verhaltensmerkmale einer Echtzeitdatenbank sind kritisch für den Betrieb des CIM-Systems, und müssen verschiedenen Bedürfnissen auf dem Arbeitszellen-Steuerpegel und dem Bereichsverwaltungspegel des CIM-Systems dienen.
  • Der Arbeitszellensteuerungs- und der Bereichsverwaltungs-Pegel sind eng gekoppelt. Der Bereichsverwaltungs-Pegel erteilt der Datenverwaltung und der Analyse eine stärkere Hervorhebung, kann jedoch noch einige spezielle oder Echtzeit- Anforderungen von Daten aufweisen. Der Bereichsverwalter kann zur Erzeugung von Trenddiagrammen, Prozeßberichten, einer Steuerung von Materialberichten und einer Kommunikation sowohl mit Computersystemen einer höheren Ebene als auch einer niedrigeren Ebene einen schnellen Zugriff auf Daten benötigen. Der Bereichsverwalter könnte ferner große Datenblöcke übertragen, wenn eine Übertragungsaktion hinunter zu der Arbeitszelle stattfindet.
  • Der Arbeitszellenbereich hat eine unmittelbarere Wirkung auf den Steuerprozeß. Daher ist derselbe typischerweise in mehr Echtzeitfunktionen involviert. Arbeitspegelfunktionen umfassen die Überwachung von programmierbaren logischen Steuerungen (PLCs; PLC = programmable logic controller), Schleifensteuerungen (LCS; LC loop controller) und numerischen Steuerungen (NCS; NC numerical controller), eine automatische Datenerfassung, eine Alarmverwaltung und Prozeßgraphiken.
  • Informationen stammen üblicherweise von dem Arbeitszellen- Steuerpegel des CIM-Modells. Es ist dieser Pegel, der physikalisch die meisten der Daten sammelt, die in den anderen Pegeln verwendet werden. Die Gerätevielzahl in der Arbeitszelle macht es wichtig, daß die Datenbank in der Lage ist, die Daten mit hoher Geschwindigkeit in einem eindeutigen und verständlichen Format zu konsolidieren. Die Arbeitszellenvorrichtungen erfordern häufig Übertragungen von unformatierten Daten mit hohen Geschwindigkeiten. Dies macht es notwendig, daß die Datenbank Speicherbereiche liefert, die großen Blöcken unstrukturierter Daten zugewiesen sind.
  • Arbeitszellenanwendungen, die Überwachungs- und Steuer- Funktionen durchführen, müssen große Datenmengen von Vorrichtungen, beispielsweise PLCs, NCs, Robotern und automatisch geführten Fahrzeugen augenblicklich speichern. Weitere Anwendungen des Arbeitszellenpegels könnten ferner eine spezielle Speicherung von Daten für derartige Dinge wie eine lokale Daten-Steuerung, -Manipulation und -Anzeige und ein lokales Zwischenspeichern und Wiedergewinnen erfordern. Das Hinzufügen, Löschen, Modifizieren und Organisieren der Daten von jeder dieser Vorrichtungen auf einer Echtzeitbasis definiert das Verhalten und die Funktionalitätsanforderungen für eine Echtzeitdatenbank auf dem Arbeitszellenpegel.
  • Während die oben beschriebene Funktionalität geliefert wird, ist es erwünscht, daß Echtzeitdatenbanken einige der Charakteristika herkömmlicher Plattenbasis-Datenbanken einschließen. Insbesondere die Verwendung einer auf Tabellen basierenden Architektur eines relationalen Typs hat Vorteile. Dies ermöglicht eine einfache Übertragung von Daten zwischen der Echtzeitdatenbank und herkömmlichen Plattenbasis- Datenbanken, die Funktionen wie z.B. die Offline-Analyse von Echtzeitdaten durchführen. Das Verketten von Datentabellen miteinander, um verwandte Daten zu verbinden, ist ein weiteres erwünschtes Merkmal. Das Liefern von Such-Schlüsseln und -Indizes ist ebenfalls wichtig. Bei einer Echtzeitdatenbank sollte die Suchfunktion Geschwindigkeit und Flexibilität so stark wie möglich kombinieren. Schließlich ist die Datenunversehrtheit wichtig, und darf durch die Datenmanipulation und Zugriffsroutinen, die verwendet werden, um eine garantierte Antwortzeit zu liefern, nicht beeinträchtigt werden.
  • Gegenwärtig existieren zwei dominante Lösungsansätze, um den Bedarf nach einer Echtzeitdatenbank zu erfüllen.
  • Der erste besteht darin, eine kundenspezifische speicherresidente Datenverwaltungsvorrichtung zu schaffen. Obwohl dieser Lösungsansatz den gewünschten Verhaltenspegel erreicht, liefert er kein Werkzeug, das generisch oder flexibel ist. Die kundenspezifische Datenbank ist fest mit einem speziellen Anwendungstyp verbunden. Folglich ist es schwierig, die kundenspezifische Implementierung mit sich ändernden Bedürfnissen zu modifizieren, wobei dieselbe in anderen Anwendungen nicht wiederverwendet werden kann.
  • Der andere Lösungsansatz besteht darin, das Dateisystem zu verwenden. Diese gängige Lösung hat zwei Hauptnachteile. Der eine besteht darin, daß die Struktur- und Zugriffs-Merkmale primitiv und begrenzt sind. Der andere besteht darin, daß das Verhalten schlechter ist, als es mit einer speicherresidenten Datenbank verfügbar ist. Wenn die Verhaltensanforderungen zunehmen, wird die Datenbanklösung zu langsam werden.
  • SIGSMALL/PC NOTES Bd. 12, Nr. 2, Mai 1986, Seiten 27-98; Lindsay McDermid: "Evaluation of Two Relational Database Management Systems" liefert einen Vergleich zwischen zwei unterschiedlichen Datenbanksystemen und beschreibt eine Datenspeicher/Wiedergewinnungs- und Daten-Verwaltung, die eine Hash-Codierung und eine Indizierung verwendet. C.J. DATE: "An Introduction to Database Systems" 1983, ADDISON-WESLEY, Reading, MA, US erläutert Gleichzeitigkeitsprobleme und schlägt die Verwendung von Verriegelungsfunktionen vor, um eine Störung in Mehrbenutzersystemen zu vermeiden. JAMES MARTIN: "Computer Data-Base Organization", 1977, ENGLEWOOD CLIFFS, NEW JERSEY, US, offenbart ein Datenbanksystem, das einen Hash-Codierungsmechanismus aufweist, der eine Hash-Indizierung, verkettete Datensätze und Schlüssel verwendet.
  • Gemäß einem Aspekt der vorliegenden Erfindung wird ein Echtzeitdatenbank-Verwaltungssystem gemäß Anspruch 1 geschaffen.
  • Gemäß einem weiteren Aspekt der vorliegenden Erfindung wird ein Echtzeitverfahren zum Speichern und Wiedergewinnen von Datentupeln in einer Datentabelle gemäß Anspruch 3 geschaffen.
  • Die Echtzeitdatenbank der Erfindung liefert den vorhersagbaren, schnellen Datenzugriff, der für Online-Anwendungen erforderlich ist, während dieselbe flexible Suchfähigkeiten liefert.
  • Die Datenwiedergewinnungsroutinen liefern eine garantierte Ansprechzeit und einen schnellen Datenzugriff. Die Datenwiedergewinnungsroutinen umfassen die Option des "Durchlese- Verriegelns", um auf Daten in verriegelten Datentabellen zuzugreifen, die Fähigkeit, direkt unter Verwendung von Tupelidentifizierern auf Daten zuzugreifen, und die Fähigkeit, direkt auf unformatierte Daten aus Eingangsbereichen, die Blöcke aus unformatierten Daten enthalten, zuzugreifen.
  • Zweitens liefern die Datenaktualisierungsroutinen eine Datenaktualisierung mit hoher Geschwindigkeit, die die garantierte Ansprechzeit nicht beeinflußt. Die Datenaktualisierungsroutinen umfassen eine Option, um auf eine Indexaktualisierung zu verzichten, wenn Daten aktualisiert werden, und eine Option des "Durchschreibe-Verriegelns", um Daten in einer verriegelten Datentabelle zu aktualisieren. Diese Merkmale können die Zeit, die zum Aktualisieren von Daten erforderlich ist, signifikant verringern.
  • Drittens liefert der Index-Hash-Codierungsmechanismus eine schnelle flexible Suche unter Verwendung von Indexschlüsselwerten. Mehrere Hash-Indizes können auf einer Datentabelle definiert sein. Folglich können basierend auf einer Vielzahl von unterschiedlichen Sätzen von Datenfeldern schnelle Suchen durchgeführt werden. Die Benutzerdaten und die Hash-Indizes sind unabhängig gespeichert. Hash-Index-Tabellen verbinden die mehreren Indexschlüssel mit den Datentabellen. Viertens können die Tabellen eine Byte-Zeichenfolgen-Typ- Spalte zum Speichern Benutzer-definierter Daten aufweisen. Diese Spaltenart kann auch verwendet werden, um Tupelidentifizierer zu speichern. Diese Tupelidentifizierer können als Zeiger zum Verketten mit verwandten Daten, die in anderen Datentabellen gespeichert sind, verwendet werden. Auf verwandte Daten kann dann zugegriffen werden, ohne eine Suche auf den anderen Datentabellen durchführen zu müssen. Schließlich liefert die Datenbank der Erfindung eine relativ kleine Codegröße. Dies wird durch die Verwendung einer gemeinsamen Struktur für Benutzerdatentabellen, Indextabellen und interne Systemtabellen erreicht. Ferner verwenden viele Datenbankroutinen Unterroutinen gemeinsam.
  • Fig. 1 zeigt die Gesamtstruktur der Echtzeitdatenbank der Erfindung mit zwei Modulpegeln.
  • Fig. 2 zeigt das Tabellenblockformat einer Datenbank, die gemäß den Lehren der Erfindung aufgebaut ist.
  • Fig. 3 zeigt den Gesamtstrukturentwurf für die Hash-Indizes in der Datenbank der Erfindung.
  • Fig. 4 ist ein Flußdiagramm, das den Datenspeicherungsprozeß der Datenbank der Erfindung darstellt.
  • Fig. 5 zeigt eine Datentabelle, die die Anwendung der Datenbank der Erfindung auf eine einfache Arbeitszelle zeigt.
  • Elementare Grundstruktur
  • Die elementare Grundstruktur für eine Datenbank, die auf einem relationalen Modell basiert, ist ein Satz von Datentabellen. Die Tabellen sind in Spalten und Zeilen angeordnet. Die Spalten identifizieren die Haupt-Kategorien oder -Attribute von Daten und ihre Datentypen. Die Zeilen halten verwandte Daten für alle eingeschlossenen Kategorien. Die Ansammlung von Elementen in einer Zeile wird als ein Tupel bezeichnet. Jede Zeile von verwandten Dateneintragen in einer Tabelle ist eindeutig durch einen Tupelidentifizierer identifiziert, der die Nummer der Tabelle, zu der das Tupel gehört, und eine Tupelnummer, die den Tupelspeicherort identifiziert, aufweist.
  • Gesamtdatenbank-Systemstruktur
  • Die Gesamtstruktur der Echtzeitdatenbank der Erfindung ist in Fig. 1 dargestellt, wobei man sich dieselbe als zwei Modulpegel aufweisend vorstellen kann. Die Hochpegelmodule weisen Routinen auf, die entsprechend der Funktion gruppiert sind, welche für die Datenbankbenutzer sichtbar sind, d.h. dieselben werden durch die externen Anwendungsprogramme aufgerufen. Die Hochpegelmodule führen Datendefinitionsaufrufe 111, Datenmanipulationsaufrufe 113 und Datenverwaltungsaufrufe 115 durch. Die Hochpegelmodule (Benutzer-aufrufbare Module) und ihre Routinen sind in Tabelle 1 aufgelistet. Die Niederpegelmodule sind der Katalogverwalter 117, der Tabellen- und Tupel-Verwalter 119, der Indexverwalter 121, der Gleichzeitigkeitsverwalter 123 und der Speicherverwalter 125. Diese Module weisen Routinen auf, die von den Hochpegelmodulen aufgerufen werden, welche einen Zugriff auf Steuerblöcke, das Dateisystem, Benutzerdaten, interne Strukturen und andere Elemente liefern. Die Niederpegelmodule und ihre Routinen sind in Tabelle 2 aufgelistet. Die Hochpegelroutinen verwenden beim Durchführen ihrer Funktionen die Niederpegelroutinen gemeinsam. Ein Betriebssystem-Schnittstellenmodul 127 liefert eine Kommunikation mit dem Hostcomputer- Betriebssystem, beispielsweise einem auf UNIX basierenden Betriebssystem.
  • Die Datenverwaltungsaufrufe, Modul 115, sind Routinen zum Erzeugen des Schemas für die Datenbank, zum Aufbauen und Abbauen der Datenbank in einem Speicher, zum Beseitigen des Datenbankspeichers und zum Ändern von Datenbankpaßworten.
  • Die Datenmanipulationsaufrufe, Modul 113, sind Routinen zum Öffnen einer Datentabelle für einen Zugriff, zum Wiedergewinnen eines Tupels aus einer Datentabelle, zum Hinzufügen eines Tupels zu einer Tabelle, und zum Aktualisieren oder Beseitigen eines Tupels aus einer Tabelle. Die Wiedergewinnung kann durch eine sequentielle Suche, durch eine Hash- Index-Schlüsselsuche oder durch einen direkten Zugriff unter Verwendung eines Tupelidentifizierers durchgeführt werden. Datenmanipulationsfunktionen umfassen ferner Routinen zum Öffnen der Eingangsbereiche für einen Zugriff, zum Wiedergewinnen unformatierter Daten aus Eingangsbereichen und zum Speichern von Daten in Eingangsbereichen. Schließlich können die Datenmanipulationsaufrufe eine Tabelle oder einen Eingangsbereich verriegeln oder entriegeln.
  • Die Datendefinitionsaufrufe, Modul 111, sind Routinen zum Definieren einer Tabelle, zum Definieren von Spalten in einer vorher definierten Tabelle, zum Definieren eines Indexes auf Spalten einer definierten Tabelle, zum Definieren eines Eingangsbereichs und zum Beseitigen eines Tabellenindexes oder eines Eingangsbereichs.
  • Der Katalogverwalter, Modul 117, ruft die anderen Verwalterroutinen auf, um den Systemkatalog zu erzeugen und zu halten. Alle Objekte in der Datenbank werden in dem Systemkatalog widergespiegelt, der ein Satz von Systemtabellen ist. Die Systemtabellen werden während der Ausführung der Datenbank-Definitionsroutine, wenn der Benutzer die Datenbank erzeugt, erzeugt. Systemtabellen weisen eine ähnliche Struktur wie Benutzer-definierte Tabellen auf, wobei dieselben jedoch durch die Datenbank zur Verwendung als Systemverzeichnisse für Benutzer-definierte Tabellen, Spalten, Indizes und Eingangsbereiche gehalten werden.
  • Der Tabellen- und Tupel-Verwalter, Modul 119, weist Routinen auf, um Funktionen zu handhaben, beispielsweise das Formatieren eines Tabellenblocks, das Hinzufügen eines Tupels, das Wiedergewinnen eines Tupels, das Aktualisieren eines Tupels und das Löschen eines Tupels. Die Tabellen- und Tupel-Verwaltungsroutinen sind mit einem Verhalten als eine oberste Priorität entworfen. Das Verhalten wird beim Ausführen von direkten Lese- und Schreib-Vorgängen als am wichtigsten betrachtet. Sequentielle Lese-Vorgänge, Hinzufügungen und Löschungen werden mit einer absteigenden Priorität behandelt. Die meisten Tabellen- und Tupel-Verwalterroutinen sind klein und sind als C-Sprachen-Makros implementiert, um den zusätzlichen Aufwand eines Aufrufs zu vermeiden.
  • Der Indexverwalter, Modul 121, weist Routinen auf, um eine Hash-Codierung und Funktionen zu handhaben, die sich auf das Durchführen der inneren Operationen, die erforderlich sind, um die Benutzer-definierten Indizes zu halten, durchzuführen. Indizes können für die Benutzerdatentabellen durch den Benutzer definiert werden. Im allgemeinen sind Indizes für Tabellen definiert, um eine schnellere Wiedergewinnung der spezifischen Inhalte jeder Tabelle zu liefern.
  • Der Gleichzeitigkeitsmanager, Modul 123, weist Routinen zum Synchronisieren gleichzeitiger Zugriffe auf die Datenbank auf, so daß die Datenbank-Integrität und -Konsistenz beibehalten werden. Der Mechanismus, der zum Synchronisieren gleichzeitiger Zugriffe auf die Daten verwendet ist, ist eine Verriegelung. Gleichzeitige Anforderungen nach Verriegelungen sind durch Semaphore synchronisiert.
  • Der Speicherzuweisungsverwalter, Modul 125, weist Routinen auf, um Funktionen zu handhaben, die sich auf das Verfolgen einer zugewiesenen und verfügbaren Speicherspeicherung beziehen. Die Datenbank befindet sich in einem gemeinsam verwendeten Speicher, der Blöcke fester Größe für interne Systemtabellen (die Datenbankverwaltungsinformationen speichern) und Blöcke variabler Größe, die Benutzer-definierten Tabellen, Indizes und Eingangsbereichen zugewiesen sind, aufweist. Der Speicherzuweisungsverwalter weist, wie es erforderlich ist, Speicher den Tabellen, Indizes und Eingangsbereichen dynamisch zu. Wenn eine Anforderung für eine Speicherung für eine Tabelle, einen Index oder einen Eingangsbereich durch den Benutzer durchgeführt wird, tastet der Speicherzuweisungsverwalter die Liste freier Blöcke ab, bis ein ausreichend großer Block gefunden wird. Wenn der Block die erforderliche Größe aufweist, wird er der Anforderung zugewiesen. Wenn der Block zu groß ist, wird derselbe geteilt, wobei der richtige Betrag als zugewiesen zurückgegeben wird, während der Rest auf die freie Liste zurückgesetzt wird. Wenn kein ausreichend großer Block gefunden wird, wird eine Fehlermeldung für die Anforderung zurückgegeben.
  • Tabellenstruktur und Einpanasbereiche
  • Alle Tabellen in der Datenbank der Erfindung weisen die gleiche interne Struktur auf, unabhängig davon, ob sie Daten-, Index- oder System-Tabellen sind. Tabellen sind in Tabellenblöcken gespeichert, die aus Steuerstrukturen und Daten bestehen. Fig. 2 zeigt das Tabellenblockformat. Dasselbe besteht aus einem Tabellenblock-Anfangsblock, einem Schlitzarray 213, einem Spaltendeskriptorarray 215 und einem Benutzerdatenarray 217. Der Tabellenblock-Anfangsblock 211 enthält strukturelle Informationen für die Tabelle, einschließlich Datenversätzen, Kapazitäten, usw.. Das Schlitzarray 213 zeigt an, welche Tupel in der Tabelle unter Verwendung und welche frei sind. Das Spaltendiskriptorarray 215 zeigt die Typlänge und den Versatz der Spalten für jedes Tupel an. Das Benutzerdatenarray 217 enthält die System- oder Benutzer-Daten für die Tabelle.
  • Das Merkmal der direkten Wiedergewinnung unter Verwendung eines Tupelidentifizierers könnte Datenunversehrtheitsprobleme zur Folge haben, da bei einem direkten Zugriff keine Überprüfung der tatsächlichen Daten, die in dem Tupel gespeichert sind, stattfindet. Ein Prozeß könnte auf falsche Informationen zugreifen, wenn ein anderer Prozeß das Tupel gelöscht hatte und ein neues Tupel, das zufällig an dem gleichen Speicherort gespeichert wurde, hinzugefügt hatte. Die Datenbank der Erfindung überwindet dieses mögliche Problem durch das Vorsehen einer Versionsnummer, die jedem Tupelspeicherort in dem Tabellenblock zugeordnet ist. Die Versionsnummer und die Tupelnummer identifizieren ein Tupel einer Tabelle eindeutig über die Zeit, da die Versionsnummer jedesmal inkrementiert wird, wenn das Tupel gelöscht wird. Die Versionsnummer ist auch in dem Tupelidentifizierer enthalten, so daß, wenn ein Prozeß versucht, unter Verwendung eines Tupelidentifizierers direkt zuzugreifen, und das Tupel gelöscht wurde, der Tupelidentifizierer nicht übereinstimmt und der Prozeß benachrichtigt werden wird.
  • Eingangsbereiche sind Benutzer-definierte Blöcke von Speicherraum, die für unstrukturierte Daten reserviert sind. Informationen, die mit einer schnellen Rate an der Datenbank ankommen, können in einem Eingangsbereich gespeichert werden. Zu der Zeit, zu der der Eingangsbereich für einen Zugriff geöffnet ist, wird die physikalische Adresse am Beginn des Blocks des Eingangsbereichs zurückgegeben, ebenso wie der Eingangsbereichidentifizierer. Dies ermöglicht, daß der Benutzer eine direkte Wiedergewinnung von Daten, die in dem Eingangsbereich gespeichert sind, unter Verwendung der pyhsikalischen Adresse oder durch das Angeben eines Versatzes in den Eingangsbereich der Routine, die Daten aus dem Eingangsbereich wiedergewinnt, durchführt.
  • Indizes und Hash-Codierung
  • Ein Index ist ein Satz von Zeigern auf die Tupel in einer Tabelle. Indizes können verwendet werden, um sehr schnell auf Tupel zuzugreifen, deren Schlüsselwerte bereits bekannt sind. Ein Schlüssel ist der Wert der Spalte oder der Spalten eines Tupels, die einem Tupel zugeordnet sind. Ein Schlüssel für einen Index ist aus einer bis fünf Spalten einer Tabelle zusammengesetzt, die in einer spezifischen Reihenfolge spezifiziert werden, wenn ein Index für die Tabelle definiert wird. Jede Tabelle kann eine Mehrzahl von Indizes aufweisen, die auf derselben definiert sind. Nur ein Schlüssel kann jedem Index zugeordnet sein. Ein Hash-Index empfängt einen Schlüsselwert als Eingabe und ergibt als Ausgabe den Tupelidentifizierer eines Tupels, das den Schlüsselwert enthält.
  • Fig. 3 zeigt den Gesamtstrukturentwurf für die Hash-Indizes in der Datenbank der Erfindung. Anders als bei der üblichen Praxis wird die Hash-Codierung nicht als ein Verfahren sowohl für die Speicherung als auch für die Wiedergewinnung der tatsächlichen Daten, sondern nur als eine Einrichtung zum Liefern eines sehr schnellen Wiedergewinnungsmechanismusses verwendet. Die Hash-Codierung eines Schlüsselwerts 411 mit einer Hash-Funktion 413 greift nicht direkt auf eine Datentabelle 417 zu. Der Zugriff erfolgt durch eine Zwischentabelle, die als Hash-Index 415 bezeichnet wird. Es existiert ein Hash-Index für jeden Benutzer-definierten Indexschlüssel auf einer Datentabelle.
  • Der Hash-Index 415 ist eine Tabelle von Tupelidentifizierern (tid1, tid2, ...) für die Tupel in der Datentabelle 417, die derart angeordnet sind, daß die Hash-Index-Tuppelnummern, die ein Ergebnis des Anwendens der Hash-Funktion auf einen Schlüsselwert sind, den Hash-Indexorten, die die Tupelidentifizierer für die Datentabellentupel, die diesen Schlüsselwert enthalten, aufweisen, entsprechen.
  • Um ein Tupel in einer Tabelle zu speichern, auf der ein Index definiert ist, werden folgende Schritte durchgeführt, wie in dem Flußdiagramm in Fig. 4 gezeigt ist. Das Tupel wird in einem verfügbaren Schlitz in der Datentabelle eingebracht (Block 511). Wenn die Datentabelle einen Index aufweist (Entscheidungspunkt 513), wird durch das Anwenden der Hash-Funktion auf den Schlüsselwert, der für diesen Index definiert ist (Block 515) ein Ort in der Hash-Indextabelle gefunden. Schließlich wird die Tupel-ID (ID Identifizierung) des eingebrachten Tupels an dem Hash-Indexort gespeichert, der das Ergebnis der Hash-Indexfunktion ist (Block 517). Wenn mehrere Indizes existieren, die für die Datentabelle definiert sind (Entscheidungspunkt 519) wird der Prozeß für jeden Index, der für die Tabelle definiert ist, wiederholt.
  • Dieser Entwurfliefert große Vorteile für die Wiedergewinnung von Daten. Erstens kann jede Tabelle mehr als einen Index, der für dieselbe definiert ist, aufweisen. Dies ist nicht möglich, wenn die Hash-Codierung direkt für eine Speicherung von Daten in Datentabellen verwendet ist. Zweitens kann jeder Hash-codierte Index erneut Hash-codiert werden, ohne eine Wanderung der tatsächlichen Tupel. Daher werden sich die Tupelidentifizierer nicht ändern. Dies stellt sicher, daß das direkte Zugreifen nicht das Neuberechnen von Tupelidentifizierern jedesmal, wenn eine neue Hash-Codierung stattfindet, notwendig macht, und verbessert das Verhalten von Anwendungen, die ein häufiges Aktualisieren der Tabellenspalten, die als Indexschlüssel definiert sind, einschließen. Drittens können, anders als bei direkten Hash-Codierungsalgorithmen, Indizes für bereits existierende Tabellen definiert oder beseitigt werden. Viertens ist der zusätzliche Raumaufwand, der aufgrund des Definierens eines Hash-Index eingeführt wird, eine direkte Funktion einer Anzahl von Tupeln in einer Tabelle und hängt nicht von der Anzahl von Spalten ab, so daß sich derselbe nicht erhöht, wenn neue Spalten in eine Tabelle hinzugefügt werden. Bei direkten Hash-Codierungsalgorithmen ist der zusätzliche Raumaufwand nicht nur eine Funktion der Anzahl von Tupeln, sondern ist ferner eine Funktion der Anzahl von Spalten, wobei derselbe zunimmt, wenn neue Spalten zu einer Tabelle hinzugefügt werden.
  • Suche und Datenwiedergewinnung
  • Die Datenbank der Erfindung unterstützt drei Routinen zum Wiedergewinnen von Tupeln aus Datentabellen und eine Routine zum Wiedergewinnen von Byte-Sequenzen aus Eingangsbereichen: MdGetTplDir, MdGetTplIx, MdGetTplSeq, und MdGetTplIA.
  • Die drei Verfahren des Wiedergewinnens von Tupeln sind die direkte Wiedergewinnung, die indizierte oder Hash-codierte Wiedergewinnung und die sequentielle Wiedergewinnung.
  • Eine sequentielle Wiedergewinnung (MdGetTplSeq) ist häufig die langsamste Form. Eine sequentielle Wiedergewinnung erfordert das einzelne Durchlaufen jedes Tupels in einer Tabelle, bis das Tupel oder die Tupel, die mit den Wiedergewinnungskriterien übereinstimmen, gefunden sind. Eine sequentielle Wiedergewinnung muß durchgeführt werden, um auf Spalten zu suchen, die kein Teil eines Indexes sind. Das Verfahren des Indizierens liefert die Flexibilität, mehrere Indizes für eine Tabelle zu definieren, und folglich mehrere effiziente Suchen basierend auf verschiedenen Attributen der Daten, die in der Datentabelle gespeichert sind, durchzuführen. Ferner kann jeder Indexschlüssel auf bis zu fünf Spalten definiert sein.
  • Die direkte Wiedergewinnung (MdGetTplDir) ist die schnellste Form des Datenzugriffs. Ein Tupel wird direkt durch seinen Tupelidentifizierer wiedergewonnen. Der Tupelidentifizierer kann durch eine vorherige Index- oder eine sequentielle Wiedergewinnungsoperation, oder wenn das Tupel hinzugefügt wird, erhalten werden, was den Tupelidentifizierer zu dem Benutzeranwendungsprogramm zurückgibt. Ein Hash-Index (MdGetTplIx) ist eine schnelle Möglichkeit, um Tupel wiederzugewinnen, wenn nach Tupeln mit spezifischen Spaltenwerten gesucht wird. Die Spaltenwerte werden kombiniert, um einen Schlüsselwert zu bilden, wobei die Datenbank alle Tuppel, die den spezifizierten Schlüsselwert enthalten, jeden Aufruf einzeln wiedergewinnt. Ein Hash-Index empfängt einen Schlüssel-Wert und gibt den Tupelidentifizierer und den Tupelwert der Tupel, die den spezifizierten Schlüsselwert enthalten, zurück.
  • Die Datenbank der Erfindung liefert ferner den direkten Benutzerzugriff auf Eingangsbereiche durch die Verwendung der physikalischen Adresse oder durch die Verwendung eines Versatzes, um die Byte-Zeichenfolge aus einem definierten Eingangsbereich wiederzugewinnen. Ein Zugriff durch eine physikalische Adresse ist möglich, da, wenn ein Eingangsbereich für einen Zugriff geöffnet ist, die physikalische Adresse für den Eingangsbereich dem Benutzer zurückgegeben wird. Dieser Zugriffstyp ist die schnellste Möglichkeit, um auf einen Eingangsbereich zuzugreifen. Für eine bessere Datenunversehrtheit ist eine Routine (MdGetTplIa) vorgesehen, um Daten aus einem Eingangsbereich wiederzugewinnen, bei einem gegebenen Versatz in den Eingangsbereich und dem Eingangsbereichidentifizierer, der dem Benutzer zurückgegeben wird, wenn der Eingangsbereich für einen Zugriff geöffnet ist.
  • Verriegelungen und Datenaktualisierung
  • Wie oben beschrieben wurde, können bei einer computer-integrierten Herstellungsumgebung mehrere Anwendungen existieren, die versuchen, gleichzeitig auf die Daten zuzugreifen. Um die Datenbankunversehrtheit beizubehalten und die gleichzeitigen Zugriffe zu synchronisieren ist eine Verriegelung verwendet.
  • Eine Verriegelung findet statt, wenn ein Prozeß exklusiv auf eine Tabelle oder einen Eingangsbereich zugreift, wobei diese Tabelle oder der Eingangsbereich für andere Prozesse unzugreifbar gemacht wird. Wenn der Prozeß die Tabelle oder den Eingangsbereich freigibt, wird die Verriegelung beseitigt und die Tabelle oder der Eingangsbereich wird für andere Prozesse zugreifbar.
  • Verriegelungen können entweder auf Datentabellen oder auf Eingangsbereiche angewendet werden. Für jeden Lese- und Schreib-Datenbankzugriff verriegelt die Datenbank die zugegriffene Datentabelle oder den Eingangsbereich implizit. Die implizite Verriegelung wird am Ende des Zugriffs automatisch gelöst. Eine Verriegelung kann ferner durch einen expliziten Benutzeraufruf (MdLock) angewendet werden. Explizite Verriegelungen werden nur durch den expliziten Entriegelungsaufruf oder beim Abschluß einer Sitzung gelöst. Bei Echtzeitanwendungen gibt es Zeitpunkte, bei denen die Anwendung auf die Datenbank zugreifen muß, selbst wenn eine Datentabelle verriegelt ist. Aus diesem Grund weisen die Aktualisierungs- und Wiedergewinnungs-Routinen wählbare Parameter für eine Durchlese-Verriegelungs- und Durchschreibe-Verriegelungs- Fähigkeit auf. Eine Routine, die aufgerufen wird, wobei die Durchlese-Verriegelungs-Flag gesetzt ist, kann ungeachtet des Verriegelungszustands derselben auf eine Tabelle oder einen Eingangsbereich zugreifen. Um die Datenunversehrtheit beizubehalten, können nur Nicht-Schlüsselfelder unter Verwendung der Durchschreibe-Verriegelungsfähigkeit aktualisiert werden.
  • Die Aktualisierungsroutine weist ferner einen Parameter auf, der Datenaktualisierungen ohne eine Fehlerüberprüfung oder eine Aktualisierung hinsichtlich der Indizes ermöglicht. Um eine Beschädigung der Indizes zu vermeiden, sollten die Daten, die unter Verwendung dieser Option aktualisiert werden, nur Daten in Spalten enthalten, die keinen Index bilden. Da diese Option, speziell in Verbindung mit der Durchschreibe- Verriegelung, den zusätzlichen Aufwand, der in das Aktualisieren von Daten involviert ist, signifikant reduziert, sollte dieselbe wenn möglich verwendet werden, um das Verhalten von Aktualisierungen für Tabellen zu verbessern.
  • Veranschaulichendes Beispiel
  • Ein Beispiel einer Benutzer-definierten Datentabelle, die einige der Funktionen der Datenbank der Erfindung darstellt, ist in Fig. 5 gezeigt. Dieses Beispiel betrifft eine Datentabelle 611 namens "Machine_Table" zum Organisieren und Speichern von Informationen, die sich auf einen Satz von Maschinen in einer Arbeitszelle beziehen. In der Tabelle sind acht Spalten 613, 615, 617, 619, 621, 623, 625 und 627 mit den folgenden Spaltennamen gespeichert: Maschine, Bediener, Betriebszustand, Teile_Bisher, Rate_HR, Status, Zuführungsvorrichtung und Kupplung. In der Datentabelle sind sechs Zeilen oder Tupel gezeigt, eine für jede der sechs Maschinen in der Arbeitszelle.
  • Die Maschinenspalte 613 und die Bedienerspalte 615 enthalten Zeichenfolgendaten, die die Maschine und den Namen des Bedieners identifizieren. Die Betriebszustandspalte 617 enthält Byte-Zeichenfolgen-Daten, die den herrschenden Betriebszustand in der Maschine identifizieren. Die Teile_ Bisher-Spalte 619 enthält Integer-Daten, die die Anzahl von Teilen angeben, die in dem Betriebszustand fertiggestellt sind. Die Rate_Stunde-Spalte 621 enthält dezimale Gleitkommadaten, die die Herstellungsrate angibt, die bei dem momentanen Betriebszustand erreicht ist. Die Maschinenstatusspalte 623, die Zuführungsvorrichtungsspalte 625 und die Kupplungsspalte 627 sind verwendet, um herauszufinden, ob die Maschine ein- oder aus-geschaltet ist, wenn eine Zuführungsvorrichtungsblockierung existiert und wenn die Kupplung eingekuppelt ist. Diese Informationen werden von den Maschinensteuerungen als unformatierte Daten empfangen und in einem Eingangsbereich gespeichert. Die Datentabelleneinträge ergeben die Byte-Versätze für Zeiger auf den Ort der Daten in dem Eingangsbereich.
  • Um das Beispiel fortzusetzen, könnte ein Benutzer zwei Indizes für die Maschinendatentabelle definieren. Der erste Index verwendet die Werte sowohl in der Maschinen- als auch in der Betriebszustand-Spalte für seinen Schlüssel 631. Diese Kombination sollte einen eindeutigen Schlüssel liefern, um ein Tupel in einer Tabelle eindeutig zu identifizieren. Der zweite Index verwendet die Werte in der Betriebszustandspalte für seinen Schlüssel 633. Dieser Schlüssel könnte ein nicht-eindeutiger Schlüssel sein, wenn ein Betriebszustand mehr als einer Maschine zugewiesen werden kann. Es sei bemerkt, daß zwei Indizes auf der gleichen Datentabelle definiert sind. Jeder Index wird eine Hash-Indextabelle aufweisen, deren Einträge die Ergebnisse der Hash-Codierung der Werte dieses Indexschlüssels aufweisen.
  • Mit diesen zwei definierten Indizes könnte der Benutzer entscheiden, die Teile_Bisher-Datenwerte zu aktualisieren, wobei eine Routinen-Flag gesetzt wird, um die Indizes nicht zu aktualisieren. Dies ist annehmbar, da die Teile_Bisher- Spalte 619 nicht in dem Schlüssel für einen der Indizes enthalten ist.
  • Ein Benutzer könnte eine weitere Datentabelle definieren, die in Verbindung mit dieser Maschinentabelle verwendet werden soll, um Informationen, die Betriebszustände, die durch die sechs Maschinen in der Arbeitszelle verarbeitet werden sollen, betreffen, zu organisieren und zu speichern.
  • Tabelle I Benutzer-aufrufbare Module
  • Verwaltungsfunktionen:
  • MdDelDb - Erzeuge Schemadatei, Setze/Ändere Datenbankgrenzen
  • MdBuildDb - Baue die Datenbank in Speicher auf/ab
  • MdRmDb - Entferne die Datenbank aus Speicher
  • MdChgPwd - Ändere Datenbankpaßworte
  • Datendefinitionsfunktionen:
  • MdDelTbl - Definiere eine Tabelle
  • MdDelCol - Definiere eine Spalte in einer vorher definierten Tabelle
  • MdDelIx - Definiere einen Index auf Spalte (n) einer definierten Tabelle
  • MdDelIA - Definiere einen Eingangsbereich
  • MdRmTbl - Entferne eine Tabelle
  • MdRmIx - Entferne einen Index aus einer Tabelle
  • MdRmIA - Entferne einen Eingangsbereich
  • Sitzungsbeginn/End-Funktionen:
  • MdOpenDb - Öffne die Datenbank, Inituere eine Sitzung
  • MdCloseDb - Schließe die Datenbank, Beende eine Sitzung
  • Datenmanipulationsfunktionen:
  • MdOpenTbl - Öffne eine Tabelle für Zugriff
  • MdGetTplSeq - Erhalte ein Tupel durch sequentielle Suche
  • MdGetTplIx - Erhalte ein Tupel durch Hash-Indexschlüssel
  • MdGetTplDir - Erhalte ein Tupel direkt unter Verwendung seines Tupelidentifizierers
  • MdPutTpl - Füge ein Tupel zu einer Tabelle hinzu
  • MdUpdTpl - Aktualisiere ein Tupel bei seinem gegebenen Tupelindentifizierer
  • MdRmTpl - Beseitige ein Tupel bei seinem gegebenen Tupelidentifizierer
  • MdOpenLA - Öffne einen Eingangsbereich für einen Zugriff
  • MdGetIA - Erhalte einen Wert aus einem Eingangsbereich
  • MdPutIA - Speichere einen Wert in einem Eingangsbereich
  • MdLock - Verriegele eine Tabelle oder einen Eingangsbereich
  • MdUnlock - Entriegele eine Tabelle oder einen Eingangsbereich
  • Gebrauchsfunktionen:
  • MdTakeImage - Speichere ein Bild des momentanen Schemas in Speicher auf Platte
  • MdCleanup - Gewinne Betriebsmittel, die durch vorzeitig endende Prozesse gehalten sind, wieder
  • MdColInfo - Gib Informationen auf eine Spalte einer Tabelle
  • MdDbSzInfo - Gib die minimale Speichergröße der definierten Datenbank
  • MdIxInfo - Gib Informationen auf einen Index, der auf einer Tabelle definiert ist
  • Tabelle II Niederpegelmodule
  • Katalogverwaltungsfunktionen:
  • MdGetColNum - Erhalte eine Liste von Spaltennummern bei gegebenen Spaltennamen
  • MdGetColTid - Erhalte die tid eines Tupeis in der Spaltensystemtabelle mit spezifiziertem Spaltennamen
  • MdGetColTpl - Erhalte Adresse eines Tupels in der Spaltensystemtabelle
  • MdGetIATpl - Erhalte Adresse eines Tupels in der Eingangsbereich-Systemtabelle
  • MdGetIxTid - Erhalte die tid eines Tupels in der Indexsystemtabelle mit spezifiziertem Indexnamen
  • MdGetIxTpl - Erhalte Adresse eines Tupels in der Indexsystemtabelle
  • MdGetTblBlkH - Erhalte die Adresse des ersten Blocks einer Tabelle
  • MdGetTblTpl - Erhalte Adresse eines Tupels in der Tabellensystemtabelle
  • Tabellen- und Tupel-Verwaltungsfunktionen:
  • MdActNumTpl - Gib die momentane Anzahl von Tupeln, die in einer Tabelle gespeichert sind, zurück
  • MdAddSlotTpl - Füge ein Tupel an dem spezifizierten Schlitz zu einer Tabelle hinzu
  • MdAddTpl - Füge ein Tupel zu einer Tabelle hinzu
  • MdCalcTblSz - Berechne den Raum, der für einen Tabellenblock benötigt wird
  • MdCalcTplLen - Berechne den Raum, der zum Speichern eines Tupels benötigt wird
  • MdChkTplBlk - Überprüfe, daß Tupel zu einem gegebenen Tabellenblock gehört
  • MdDelTpl - Lösche ein Tupel aus einer Tabelle
  • MdGetColDesc - Erhalte die Adresse des Spaltendiskriptorarrays
  • MdGetNxtTid - Erhalte das nächste Tupel in der Tabelle
  • MdGetSlot - Erhalte die Adresse eines Schlitzes
  • MdGetTplInfo - Erhalte Adressen eines Tabellenblocks, eines Tupels, und eine Versionsnummer
  • MdGetTplVsn - Erhalte die Tupeladresse und die Verionsnummernadresse
  • MdInitTblBlk - Initialisiere einen Tabellenblock
  • MdRdTpl - Lies ein Tupel
  • MdRdTplCol - Lies Spalten eines Tupels
  • MdUndoDel - Füge ein gerade gelöschtes Tupel wieder hinzu
  • MdWrtTpl - Schreib ein Tupel
  • MdWrtTplCol - Schreibe in Spalten eines Tupels
  • Indexverwaltungsfunktionen:
  • MdAddIx - Füge einen einzelnen Indexeintrag für ein neues Tupel hinzu
  • MdAddIxTpl - Füge Indexeinträge für ein neues Tupel hinzu
  • MdCalcIxSz - Berechne die Größe, die für einen Index benötigt wird
  • MdCompKey - Vergleiche einen gelieferten Schlüssel mit den entsprechenden Schlüsselspalten in einem Tupel
  • MdDelIx - Lösche einen einzelnen Indexeintrag eines Tupels
  • MdDelIxTpl - Lösche Indexeinträge eines Tupels
  • MdGetColDef - Erhalte die Adresse eines Tupels in der Spaltensystemtabelle durch Hash-Codierung
  • MdGetIxDef - Erhalte die Adresse eines Tupels in der Indexsystemtabelle durch Hash-Codierung
  • MdGetKeyInfo - Gib Informationen über die Schlüsselspalten, die fur einen Index definiert sind, zurück
  • MdGetTblDef - Erhalte die Adresse eines Tupels in der Tabellensystemtabelle durch Hash-Codierung
  • MdGetTplHash - Finde ein Tupel unter Verwendung eines Hash-Index
  • MdHash - Wende die Hash-Funktion auf einen Schlüsselwert an
  • MdInitIxBlk - Initialisiere einen Hash-Indexblock
  • MdIxTplAddr - Erhalte die Adresse eines Tupels in einem Indexblock
  • Gleichzeitigkeitsverwaltungsfunktionen:
  • MdAllcSess - Weise eine Sitzung für einen Datenbankzugriff zu
  • MdCalcCtlSz - Berechne den Gesamtraum, der für die Steuerblöcke benötigt wird
  • MdCleanup - Bereinige den Datenbankzustand
  • MdInitLkCtl - Initialisiere die Steuerstrukturen
  • MdLk - Verriegele ein Objekt
  • MdUnLk - Entriegele ein Objekt
  • Speicherverwaltungsfunktionen:
  • MdAllcStg - Weise die angeforderte Speicherung in gemeinsam verwendetem Speicher zu
  • MdInitStg - Initialisiere die Speichersteuerungsstrukturen
  • MdRiseStg - Gib den spezifizierten Speicher frei
  • HP-UX-Schnittstellenfunktionen:
  • MdAllcSem - Weise eine Semaphore zu
  • MdAttchShM - Befestige den Aufrufprozeß an einem gemeinsam verwendeten Speichersegment
  • MdCloseFile - Schließe eine Datei
  • MdCrtShM - Erzeuge ein gemeinsam verwendetes Speichersegment
  • MdDetchShm - Trenne den Aufrufprozeß von einem gemeinsam verwendeten Speichersegment
  • MdFreeSem - Beseitige Zuweisung einer Semaphore
  • MdGetSem - Erhalte eine Semaphore
  • MdLkFile - Verriegele eine Datei
  • MdOpenFile - Öffne eine Datei
  • MdRdFile - Lies von einer Datei
  • MdRiseSem - Gib eine Semaphore frei
  • MdRmShM - Beseitige ein gemeinsam verwendetes Speichersegment
  • MdUnLkFile - Entriegele eine Datei
  • MdWrtFile - Schreibe in eine Datei
  • Gemischte Funktionen: (Sicherheit, dba, usw.)
  • MdChkDbAcc - Überprüfe die Datenbankzugreifbarkeit
  • MdChkDbMode - Überprüfe und Stelle Einzelbenutzermodus ein
  • MdCrtMDbStg - Erzeuge gemeinsam verwendeten Speicher für Datenbanksteuerstrukturen und Systemtabellen
  • MdEncrypt - Verschlüssele ein Paßwort
  • MdGetCfgFile - Erhalte den Namen der Datenbankkonfigurationsdatei
  • MdGetFileId - Erhalte eine Datei-ID
  • MdGetShMAddr - Erhalte die gemeinsam verwendete Speicheradresse
  • MdNameToKey - Erzeuge einen pseudozufälligen Integer- Wert aus einem Datenbanknamen
  • MdParse - Brich eine Zeichenfolge in mehrere Elemente auf
  • MdPutImage - Schreibe ein Bild der Datenbank in die db-Konfigurationsdatei
  • MdUpdFileId - Aktualisiere eine Datei-ID

Claims (3)

1. Ein Echtzeitdatenbank-Verwaltungssystem zum Steuern der Speicherung, der Wiedergewinnung und der Modifikation von Informationen in einer Datensammlung, die in Speichervorrichtungen in einem Datenverarbeitungssystem enthalten ist, und die eine Mehrzahl von Datensätzen, die als Tupel in einer Datentabelle (611) gespeichert sind, und unformatierten Daten, die in Eingangsbereichen gespeichert sind, aufweist, wobei das Datenbankverwaltungssystem folgende Merkmale aufweist:
(a) eine Einrichtung zum Definieren eines Index auf einer Datentabelle durch das Spezifizieren der Tupeleinträge (613, 617) der Datentabelle, die den Schlüsselwert (631) für den Index aufweisen;
(b) eine Hash-Index-Tabelleneinrichtung (415) zum Speichern von Tupelidentifizierern, die derart angeordnet sind, daß die Hash-Index-Tupelnummern, die eine Folge des Anwendens einer Hash- Codierungsfunktion auf einen gegebenen Schlüsselwert für einen Index sind, den Hash-Indextabellenorten entsprechen, die die Tupelidentifizierer enthalten, die Datentabellenorten, die Daten mit dem gegebenen Schlüsselwert enthalten, zugeordnet sind;
(c) eine erste Datenspeicherungseinrichtung (611) zum Speichern von Daten als Tupel in Datentabellen, wobei jedes Tupel an einem Ort einem Tupelidentifizierer zugeordnet ist, der das Tupel eindeutig identifiziert, mit folgenden Merkmalen:
(i) einer Einrichtung zum Einbringen eines Datentupels, das an einem verfügbaren Ort in der Tabelle gespeichert werden soll, wobei der Ort einen ersten Tupelidentifizierer aufweist;
(ii) einer Einrichtung (413) zum Anwenden einer Hash-Codierungsfunktion auf den Schlüsselwert für den Index, um eine Hash-Indextupelnummer, die einem Ort in einer Hash-Indextabelle (415) entspricht, zu bestimmen;
(iii) einer Einrichtung zum Speichern des ersten Tupelidentifizierers an dem Hash-Indextabellenort, der der bestimmten Hash-Indextupelnummer entspricht; und
(iv) einer Einrichtung zum Ausgeben des Tupelidentifiziers, der dem Ort in der Datentabelle entspricht, an dem das Datentupel gespeichert wurde;
(d) eine zweite Datenspeicherungseinrichtung zum Speichern unformatierter Daten in Speicherraumblöcken, die als Eingangsbereiche definiert sind, und zum Ausgeben eines Eingangsbereichsidentifizierers und der physikalischen Adresse der gespeicherten unformatierten Daten;
(e) eine erste Datenwiedergewinnungseinrichtung zum Liefern eines indirekten Zugriffs auf Daten in einer Datentabelle auf der Basis eines Schlüsselwerts (631) mit folgenden Merkmalen:
(i) einer Einrichtung (515) zum Anwenden einer Hash-Codierungsfunktion auf den Schlüsselwert, um den Ort eines Tupelidentifierers in einer Hash-Indextabelle zu bestimmen; und
(ii) einer Einrichtung zum Wiedergewinnen der Daten von dem Ort, der dem Tupelidentifizierer in der Datentabelle zugeordnet ist;
(f) eine zweite Datenwiedergewinnungseinrichtung zum Liefern eines direkten Zugriffs auf Daten in einer Datentabelle auf der Basis eines Tupelidentifizierers, die eine Einrichtung zum Wiedergewinnen der Daten von dem Ort, der dem Tupelidentifizierer in der Datentabelle zugeordnet ist, aufweist;
(g) eine dritte Datenwiedergewinnungseinrichtung zum Liefern eines direkten Zugriffs auf unformatierte Daten von Eingangsbereichen, die eine Einrichtung zum Wiedergewinnen unformatierter Daten unter Verwendung einer physikalischen Adresse für die Daten, und eine Einrichtung zum Wiedergewinnen von Daten unter Verwendung eines Eingangsbereichsidentifizierers und eines Versatzwerts aufweist; und
(h) eine Datenmodifikationseinrichtung zum Aktualisieren von Daten in der Datentabelle, die eine Einrichtung zum selektiven Aktualisieren der Hash-Indextabelle oder zum Nicht-Aktualisieren der Hash-Indextabelle, wenn Daten in einer indizierten Datentabelle modifiziert werden, aufweist.
2. Ein Echtzeitdatenbank-Verwaltungssystem gemäß Anspruch 1 mit ferner folgendem Merkmal:
einer Einrichtung zum Verriegeln der Daten in einer Datentabelle, um anzuzeigen, daß nicht auf die Daten zugegriffen oder dieselben nicht aktualisiert werden sollen;
wobei die erste Datenwiedergewinnungseinrichtung ferner eine Einrichtung zum selektiven Zugreifen auf Daten in verriegelten Datentabellen aufweist; und
wobei die Datenmodifizierungseinrichtung ferner eine Einrichtung zum selektiven Aktualisieren von Daten in verriegelten Datentabellen aufweist.
3. Ein Verfahrens des Speicherns und Wiedergewinnens von Datentupeln in einer Datentabelle in einer Echtzeitdatenbank, derart, daß mehr als ein Index für eine Datentabelle definiert werden kann, wobei jeder Ort in der Datentabelle einem eindeutigen Tupelidentifizierer zugeordnet ist, wobei das Verfahren zum Speichern folgende Schritte aufweist:
(a) Definieren zumindest eines Index (415) zum Speichern in einer Datentabelle durch das Spezifizieren der Einträge der Datentabelle, die den Schlüsselwert für den Index aufweisen;
(b) Einbringen (511) eines Datentupels, der gespeichert werden soll, in einen verfügbaren Ort in der Datentabelle;
(c) Anwenden (515) einer Hash-Codierungsfunktion auf den Schlüsselwert für den Index, um eine Hash-Indextupelnummer, die einem Ort in einer Hash-Indextabelle entspricht, zu bestimmen; und
(d) Speichern (517) des ersten Tupelidentifizierers in dem Hash-Indextabellenort, der der bestimmten Hash-Indextupelnummer entspricht;
(e) Wiederholen der obigen Schritte (b) bis (d) für jeden Index, der auf der Datentabelle definiert ist; und
(f) Ausgeben des Tupelidentifizierers, der dem Ort in der Datentabelle entspricht, an dem das Datentupel gespeichert wurde;
und wobei das Verfahren zum Wiedergewinnen von Datentupeln folgende Schritte aufweist:
(a) Anwenden einer Hash-Codierungsfunktion auf den Schlüsselwert, um einen Tupelidentifizierer für einen Ort in einer Hash-Indextabelle zu bestimmen;
(b) Wiedergewinnen des Tupelidentifizierers aus dem Ort in der Hash-Indextabelle; und
(c) Wiedergewinnen des Datentupels von dem Ort in der Datentabelle, der dem Tupelidentifizierer, der aus der Hash-Tabelle wiedergewonnen wird, zugeordnet ist.
DE68927621T 1988-06-30 1989-06-29 Echtzeitdatenbasis Expired - Fee Related DE68927621T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US07/213,578 US4961139A (en) 1988-06-30 1988-06-30 Data base management system for real-time applications

Publications (2)

Publication Number Publication Date
DE68927621D1 DE68927621D1 (de) 1997-02-20
DE68927621T2 true DE68927621T2 (de) 1997-04-24

Family

ID=22795648

Family Applications (1)

Application Number Title Priority Date Filing Date
DE68927621T Expired - Fee Related DE68927621T2 (de) 1988-06-30 1989-06-29 Echtzeitdatenbasis

Country Status (5)

Country Link
US (1) US4961139A (de)
EP (1) EP0350208B1 (de)
JP (1) JP2908810B2 (de)
CA (1) CA1319756C (de)
DE (1) DE68927621T2 (de)

Families Citing this family (119)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6376034A (ja) * 1986-09-19 1988-04-06 Hitachi Ltd 多重アドレス空間制御方式
US5081608A (en) * 1988-04-18 1992-01-14 Matsushita Electric Industrial Co., Ltd. Apparatus for processing record-structured data by inserting replacement data of arbitrary length into selected data fields
US5423022A (en) * 1988-10-03 1995-06-06 General Signal Corporation Method for adapting a relational database management system so that it can address foreign information
US5133075A (en) * 1988-12-19 1992-07-21 Hewlett-Packard Company Method of monitoring changes in attribute values of object in an object-oriented database
US5287499A (en) * 1989-03-22 1994-02-15 Bell Communications Research, Inc. Methods and apparatus for information storage and retrieval utilizing a method of hashing and different collision avoidance schemes depending upon clustering in the hash table
US5101488A (en) * 1989-05-02 1992-03-31 Motorola, Inc. Method for retrieving and updating data in a real-time data base system
US5249265A (en) * 1989-10-24 1993-09-28 International Business Machines Corporation Structure storage management in a graphics display device
JP3222125B2 (ja) * 1990-01-29 2001-10-22 株式会社日立製作所 システム間データベース共用方式
US6212557B1 (en) * 1990-01-29 2001-04-03 Compaq Computer Corporation Method and apparatus for synchronizing upgrades in distributed network data processing systems
US5257365A (en) * 1990-03-16 1993-10-26 Powers Frederick A Database system with multi-dimensional summary search tree nodes for reducing the necessity to access records
US5129082A (en) * 1990-03-27 1992-07-07 Sun Microsystems, Inc. Method and apparatus for searching database component files to retrieve information from modified files
US5410691A (en) * 1990-05-07 1995-04-25 Next Computer, Inc. Method and apparatus for providing a network configuration database
US5051745A (en) * 1990-08-21 1991-09-24 Pkware, Inc. String searcher, and compressor using same
US5339411A (en) * 1990-12-21 1994-08-16 Pitney Bowes Inc. Method for managing allocation of memory space
JPH0827755B2 (ja) * 1991-02-15 1996-03-21 インターナショナル・ビジネス・マシーンズ・コーポレイション データの単位を高速度でアクセスする方法
US5251316A (en) * 1991-06-28 1993-10-05 Digital Equipment Corporation Method and apparatus for integrating a dynamic lexicon into a full-text information retrieval system
US6289322B1 (en) * 1998-03-03 2001-09-11 Checkfree Corporation Electronic bill processing
US5383113A (en) * 1991-07-25 1995-01-17 Checkfree Corporation System and method for electronically providing customer services including payment of bills, financial analysis and loans
US5481704A (en) * 1991-09-27 1996-01-02 Computer Concepts Corp. Indexing/compression scheme for supporting graphics and data selection
US5371499A (en) * 1992-02-28 1994-12-06 Intersecting Concepts, Inc. Data compression using hashing
US5530854A (en) * 1992-09-25 1996-06-25 At&T Corp Shared tuple method and system for generating keys to access a database
US5685003A (en) * 1992-12-23 1997-11-04 Microsoft Corporation Method and system for automatically indexing data in a document using a fresh index table
JP2583010B2 (ja) * 1993-01-07 1997-02-19 インターナショナル・ビジネス・マシーンズ・コーポレイション 多層インデックス構造におけるローカルインデックステーブル及び大域インデックステーブルの間の一貫性を維持する方法
US5732262A (en) * 1994-01-31 1998-03-24 International Business Machines Corporation Database definition language generator
US5465353A (en) * 1994-04-01 1995-11-07 Ricoh Company, Ltd. Image matching and retrieval by multi-access redundant hashing
US5542089A (en) * 1994-07-26 1996-07-30 International Business Machines Corporation Method and apparatus for estimating the number of occurrences of frequent values in a data set
JP3699733B2 (ja) * 1994-08-10 2005-09-28 株式会社日立製作所 タプル単位排他制御方式
CA2130065C (en) * 1994-08-12 1999-03-02 Michael Joel Cincinatus Utilizing pseudotables as a method and mechanism for providing database monitor information
US5551024A (en) * 1994-10-13 1996-08-27 Microsoft Corporation System for identifying data records in a database using a data structure with linked parameters in a search range
JP3666907B2 (ja) * 1994-10-20 2005-06-29 富士通株式会社 データベース用ファイル格納管理システム
US5612865A (en) * 1995-06-01 1997-03-18 Ncr Corporation Dynamic hashing method for optimal distribution of locks within a clustered system
US5699500A (en) * 1995-06-01 1997-12-16 Ncr Corporation Reliable datagram service provider for fast messaging in a clustered environment
US5960194A (en) * 1995-09-11 1999-09-28 International Business Machines Corporation Method for generating a multi-tiered index for partitioned data
US5809494A (en) * 1995-11-16 1998-09-15 Applied Language Technologies, Inc. Method for rapidly and efficiently hashing records of large databases
US6023694A (en) * 1996-01-02 2000-02-08 Timeline, Inc. Data retrieval method and apparatus with multiple source capability
US5802511A (en) * 1996-01-02 1998-09-01 Timeline, Inc. Data retrieval method and apparatus with multiple source capability
US6625617B2 (en) 1996-01-02 2003-09-23 Timeline, Inc. Modularized data retrieval method and apparatus with multiple source capability
US6631382B1 (en) 1996-01-02 2003-10-07 Timeline, Inc. Data retrieval method and apparatus with multiple source capability
GB9604522D0 (en) * 1996-03-02 1996-05-01 Univ Strathclyde Databases
US5860070A (en) * 1996-05-31 1999-01-12 Oracle Corporation Method and apparatus of enforcing uniqueness of a key value for a row in a data table
US5855013A (en) * 1996-07-01 1998-12-29 Sun Microsystems, Inc. Method and apparatus for creating and maintaining a computer database utilizing a multi-purpose data format
US5802524A (en) * 1996-07-29 1998-09-01 International Business Machines Corporation Method and product for integrating an object-based search engine with a parametrically archived database
US5787431A (en) * 1996-12-16 1998-07-28 Borland International, Inc. Database development system with methods for java-string reference lookups of column names
US6014730A (en) * 1996-12-26 2000-01-11 Nec Corporation Dynamic adding system for memory files shared among hosts, dynamic adding method for memory files shared among hosts, and computer-readable medium recording dynamic adding program for memory files shared among hosts
JP3836928B2 (ja) 1997-02-26 2006-10-25 株式会社日立製作所 データベース処理方法
US6278994B1 (en) * 1997-07-10 2001-08-21 International Business Machines Corporation Fully integrated architecture for user-defined search
US6704866B1 (en) 1997-07-11 2004-03-09 Cisco Technology, Inc. Compression and encryption protocol for controlling data flow in a network
US6513047B1 (en) * 1997-09-04 2003-01-28 Sun Microsystems, Inc. Management of user-definable databases
US6081805A (en) * 1997-09-10 2000-06-27 Netscape Communications Corporation Pass-through architecture via hash techniques to remove duplicate query results
US5924096A (en) * 1997-10-15 1999-07-13 Novell, Inc. Distributed database using indexed into tags to tracks events according to type, update cache, create virtual update log on demand
US6401188B1 (en) 1998-02-27 2002-06-04 Cisco Technology, Inc. Method for selection on a pattern sequence
US6345094B1 (en) * 1998-06-08 2002-02-05 Davox Corporation Inbound/outbound call record processing system and method
GB9819183D0 (en) * 1998-09-04 1998-10-28 Int Computers Ltd Multiple string search method
US6886012B1 (en) * 1998-11-18 2005-04-26 International Business Machines Corporation Providing traditional update semantics when updates change the location of data records
US6408313B1 (en) * 1998-12-16 2002-06-18 Microsoft Corporation Dynamic memory allocation based on free memory size
JP2000200840A (ja) * 1999-01-06 2000-07-18 Mitsubishi Electric Corp 半導体装置およびその製造方法
US6341346B1 (en) 1999-02-05 2002-01-22 Cisco Technology, Inc. Method for comparison between a pattern sequence and a variable length key
KR100329357B1 (ko) * 1999-02-05 2002-03-22 박종섭 이동통신 시스템에서 홈 위치등록기의 인덱스 생성방법
US6363394B1 (en) * 1999-03-18 2002-03-26 Microsoft Corporation Auto-generation of table neighborhoods
US6625592B1 (en) * 1999-08-10 2003-09-23 Harris-Exigent, Inc. System and method for hash scanning of shared memory interfaces
US6687414B1 (en) * 1999-08-20 2004-02-03 Eastman Kodak Company Method and system for normalizing a plurality of signals having a shared component
SE9904094D0 (sv) * 1999-11-12 1999-11-12 Protegrity Research & Dev Method for reencryption of a database
US6742023B1 (en) 2000-04-28 2004-05-25 Roxio, Inc. Use-sensitive distribution of data files between users
US6366907B1 (en) 1999-12-15 2002-04-02 Napster, Inc. Real-time search engine
US7310629B1 (en) 1999-12-15 2007-12-18 Napster, Inc. Method and apparatus for controlling file sharing of multimedia files over a fluid, de-centralized network
US6611837B2 (en) 2000-06-05 2003-08-26 International Business Machines Corporation System and method for managing hierarchical objects
US6745189B2 (en) 2000-06-05 2004-06-01 International Business Machines Corporation System and method for enabling multi-indexing of objects
US7089301B1 (en) 2000-08-11 2006-08-08 Napster, Inc. System and method for searching peer-to-peer computer networks by selecting a computer based on at least a number of files shared by the computer
DE10196513T1 (de) 2000-08-15 2003-11-13 Seagate Technology Llc Dualmodus-Datenkompression für einen Betriebscode
US6718336B1 (en) 2000-09-29 2004-04-06 Battelle Memorial Institute Data import system for data analysis system
US8301535B1 (en) 2000-09-29 2012-10-30 Power Financial Group, Inc. System and method for analyzing and searching financial instrument data
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
DE10154656A1 (de) * 2001-05-10 2002-11-21 Ibm System und Verfahren für Empfehlungen von Artikeln
US7043738B2 (en) * 2002-03-05 2006-05-09 Sun Microsystems, Inc. Method and apparatus for managing a data imaging system using CIM providers in a distributed computer system
US7155501B2 (en) 2002-05-16 2006-12-26 Sun Microsystems, Inc. Method and apparatus for managing host-based data services using CIM providers
US7797215B1 (en) 2002-06-26 2010-09-14 Power Financial Group, Inc. System and method for analyzing and searching financial instrument data
US7290045B2 (en) * 2002-07-01 2007-10-30 Sun Microsystems, Inc. Method and apparatus for managing a storage area network including a self-contained storage system
US20040025142A1 (en) * 2002-08-05 2004-02-05 Sun Microsystems, Inc. Method and apparatus for managing objects in a CIM environment
US7213026B2 (en) * 2002-08-23 2007-05-01 Sun Microsystems, Inc. Apparatus and method for associating classes
US7047254B2 (en) * 2002-10-31 2006-05-16 Hewlett-Packard Development Company, L.P. Method and apparatus for providing aggregate object identifiers
US20060190424A1 (en) * 2005-02-18 2006-08-24 Beale Kevin M System and method for dynamically linking
US7683950B2 (en) * 2005-04-26 2010-03-23 Eastman Kodak Company Method and apparatus for correcting a channel dependent color aberration in a digital image
US7539661B2 (en) * 2005-06-02 2009-05-26 Delphi Technologies, Inc. Table look-up method with adaptive hashing
US11340988B2 (en) * 2005-09-30 2022-05-24 Pure Storage, Inc. Generating integrity information in a vast storage system
US20070162481A1 (en) * 2006-01-10 2007-07-12 Millett Ronald P Pattern index
WO2007103815A2 (en) 2006-03-03 2007-09-13 Perfect Search Corporation Hyperspace index
US8266152B2 (en) * 2006-03-03 2012-09-11 Perfect Search Corporation Hashed indexing
US8200569B1 (en) 2006-06-22 2012-06-12 Power Financial Group, Inc. Option search criteria testing
US20080052270A1 (en) * 2006-08-23 2008-02-28 Telefonaktiebolaget Lm Ericsson (Publ) Hash table structure and search method
US20080133407A1 (en) * 2006-11-30 2008-06-05 Checkfree Corporation Methods and Systems for Determining and Displaying Payment Options in an Electronic Payment System
US7702585B2 (en) * 2006-11-30 2010-04-20 Checkfree Corporation Methods and systems for the determination and display of payment lead time in an electronic payment system
US8204856B2 (en) * 2007-03-15 2012-06-19 Google Inc. Database replication
US20090024590A1 (en) * 2007-03-15 2009-01-22 Sturge Timothy User contributed knowledge database
US20100174692A1 (en) * 2007-03-15 2010-07-08 Scott Meyer Graph store
US20100121839A1 (en) * 2007-03-15 2010-05-13 Scott Meyer Query optimization
US7774347B2 (en) * 2007-08-30 2010-08-10 Perfect Search Corporation Vortex searching
US7912840B2 (en) * 2007-08-30 2011-03-22 Perfect Search Corporation Indexing and filtering using composite data stores
US7774353B2 (en) * 2007-08-30 2010-08-10 Perfect Search Corporation Search templates
US8032495B2 (en) * 2008-06-20 2011-10-04 Perfect Search Corporation Index compression
US8244646B2 (en) * 2009-06-09 2012-08-14 Fiserv, Inc. Systems and methods for determining estimated lead times
US20110093500A1 (en) * 2009-01-21 2011-04-21 Google Inc. Query Optimization
US20100312715A1 (en) * 2009-06-09 2010-12-09 Fiserv, Inc. Systems and Methods for Selecting Delivery Methods
US8200660B2 (en) 2009-10-22 2012-06-12 Hewlett-Packard Development Company, L.P. System and method for executing queries
US9525647B2 (en) 2010-07-06 2016-12-20 Nicira, Inc. Network control apparatus and method for creating and modifying logical switching elements
US10103939B2 (en) 2010-07-06 2018-10-16 Nicira, Inc. Network control apparatus and method for populating logical datapath sets
US8743888B2 (en) 2010-07-06 2014-06-03 Nicira, Inc. Network control apparatus and method
US10049125B2 (en) * 2012-03-30 2018-08-14 Allscripts Software, Llc Methods, apparatuses, and computer program products for identifying fields in a data tree
US20140317093A1 (en) * 2013-04-22 2014-10-23 Salesforce.Com, Inc. Facilitating dynamic creation of multi-column index tables and management of customer queries in an on-demand services environment
US10223637B1 (en) 2013-05-30 2019-03-05 Google Llc Predicting accuracy of submitted data
KR101717358B1 (ko) * 2015-07-29 2017-03-16 엘에스산전 주식회사 에너지 관리 시스템
US10275486B2 (en) * 2015-09-03 2019-04-30 Oracle International Corporation Multi-system segmented search processing
US11200217B2 (en) 2016-05-26 2021-12-14 Perfect Search Corporation Structured document indexing and searching
US10601711B1 (en) * 2016-11-22 2020-03-24 Innovium, Inc. Lens table
US10795873B1 (en) 2016-11-22 2020-10-06 Innovium, Inc. Hash output manipulation
US10355994B1 (en) 2016-11-22 2019-07-16 Innovium, Inc. Lens distribution
US10511531B1 (en) 2016-11-22 2019-12-17 Innovium, Inc. Enhanced lens distribution
CN107229692B (zh) * 2017-05-19 2018-05-01 哈工大大数据产业有限公司 一种基于流水线的分布式多表连接方法及系统
US10956392B1 (en) 2018-07-23 2021-03-23 Allscripts Software, Llc Methods, apparatuses, and computer program products for identifying fields in a data tree
CN109542922B (zh) * 2018-11-29 2023-04-07 泰康保险集团股份有限公司 针对实时服务数据的处理方法及相关系统

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2230258A5 (de) * 1973-05-16 1974-12-13 Honeywell Bull Soc Ind
US4267568A (en) * 1975-12-03 1981-05-12 System Development Corporation Information storage and retrieval system
US4376297A (en) * 1978-04-10 1983-03-08 Signetics Corporation Virtual memory addressing device
CA1151452A (en) * 1981-01-27 1983-08-09 Emile Favron Automatic chorder for stringed instruments
US4428045A (en) * 1981-09-11 1984-01-24 Data General Corporation Apparatus for specifying and resolving addresses of operands in a digital data processing system
JPS5941064A (ja) * 1982-08-31 1984-03-07 Nec Corp プロログ処理装置
US4631664A (en) * 1983-07-19 1986-12-23 Bachman Information Systems, Inc. Partnership data base management system and method
US4633393A (en) * 1983-10-21 1986-12-30 Storage Technology Partners Ii Generic key for indexing and searching user data in a digital information storage and retrieval device
US4922417A (en) * 1986-10-24 1990-05-01 American Telephone And Telegraph Company Method and apparatus for data hashing using selection from a table of random numbers in combination with folding and bit manipulation of the selected random numbers

Also Published As

Publication number Publication date
DE68927621D1 (de) 1997-02-20
CA1319756C (en) 1993-06-29
EP0350208B1 (de) 1997-01-08
JP2908810B2 (ja) 1999-06-21
EP0350208A2 (de) 1990-01-10
EP0350208A3 (de) 1991-11-27
US4961139A (en) 1990-10-02
JPH0272482A (ja) 1990-03-12

Similar Documents

Publication Publication Date Title
DE68927621T2 (de) Echtzeitdatenbasis
DE3780807T2 (de) Verfahren zum schnellen oeffnen von mit pfadnamen identifizierten plattendateien.
DE3781577T2 (de) Verwaltung der groesse und der anzahl der den prozessen zugeordneten speichersegmente in einer konfiguration fuer mehrfachverarbeitung.
DE69507940T2 (de) Rechner-verfahren und gerät für asynchrone geordnete operationen
DE69533786T2 (de) Vorrichtung zum Erzeugen von objektorientierten Schnittstellen für relationale Datenbanken und von dieser Vorrichtung durchgeführtes Verfahren
DE69802437T2 (de) Feinkörniger übereinstimmungsmechanismus für optimistische parallelsteuerung mit verriegelungsgruppen
DE69112694T2 (de) Verfahren zum Betrieb eines Datenverarbeitungssystems zur Ausführung von Datenbanktransaktionen.
DE68926422T2 (de) Datenbankverwaltungssystem
DE3382808T2 (de) Datenbankzugriffsverfahren mit einem benutzerfreundlichen Menü
DE3853460T2 (de) Raumverwaltungsanordnung für das Datenzugriffssystem eines Dateizugriffsprozessors.
DE60022152T2 (de) Parallele optimierte Ereignisauslösung in parallelen Datenbanksystemen
DE3855213T2 (de) Datenbanksystem und Verfahren für den gleichzeitigen Satzzugriff mit Hilfe eines Baumstrukturindexes
DE69322549T2 (de) Verteilte Transaktionsverarbeitung mit einem Zwei-Phasen-Bindungsprotokoll mit erwarteter Bindung ohne Aufzeichnungspflicht
DE69031772T2 (de) Verfahren zur Informations-Wiedergewinnung für ein Datenbanksystem
DE68925746T2 (de) Versionen-Verwaltungswerkzeug
DE69230452T2 (de) Verfahren und Vorrichtung zur Änderungskontrolle in mehreren Entwicklungsumgebungen
DE3856055T2 (de) Verfahren und Einrichtung, um gleichzeitigen Zugriff zu indizierten sequentiellen Dateien zu ermöglichen
DE68929132T2 (de) Datenbankverwaltungssystem und Verfahren hierfür
DE3854667T2 (de) Datenbasissystem mit einer Baumstruktur.
DE69502381T2 (de) Verfahren und vorrichtung zum steuern des zugriffs auf eine datenbank
DE69032685T2 (de) Verfahren und system mit einem cache für offene dateien in einem netzwerkrechnersystem
DE69126066T2 (de) Verfahren und Gerät zur Optimierung des Logbuchaufhebungsgebrauchs
DE112020000749T5 (de) Indexerstellung für sich entwickelnde umfangreiche Datensätze in Hybriden Transaktions- und Analysenverarbeitungssystemen mit mehreren Mastern
DE1499182C3 (de) Datenspeichersystem
CH658329A5 (de) Verfahren zur steuerung des daten-zugriffes in einer datenbank und apparat zu seiner durchfuehrung.

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: HEWLETT-PACKARD CO. (N.D.GES.D.STAATES DELAWARE),

8327 Change in the person/name/address of the patent owner

Owner name: HEWLETT-PACKARD DEVELOPMENT CO., L.P., HOUSTON, TE

8339 Ceased/non-payment of the annual fee