DE68927621T2 - Echtzeitdatenbasis - Google Patents
EchtzeitdatenbasisInfo
- 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
Links
- 230000006870 function Effects 0.000 claims description 34
- 238000000034 method Methods 0.000 claims description 32
- 238000007726 management method Methods 0.000 claims description 19
- 238000003860 storage Methods 0.000 claims description 11
- 238000013500 data storage Methods 0.000 claims description 4
- 238000012545 processing Methods 0.000 claims description 3
- 238000012986 modification Methods 0.000 claims 3
- 230000004048 modification Effects 0.000 claims 3
- 238000013480 data collection Methods 0.000 claims 1
- 230000008569 process Effects 0.000 description 25
- 238000004519 manufacturing process Methods 0.000 description 7
- 230000004044 response Effects 0.000 description 7
- 230000006399 behavior Effects 0.000 description 6
- 238000013523 data management Methods 0.000 description 6
- 238000013461 design Methods 0.000 description 5
- 230000003542 behavioural effect Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 238000011084 recovery Methods 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000003915 cell function Effects 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000013479 data entry Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000004886 process control Methods 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99938—Concurrency, 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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
- 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.
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)
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)
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 |
-
1988
- 1988-06-30 US US07/213,578 patent/US4961139A/en not_active Expired - Lifetime
-
1989
- 1989-06-29 CA CA000604425A patent/CA1319756C/en not_active Expired - Fee Related
- 1989-06-29 DE DE68927621T patent/DE68927621T2/de not_active Expired - Fee Related
- 1989-06-29 EP EP89306620A patent/EP0350208B1/de not_active Expired - Lifetime
- 1989-06-30 JP JP1169697A patent/JP2908810B2/ja not_active Expired - Fee Related
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 |