DE3788563T2 - Verfahren und Einrichtung um eine Datenbankadresse zu bestimmen. - Google Patents

Verfahren und Einrichtung um eine Datenbankadresse zu bestimmen.

Info

Publication number
DE3788563T2
DE3788563T2 DE87309117T DE3788563T DE3788563T2 DE 3788563 T2 DE3788563 T2 DE 3788563T2 DE 87309117 T DE87309117 T DE 87309117T DE 3788563 T DE3788563 T DE 3788563T DE 3788563 T2 DE3788563 T2 DE 3788563T2
Authority
DE
Germany
Prior art keywords
register
numbers
bits
result
database address
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
DE87309117T
Other languages
English (en)
Other versions
DE3788563D1 (de
Inventor
Brian Richard Churm
Michael Evans Diesel
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.)
AT&T Corp
Original Assignee
American Telephone and Telegraph Co Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by American Telephone and Telegraph Co Inc filed Critical American Telephone and Telegraph Co Inc
Application granted granted Critical
Publication of DE3788563D1 publication Critical patent/DE3788563D1/de
Publication of DE3788563T2 publication Critical patent/DE3788563T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9014Indexing; Data structures therefor; Storage structures hash tables
    • 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

Landscapes

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

Description

  • Die vorliegende Erfindung betrifft Verfahren und Einrichtungen zum Bestimmen einer Datenbankadresse.
  • Daten sind in einer Datenbank gewöhnlich in einer Beziehung oder Tabelle aufbewahrt, wobei Zeilen in der Tabelle Tupel genannt werden und Reihen Attribute mit eindeutigen Namen sind. Ein benanntes Attribut in einem spezifischen Tupel wird mit Datenwort bezeichnet. Ein Schlüssel ist eine Teilmenge von Attributen, deren Werte zur eindeutigen Kennzeichnung eines Tupels benutzt werden.
  • Ein Verfahren zum Speichern und Abrufen von Tupeln umfaßt die sequenzielle Anordnung der Tupel auf Grundlage ihrer Schlüssel, beispielsweise in alphabetischer oder numerischer Reihenfolge. Das beste Verfahren zum Suchens nach einem Tupel in einer sortierten Tabelle erfordert jedoch mindestens durchschnittlich log&sub2; M Proben, wobei M die Tabellengröße darstellt. Beispielsweise sind durchschnittlich mindestens 10 Proben erforderlich, um ein Tupel in einer Tabelle mit 1024 Einträgen zu finden. Mit einer Streuspeichertabelle genannten Tabelle können viel bessere Ergebnisse erzielt werden.
  • Der Grundgedanke hinter Streuspeicherung ist, daß zur Lokalisierung des gespeicherten Tupels der mit dem gewünschten Tupel verbundene Schlüssel benutzt wird. Am Schlüssel wird eine Umwandlung durchgeführt, um die Datenbankadresse, an der das Tupel gespeichert ist, zu erzeugen. Solche Umwandlungen werden "Hash-Funktionen" bzw. Streufunktionen genannt, und die mit der Streuspeicherung verbundenen Datenspeicherungs- und -abrufprozeduren sind als "Hashing" bzw. Datenstreuung bekannt. Eine gute Streufunktion ist eine, die die berechneten Adressen gleichförmig über die verfügbaren Adressen ausbreitet. Sollte eine berechnete Adresse bereits mit einem anderen Tupel belegt sein, da zufälligerweise zwei Schlüssel in dieselbe Adresse umgewandelt worden sind, so wird ein Verfahren zur Schlüsselkollisionsauflösung dazu benutzt, zu bestimmen, wo das zweite Tupel aufbewahrt ist. Beispielsweise wird bei einem bekannten lineare Probenahme genannten Verfahren das zweite Tupel an der nächsten verfügbaren Adresse eingespeichert.
  • Zur Umwandlung von Schlüsseln mit Zeichenketten ist eine Anzahl von Streufunktionen entwickelt worden. Solche Funktionen sind beispielsweise bei der Streuung von Symboltabellen für Computerprogrammkompilierer nützlich und bilden typisch verschiedene numerische oder logische Bitverknüpfungen, die die Zeichen der Kette darstellen, um eine positive Ganzzahl zu bestimmen. Die Datenadresse wird dann als Funktion der positiven Ganzzahl abgeleitet. Beispielsweise kann die Datenbankadresse durch Teilen der positiven Ganzzahl durch eine Konstante und Annahme des Rests erhalten werden. Bei bekannten Streufunktionen ergeben Muster in den Daten jedoch statt einer gleichförmigen Verteilung häufig eine bedeutende Datenanhäufung. Wenn die Daten in Seiten auf einer Platte gespeichert sind, kann die Anhäufung ergeben, daß viele Tupel auf anderen Überlaufseiten gespeichert sind, als den durch die berechneten Adressen definierten. Dies führt zu einem langsamen Datenzugriff, da der Abruf bestimmter Tupel häufig mehr als eine Plattenzugriffsoperation benötigen wird. Datenzugriffszeiten können durch Vergrößerung des verfügbaren Gesamtspeicherraums verbessert werden, so daß die Daten lockerer gepackt sind, aber dies nur mit bedeutendem Aufwand.
  • Angesichts des obigen besteht ein anerkanntes Problem im Stande der Technik in der Anhäufung von Daten, die eintritt, wenn Zeichenketten durch die Durchführung von Bearbeitungen und Verknüpfungen der einzelnen Zeichen gestreut werden.
  • Nach einem Aspekt der vorliegenden Erfindung ist ein Verfahren nach Anspruch 1 vorgesehen.
  • Nach einem weiteren Aspekt der vorliegenden Erfindung ist eine Einrichtung nach Anspruch 7 vorgesehen.
  • In einer beispielhaften Datenstreuanordnung werden die Zeichen einer Zeichenkette vorteilhaft durch aus einer vorbestimmten Zahlentabelle ausgewählte Zahlen an eindeutig durch die Zeichen definierten Tabellenstellen ersetzt. Eine sich dieses Verfahrens bedienende Datenstreuanordnung ermöglicht die Ableitung gleichförmig verteilter Datenbankadressen, selbst wenn die Daten hoch strukturiert sind, womit Daten relativ dicht in der Datenbank gepackt sein können und dennoch ein schneller Datenzugriff erreicht werden kann.
  • In einer bevorzugten Ausführungsform ist das Datenwort ein Tupelschlüssel, und die Dateneinheiten sind Zeichen, die jeweils durch ein nach dem wohlbekannten ASCII-Kode kodiertes Acht-Bit-Byte dargestellt werden. Jedes Zeichen wird durch die an der durch die ASCII- Darstellung dieses Zeichens definierten Tabellenstelle gespeicherte Zahl ersetzt. Bezeichnenderweise sind die Zahlen in der vordefinierten Zahlentabelle unabhängig von den Zeichen des Schlüssels, d. h. sie können nicht durch vorbestimmte Bearbeitungen von diesen abgeleitet werden. Die Zahlen in der vorbestimmten Tabelle sind statistisch zufallsmäßig.
  • Die ausgewählten Zahlen werden durch Initialisieren eines Registers, Umordnen der Bit im Register, Erzeugen einer Verknüpfung einer der ausgewählten Zahlen mit Bit im Register, Speichern der Verknüpfung im Register und nachfolgendem Wiederholen der Umordnungs-, Erzeugungs-und Speicherschritte für jede der ausgewählten Zahlen verknüpft. Die Datenbankadresse wird durch Teilen des im Registers gebildeten Ergebnisses durch eine positive Ganzzahl und Annahme des Restes abgeleitet. In der bevorzugten Ausführungsform umfaßt der Bitumordnungsschritt eine Ringschiebeoperation der Registerbit, und die erzeugten Verknüpfungen sind Exklusiv-ODER- Verknüpfungen.
  • Beschreibung der Zeichnung
  • Fig. 1 zeigt ein Blockdiagramm eines Computersystems, in dem ein beispielhaftes erfindungsgemäßes Datenstreuverfahren realisiert ist;
  • Fig. 2 zeigt ein Übersichts-Flußdiagramm eines im Computersystem der Fig. 1 benutzten Datenbankadreßerzeugungsprogramms;
  • Fig. 3 ist eine detaillierteres Flußdiagramm eines Teils des im Computersystem der Fig. 1 benutzten Datenbanksdreßerzeugungsprogramms; und
  • Fig. 4 ist ein Blockdiagramm einer Datenbanksdreßerzeugungseinrichtung, in der das beispielhafte Datenstreuverfahren realisiert ist.
  • Detaillierte Beschreibung
  • Eine die Erfindung verkörpernde beispielhafte Streuanordnung wird für Datenspeicherung und Abruf einer Beziehung auf einer Platte 105 (Fig. 1) benutzt. Die Platte 105 ist als Teil des Computersystems 100 enthalten, das als Anlagen-Zentralsteuerung in einer Fernsprechvermittlungsanlage funktioniert. Der Schlüssel für die Beziehung ist ein Berechtigungskode mit einer Zeichenkette von 15 ASCII-Zeichen. Jedes Tupel der Beziehung enthält auch Informationen, die eine von einer Menge möglicher Wählberechtigungen definieren. Wenn ein Teilnehmer seinen oder ihren zugewiesenen Berechtigungskode von einem (nicht gezeigten) Sprechstellengerät aus eingibt, wird von einem Prozessor 101 des Computersystems 100 ein in einem Programmblock 103 eines Speichers 102 gespeichertes Programm ausgeführt, um die Datenbankadresse zu bestimmen, wo das vom eingegebenen Berechtigungskode gekennzeichnete Tupel auf der Platte 105 gespeichert ist. Wie hier beschrieben, umfaßt die Programmausführung die Auswahl von Zufallszahlen aus einer in einem Tabellenblock 104 gespeicherten Tabelle von Zufallszahlen. Wenn das gekennzeichnete Tupel in der auf der Platte 105 gespeicherten Beziehung vorhanden ist, wird das Tupel vom Prozessor 101 gelesen, um beispielsweise zu bestimmen, ob der Teilnehmer von diesem Sprechstellengerät aus ein Telefongespräch einleiten kann.
  • In Fig. 2 wird ein Übersichts-Flußdiagramm des im Programmblock 103 gespeicherten Datenbanksdreßerzeugungsprogramms dargestellt. Das Programm benutzt eine Tabelle von 31-Bit-Zufallszahlen, die in abgekürzter Form in der Tabelle 1 gezeigt ist. Die vollständige Tabelle ist im Anhang A enthalten.
  • TABELLE VON ZUFALLSZAHLEN
  • Stelle Zahl
  • 0 Ox32bf5692
  • 1 Ox66950646
  • . .
  • . .
  • . .
  • 255 Ox604ae8a3 TABELLE I
  • An jeder von 256 Tabellenstellen in der Tabelle ist eine 31-Bit-Zufallszahl gespeichert. Die 31-Bit- Zufallszahlen sind in der Tabelle 1 und dem Anhang A in Hexadezimalform dargestellt. Die Programmausführung beginnt bei Block 200, wobei die Zeichenkette von N Zeichen gespeichert wird, wobei N eine positive Ganzzahl größer als 1 ist. Im vorliegenden Beispiel beträgt N 15. Im Block 210 werden 15 Zufallszahlen aus der Tabelle von Zufallszahlen ausgewählt, eine von jeder von einem Zeichen der Kette definierten Stelle. Im Block 220 werden die 15 Zufallszahlen verknüpft, um ein Ergebnis zu bilden. Im Block 230 wird dann die Datenbankadresse für die Zeichenkette als deterministische Funktion des Ergebnisses abgeleitet.
  • In Fig. 3 wird ein detaillierteres Flußdiagramm eines Teils des Datenbanksdreßerzeugungsprogramms gezeigt. Der in Fig. 3 dargestellte Programmteil ersetzt die Blöcke 200, 210 und 220 der Fig. 2. Die Ausführung beginnt bei Block 301, wo ein oder mehrere Schlüssel eingegeben werden. Es sei anfangs angenommen, daß ein einziger Schlüssel mit 15 ASCII-Zeichen eingegeben wird, wobei jedes Zeichen durch ein Acht-Bit-Byte dargestellt wird. Die Ausführung schreitet zu Block 302 fort, wo ein veränderliches l-foldbit auf Null initialisiert wird. Die Ausführung schreitet dann zum Entscheidungsblock 303 fort, wo je nachdem, ob der Schlüssel ein Zeichenfeld oder ein Einzelzeichen ist, ein Sprung ausgeführt wird. Entsprechend der Annahme eines Zeichenfeldes von 15 Zeichen oder Byte schreitet die Ausführung vom Entscheidungsblock 303 zum Block 304, wo ein veränderliches Register auf Null initialisiert wird, und dann zum Block 305 fort, wo die Anzahl von Byte im Schlüssel berechnet wird. Das veränderliche Register umfaßt 32 Bit einschließlich eines anfänglichen Vorzeichenbits. Durch die Abfolge der Blöcke 306, 307, 308, 309 und 310 wird eine Ringschiebeoperation nach links der 31 am weitesten rechts liegenden Bit des veränderlichen Registers um sieben Bit bewirkt (da das veränderliche Register auf Null initialisiert wurde, hat die Ringschiebeoperation nach links bei der ersten Ausführung der Blöcke 306 bis einschließlich 310 keine Wirkung). Danach wird im Block 311 eine Exklusiv-ODER-Verknüpfung des veränderlichen Registers mit der Zufallszahl an der durch das erste Zeichen oder Byte des Schlüssels definierten Stelle der Zufallszahlentabelle gebildet. Im Block 312 wird eine Bestimmung durchgeführt, ob noch weitere Byte des Schlüssels zu verarbeiten sind. Da an diesem Punkt nur ein Byte verarbeitet worden ist, schreitet die Ausführung zum Block 313 fort, wo auf das zweite Byte des Schlüssels zugegriffen wird, und die Abfolge der Blöcke 306 bis einschließlich 311 wird wiederholt. Es wird wiederum eine Ringschiebeoperation nach links um sieben Bit an den 31 am weitesten rechts liegenden Bit des veränderlichen Registers durchgeführt. Im Block 311 wird eine Exklusiv- ODER-Verknüpfung des veränderlichen Registers mit der Zufallszahl an der vom zweiten Byte des Schlüssels definierten Stelle der Zufallszahlentabelle gebildet. Der Vorgang wiederholt sich für jedes der 15 Byte des Schlüssels. Nach Verarbeitung des letzten Bytes schreitet die Ausführung vom 312 zum Block 314 fort, wo der Inhalt des veränderlichen Registers zum veränderlichen l-foldbit hinzugefügt wird. Die Ausführung schreitet zum Entscheidungsblock 315 fort, wo bestimmt wird, ob noch weitere Schlüssel zu verarbeiten sind. Entsprechend dem vorliegenden Beispiel eines Einzelschlüssels schreitet die Ausführung zum Block 316 fort, wo das Vorzeichenbit des veränderlichen 1-fachen Bit maskiert wird. Im Block 317 wird dann das veränderliche l-foldbit in eine von einem durch Zeiger veränderliches addrfoldbit definierte Speicheradresse übertragen. Abschließend wird das veränderliche addrfoldbit im Block 318 als der Zeiger zur Stelle, wo das Ergebnis gespeichert ist, zurückgeführt.
  • Das Programm der Fig. 3 enthält auch Vorkehrungen zur Bearbeitung von mehrfachen Schlüsseln und Schlüsseln mit einem Einzelzeichen oder -byte. Im Falle von Einzelbyteschlüsseln schreitet die Ausführung vom Entscheidungsblock 303 zum Block 319 fort, wo der Schlüssel einfach in das veränderliche l-foldbit hineinaddiert wird. Mehrfachschlüssel werden durch Sprung vom Entscheidungsblock 315 zum Block 320 verarbeitet, wo der nächste Schlüssel erhalten wird, und nachfolgender Wiederholung des oben beschriebenen Vorgangs ab Block 303.
  • Es ist wichtig, darauf hinzuweisen daß daselbe Ergebnis erzielt wird, egal ob alle 15 Zufallszahlen zuerst ausgewählt und danach verknüpft werden wie im Flußdiagramm der Fig. 2 oder jede Zufallszahl nacheinander ausgewählt und dann mit dem Inhalt des veränderlichen Registers wie im Flußdiagramm der Fig. 3 verknüpft wird.
  • Wie oben besprochen, wird das durch das Programm der Fig. 3 erhaltene Ergebnis dann zur Ableitung der Datenbankadresse benutzt, sowohl zur anfänglichen Speicherung des Tupels einschließlich der Zeichenkette auf der Platte 105 als auch zum nachfolgenden Abrufen des Tupels. Im vorliegenden Beispiel wird die Beziehung auf der Platte 105 auf M1 Seiten gespeichert, die jeweils Raum für M2 Tupel pro Seite umfassen, wobei M1 und M2 technische Größen sind. Wenn das Ergebnis der Ausführung des Programms der Fig. 3 für eine bestimmte Zeichenkette mit R bezeichnet wird, wird das die Zeichenkette enthaltende Tupel auf Seite R mod M1 an Stelle R mod M2 gespeichert, wobei R mod M1 der Rest der Teilung von R durch M1 und R mod M2 der Rest der Teilung von R durch M2 ist. Wenn die abgeleitete Datenbankadresse zur Speicherung eines weiteren Tupels benutzt wird, erfolgt eine lineare Probenahme der anderen Adresse auf dieser Seite, und die nächste verfügbare Adresse auf der Seite wird benutzt (gegebenenfalls mit Rückkehr zum Seitenanfang). Sollte die abgeleitete Datenbankadresse eine Seite definieren, die vollständig mit anderen Tupeln belegt ist, wird das nächste Tupel auf einer Überlaufseite gespeichert.
  • Die oben beschriebene beispielhafte Datenstreuanordnung ist zur Speicherung von 100 074 Tupeln auf der Platte 105 mit einer Packungsdichte von 73% benutzt worden, wobei nur ein Tupel im Überlauf gespeichert wurde. Bei Verringerung der Packungsdichte auf 69% wurden keine Tupel im Überlauf gespeichert.
  • Die Fig. 4 ist ein Blockdiagramm eines Datenbanksdreßgenerators 400, mit dem das oben beschriebene Datenstreuverfahren zur Erzeugung einer Datenbankadresse aus einem N-Byte-Schlüssel realisiert wird, wobei N eine positive Ganzzahl größer als eins ist. Im vorliegenden Beispiel beträgt N 15. Der Generator 400 enthält ein Register 401, in dem der 15-Byte-Schlüssel gespeichert wird, und weiterhin einen Speicher 402, der zur Speicherung der Tabelle von 31-Bit-Zufallszahlen von Anhang A benutzt wird. Das Register 401 überträgt das erste Byte des Schlüssels zu einem ADDRESS- Eingangsanschluß des Speichers 402. Eine Lesesteuereinheit 407 führt als erstes eine 7-Bit- Ringschiebeoperation nach links am Inhalt eines 31-Bit- Ringschieberegisters 405 durch, indem sie sieben Taktimpulse zu diesem überträgt. Danach führt die Lesesteuereinheit 407 das Auslesen einer 31-Bit- Zufallszahl aus dem Speicher 402 an der vom Byte aus dem Register 401 definierten adressierten Stelle durch. Die Zufallszahl wird in einem 31-Bit-Register 403 gespeichert. Eine Exklusiv-ODER-Einheit 404 führt dann eine Exklusiv-ODER-Verknüpfung des Inhalts des Registers 403 und Schieberegisters 405 durch und überschreibt das Ergebnis zurück in das Schieberegister 405. Der Vorgang wiederholt sich für jedes der 15 Byte des Schlüssels. Von einer Teilereinheit 408 wird dann die Datenbankadresse als Funktion des im Schieberegister 405 gebildeten Ergebnisses abgeleitet. In der vorliegenden Ausführungsform wird vom Teiler 408 die Seite der Platte 105 (Fig. 1) nach R mod M1 und der Stelle auf dieser Seite nach R mod M2 erzeugt, wobei R das im Schieberegister 405 gebildete Ergebnis, M1 die für die Speicherung verfügbare Gesamtzeitenzahl und M2 die Anzahl von Tupeln ist, die pro Seite gespeichert werden können.
  • ANHANG A
  • Ox32bf5b92,
  • Ox6b95064b,
  • Ox2d3a1e03,
  • Ox3929a55f,
  • Ox28caecbd,
  • Ox71767ca5,
  • Ox01fe9e6a,
  • Ox4ac377e5,
  • Ox146630ef,
  • Ox311d9a0e,
  • Ox5872d4d0,
  • Ox0788b05a,
  • Ox732e6d08,
  • Ox14ef12de,
  • Ox145c747a,
  • Ox443b76ec,
  • Ox4d5498c8,
  • Ox4a95e1ab,
  • Ox228e69e1,
  • Ox31fb3083,
  • Ox258e265e,
  • Ox5f06390c,
  • Ox2636164a,
  • Ox09ab3b54,
  • Ox33d6788f,
  • Ox6dbe8f78,
  • Ox78926b03,
  • Ox54d7a293,
  • Ox6c59517f,
  • Ox005a474c,
  • Ox3b2f3e3b,
  • Ox442c1b45,
  • Ox64d92420,
  • Ox21ff94eb,
  • Ox7dcad37f,
  • Ox2744bc33,
  • Ox4ce8d234,
  • Ox4dea64ff,
  • Ox1b3131cd,
  • Ox716502fa,
  • Ox26ff0100,
  • Ox137024de,
  • Ox2b388156,
  • Ox3198d840,
  • Ox5261ce8f,
  • Ox60746f09,
  • Ox4d434ad5,
  • Ox440c6501,
  • Ox3acc519f,
  • Ox5384bdce,
  • Ox29e11287,
  • Ox7922ab07,
  • Ox2f1bee2d,
  • Ox78d1660d,
  • Ox00f368c6,
  • Ox421ff278,
  • Ox22ea2898,
  • Ox031c3c17,
  • Ox4bc52a46,
  • Ox1a3c3e89,
  • Ox70584174,
  • Ox079964b2,
  • Ox216349ea,
  • Ox26c31b51,
  • Ox721c83ee,
  • Ox3fc4f439,
  • Ox5ae21e44,
  • Ox24a936b8,
  • Ox6eb5d0d7,
  • Ox56781de0,
  • Ox3aafcca8,
  • Ox7ad5568e,
  • Ox6328904f,
  • Ox3032d516,
  • Ox1d440beb,
  • Ox2d615db8,
  • Ox2670d40f,
  • Ox55bae303,
  • Ox5c0718bd,
  • Ox48713284,
  • Ox69881452,
  • Ox31ff9231,
  • Ox68cd55a0,
  • Ox6c08781e,
  • Ox17199161,
  • Ox78c13246,
  • Ox3662b084,
  • Ox42a52d1c,
  • Ox086703ba,
  • Ox74edd5ef,
  • Ox70f88801,
  • Ox61746134,
  • Ox330fe4dc,
  • Ox5818ccd9,
  • Ox617a6a30,
  • Ox33d7540d,
  • Ox10083ab2,
  • Ox3e087bd9,
  • Ox1c79a727,
  • Ox6fc26f32,
  • Ox43b06f99,
  • Ox002e552c,
  • Ox6e25510f,
  • Ox0264ad23,
  • Ox684e6110,
  • Ox1f16d2d8,
  • Ox2843e3e3,
  • Ox7b9d1f86,
  • Ox77c06efb,
  • Ox679b7531,
  • Ox3efd6ec6,
  • Ox1c2d667b,
  • Ox49c5f594,
  • Ox24fee777,
  • Ox2918b901,
  • Ox21730b0d,
  • Ox16453bef,
  • Ox003b8c9d,
  • Ox05bb7c99,
  • Ox1edecec4,
  • Ox352d8127,
  • Ox59ced625,
  • Ox1c657089,
  • Ox40802257,
  • Ox0894722a,
  • Ox324fe726,
  • Ox3d5f7cal,
  • Ox1bec157e,
  • Ox1c18f21e,
  • Ox7546256f,
  • Ox2cd410fb,
  • Ox18aa31e6,
  • Ox1b09bf6f,
  • Ox511c7ac6.
  • Ox06db3b15,
  • Ox6446d33c,
  • Ox03ed1f77,
  • Ox38d82849,
  • Ox1694b290,
  • Ox7751ae6e,
  • Ox746f5ac8,
  • Ox3c862df6,
  • Ox6f93b784,
  • Ox590859e8,
  • Ox77107419,
  • Ox3a406846,
  • Ox33043c7e,
  • Ox7257c916,
  • Ox58c623ca,
  • Ox6b5ba5f3,
  • Ox5eae7617,
  • Ox535cccf3,
  • Ox56cdc215,
  • Ox49e217db,
  • Ox22f58a32,
  • Ox77bacbb6,
  • Ox54ba69d3,
  • Ox06119cfd,
  • Ox2fbfb8d1,
  • Ox4f2101a8,
  • Ox13063de8,
  • Ox304b8ca0,
  • Ox5281f894,
  • Ox0349bd17,
  • Ox6bb25b4d,
  • Ox09dbc092,
  • Ox5f0ea0d0,
  • Ox20c42763,
  • Ox736fa1b8,
  • Ox3056c18e,
  • O28e65b48,
  • Ox1b104d35,
  • Ox53031cea,
  • Ox202b17b7,
  • Ox1d44378b,
  • Ox201e37d0,
  • Ox78bb7895,
  • Ox117fe141,
  • Ox229159ea,
  • Ox463c097f,
  • Ox297988e7,
  • Ox6ebaf12f,
  • Ox25fa6013,
  • Ox570c2f2e,
  • Ox6aa491b7,
  • Ox702ad836,
  • Ox5328354e,
  • Ox095bd915,
  • Ox7303964b,
  • Ox207559c1,
  • Ox4e3fb054,
  • Ox6bc30c8f,
  • Ox6a7f9bc4,
  • Ox2fb0ef0e,
  • Ox60e6f4c7,
  • Ox0dfac109,
  • Ox6ce76827,
  • Ox47981a75,
  • Ox6dc53253,
  • Ox2bea9a15,
  • Oxs88be808,
  • Ox2c2f6cc9,
  • Ox7260fb5f,
  • Ox7ab6f09e,
  • Ox0f9504d5,
  • Ox7da33ed7,
  • Ox070b0d6f,
  • Ox4eb0fd36,
  • Ox04e155bc,
  • Ox3030410c,
  • Ox43470519,
  • Ox24161S8c,
  • Ox47bfb53a,
  • Ox4dba2333,
  • Ox688117a1,
  • Ox39280ef9,
  • Ox03786541,
  • Ox3c65b65b,
  • Ox24778c34,
  • Ox2577f839,
  • Ox190c0c05,
  • Ox02400ad6,
  • Ox6a304ebe,
  • Ox495d7c37,
  • Ox0d697364,
  • Ox5dd22c5e,
  • Ox0f3e9668,
  • Ox1ca86000,
  • Ox793f94f0,
  • Ox5e993e53,
  • Ox692239b1,
  • Ox69beadda,
  • Ox20201c9a,
  • Ox20d4da20,
  • Ox2b49ea28,
  • Ox31b13f6e,
  • Ox437f2bfc,
  • Ox2219b1bb,
  • Ox335b31c3,
  • Ox6f797920,
  • Ox05dfc842,
  • Ox25b4984a,
  • Ox3276abdf,
  • Ox47ae287f,
  • Ox27c8fcb6,
  • Ox694a32e3,
  • Ox3cdc93d5,
  • Ox0baa97d8,
  • Ox21965be8,
  • Ox7561b36c,
  • Ox7d3d6335,
  • Ox2a82O8e5,
  • Ox73772976,
  • Ox1ecd1fa1,
  • Ox2fc3d9a2,
  • Ox604ae8a3}.

Claims (9)

1. Verfahren zur Bestimmung einer Datenbankadresse für ein Datenwort, das ein Schlüssel ist, wobei das besagte Datenwort N Dateneinheiten umfaßt, wobei N eine positive Ganzzahl größer als Eins ist, mit folgenden Schritten:
Auswählen einer Zahl aus einer vordefinierten Zahlentabelle für jede der besagten N Dateneinheiten an einer von dieser Dateneinheit bestimmten Stelle in der besagten Tabelle,
Verknüpfen der besagten ausgewählten N Zahlen zum Bilden eines Ergebnisses, und
Ableiten der besagten Datenbankadresse als vorbestimmte Funktion des besagten Ergebnisses, jede der besagten ausgewählten Zahlen eine Mehrzahl von Bit umfaßt, und der besagte Verknüpfungsschritt A) das Initialisieren eines Registers zum Speichern einer Mehrzahl von Bit, B) Umordnen der Bit im besagten Register, C) Erzeugen einer Verknüpfung einer der besagten ausgewählten Zahlen mit Bit im besagten Register, D) Speichern der besagten Verknüpfung im besagten Register, und E) Wiederholen der Schritte B), C), und D) für andere der besagten ausgewählten Zahlen zum Bilden des besagten Ergebnisses im besagten Register umfaßt.
2. Verfahren nach Anspruch 1, in dem die Zahlen der besagten vordefinierten Zahlentabelle jeweils unabhängig von den besagten N Dateneinheiten sind.
3. Verfahren nach Anspruch 2, in dem die Zahlen der besagten vordefinierten Zahlentabelle Zufallszahlen sind.
4. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß der besagte Umordnungsschritt die Durchführung einer Ringschiebeoperation an Bit im besagten Register umfaßt.
5. Verfahren nach Anspruch 1 oder 4, in dem die besagte Verknüpfung eine Exklusiv-ODER-Verknüpfung umfaßt.
6. Verfahren nach Anspruch 3, in dem der besagte Ableitschritt das Ableiten der besagten Datenbankadresse vom besagten Ergebnis als Rest einer Teilung des besagten Ergebnisses durch eine positive Ganzzahl größer als eins umfaßt.
7. Einrichtung (400) zum Bestimmen einer Datenbankadresse für ein Datenwort, das ein Schlüssel ist, wobei das besagte Datenwort N Dateneinheiten umfaßt, wobei N eine positive Ganzzahl größer als eins ist, mit Mitteln (402) zum Speichern einer vordefinierten Zahlentabelle, Mitteln (401, 407) zum Auswählen von N Zahlen aus dem besagten Speichermittel an von jeder der besagten N Dateneinheiten bestimmten Stellen des besagten Speichermittels, Mitteln (404, 405) zum Verknüpfen von N aus dem besagten Speichermittel ausgewählten Zahlen zum Bilden eines Ergebnisses, und Mitteln (408) zum Ableiten der besagten Datenbankadresse als vorbestimmte Funktion des besagten Ergebnisses,
wobei die Zahlen der besagten vordefinierten Zahlentabelle Zufallszahlen sind, die jeweils eine Mehrzahl von Bit umfassen, und daß das besagte Verknüpfungsmittel Registermittel (405) zum Speichern einer Mehrzahl von Bit und auf jede durch das besagte Auswählmittel ausgewählte Zahl reagierende Mittel (404) zum Erzeugen einer Verknüpfung der besagten jeweiligen ausgewählten Nummer mit Bit im besagten Registermittel und Überschreiben der erzeugten Verknüpfung in das besagte Registermittel umfaßt, wobei das besagte Ergebnis im besagten Registermittel gebildet wird, nachdem N Zahlen vom besagten Auswählmittel ausgewählt worden sind und N erzeugte Verknüpfungen in das besagte Registermittel überschrieben worden sind.
8. Einrichtung nach Anspruch 7, mit Mitteln (406, 405) zum Umordnen von Bit im besagten Registermittel.
9. Einrichtung nach Anspruch 8, in der das besagte Umordnungsmittel Mittel (405) zum Durchführen einer Ringschiebeoperation an Bit im besagten Registermittel umfaßt.
DE87309117T 1986-10-24 1987-10-15 Verfahren und Einrichtung um eine Datenbankadresse zu bestimmen. Expired - Fee Related DE3788563T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US06/922,875 US4922417A (en) 1986-10-24 1986-10-24 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

Publications (2)

Publication Number Publication Date
DE3788563D1 DE3788563D1 (de) 1994-02-03
DE3788563T2 true DE3788563T2 (de) 1994-05-11

Family

ID=25447692

Family Applications (1)

Application Number Title Priority Date Filing Date
DE87309117T Expired - Fee Related DE3788563T2 (de) 1986-10-24 1987-10-15 Verfahren und Einrichtung um eine Datenbankadresse zu bestimmen.

Country Status (6)

Country Link
US (1) US4922417A (de)
EP (1) EP0268373B1 (de)
JP (1) JPS63113727A (de)
KR (1) KR880005522A (de)
CA (1) CA1287183C (de)
DE (1) DE3788563T2 (de)

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5058002A (en) * 1987-06-23 1991-10-15 Mitsubishi Denki Kabushiki Kaisha Page splitting method and apparatus for a database stored in a plurality of memory storage units
US5307494A (en) * 1987-08-05 1994-04-26 Fuji Xerox Co., Ltd. File name length augmentation method
US4961139A (en) * 1988-06-30 1990-10-02 Hewlett-Packard Company Data base management system for real-time applications
US5032987A (en) * 1988-08-04 1991-07-16 Digital Equipment Corporation System with a plurality of hash tables each using different adaptive hashing functions
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
JP2708625B2 (ja) * 1990-10-19 1998-02-04 富士通株式会社 均質ハッシング処理方式
EP0483424A1 (de) * 1990-10-30 1992-05-06 International Business Machines Corporation Verschlüsselungsverfahren in Datenverarbeitungsgeräten
DE69324204T2 (de) * 1992-10-22 1999-12-23 Cabletron Systems, Inc. Aufsuchen von Adressen bei Paketübertragung mittels Hashing und eines inhaltsadressierten Speichers
US5649109A (en) * 1992-10-22 1997-07-15 Digital Equipment Corporation Apparatus and method for maintaining forwarding information in a bridge or router using multiple free queues having associated free space sizes
US5418947A (en) * 1992-12-23 1995-05-23 At&T Corp. Locating information in an unsorted database utilizing a B-tree
US5542087A (en) * 1993-10-15 1996-07-30 Hewlett-Packard Company Linear hashing for distributed records
DE4421640C1 (de) * 1994-06-21 1995-08-03 Siemens Ag Hash-Adressierungs- und Speicherverfahren zum Ablegen und Wiedergewinnen von Daten in einem adressierbaren Speicher
JP3865775B2 (ja) 1995-04-11 2007-01-10 キネテック インコーポレイテッド データ処理システムにおけるデータの識別
US5897662A (en) * 1995-08-18 1999-04-27 International Business Machines Corporation Pseudo-random address generation mechanism that reduces address translation time
US8296396B2 (en) 1998-02-10 2012-10-23 Level 3 Communications, Llc Delivering resources to clients in a distributed computing environment with rendezvous based on load balancing and network conditions
US7054935B2 (en) * 1998-02-10 2006-05-30 Savvis Communications Corporation Internet content delivery network
US6185598B1 (en) * 1998-02-10 2001-02-06 Digital Island, Inc. Optimized network resource location
US6430618B1 (en) 1998-03-13 2002-08-06 Massachusetts Institute Of Technology Method and apparatus for distributing requests among a plurality of resources
US6553420B1 (en) * 1998-03-13 2003-04-22 Massachusetts Institute Of Technology Method and apparatus for distributing requests among a plurality of resources
US6108703A (en) * 1998-07-14 2000-08-22 Massachusetts Institute Of Technology Global hosting system
US6167400A (en) * 1998-07-31 2000-12-26 Neo-Core Method of performing a sliding window search
US6154747A (en) * 1998-08-26 2000-11-28 Hunt; Rolf G. Hash table implementation of an object repository
GB9819183D0 (en) * 1998-09-04 1998-10-28 Int Computers Ltd Multiple string search method
GB9909539D0 (en) * 1999-04-27 1999-06-23 Ncipher Corp Limited Data storage and retrieval
US6275470B1 (en) 1999-06-18 2001-08-14 Digital Island, Inc. On-demand overlay routing for computer-based communication networks
US8543901B1 (en) 1999-11-01 2013-09-24 Level 3 Communications, Llc Verification of content stored in a network
US7860964B2 (en) 2001-09-28 2010-12-28 Level 3 Communications, Llc Policy-based content delivery network selection
WO2003027906A2 (en) 2001-09-28 2003-04-03 Savvis Communications Corporation System and method for policy dependent name to address resolutioin.
US7373644B2 (en) 2001-10-02 2008-05-13 Level 3 Communications, Llc Automated server replication
US20030079027A1 (en) 2001-10-18 2003-04-24 Michael Slocombe Content request routing and load balancing for content distribution networks
US9167036B2 (en) 2002-02-14 2015-10-20 Level 3 Communications, Llc Managed object replication and delivery
US7222129B2 (en) * 2002-03-29 2007-05-22 Canon Kabushiki Kaisha Database retrieval apparatus, retrieval method, storage medium, and program
CN100465977C (zh) * 2003-03-20 2009-03-04 株式会社日本医疗数据中心 信息管理系统
US20070038863A1 (en) * 2003-10-20 2007-02-15 Nhan Nguyen System and Method for Decoupling Identification from Biometric Information in Biometric Access Systems
DE102005010690B4 (de) * 2005-03-09 2007-04-12 Knorr-Bremse Systeme für Schienenfahrzeuge GmbH Öleingespritzter Verdichter mit Temperaturschalter
WO2007008789A2 (en) * 2005-07-08 2007-01-18 Solidus Networks, Inc. D/B/A Pay By Touch System and method for decoupling identification from biometric information in biometric access systems
US8185576B2 (en) * 2006-03-14 2012-05-22 Altnet, Inc. Filter for a distributed network
CN101140592A (zh) * 2007-09-30 2008-03-12 华为技术有限公司 关键字存储、查找方法和设备
US10924573B2 (en) 2008-04-04 2021-02-16 Level 3 Communications, Llc Handling long-tail content in a content delivery network (CDN)
EP2274684A4 (de) 2008-04-04 2012-12-05 Level 3 Communications Llc Umgang mit long-tail-inhalt in einem inhaltsablieferungsnetzwerk (cdn)
US9762692B2 (en) 2008-04-04 2017-09-12 Level 3 Communications, Llc Handling long-tail content in a content delivery network (CDN)
US9436558B1 (en) 2010-12-21 2016-09-06 Acronis International Gmbh System and method for fast backup and restoring using sorted hashes
US8880871B2 (en) * 2012-01-03 2014-11-04 Broadcom Corporation Hash table organization

Family Cites Families (20)

* 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
FR130806A (de) * 1973-11-21
FR2253425A5 (de) * 1973-11-30 1975-06-27 Honeywell Bull Soc Ind
US4173783A (en) * 1975-06-30 1979-11-06 Honeywell Information Systems, Inc. Method of accessing paged memory by an input-output unit
JPS533029A (en) * 1976-06-30 1978-01-12 Toshiba Corp Electronic computer
US4155119A (en) * 1977-09-21 1979-05-15 Sperry Rand Corporation Method for providing virtual addressing for externally specified addressed input/output operations
US4170039A (en) * 1978-07-17 1979-10-02 International Business Machines Corporation Virtual address translation speed up technique
US4277826A (en) * 1978-10-23 1981-07-07 Collins Robert W Synchronizing mechanism for page replacement control
US4215402A (en) * 1978-10-23 1980-07-29 International Business Machines Corporation Hash index table hash generator apparatus
US4319336A (en) * 1979-02-02 1982-03-09 International Business Machines Corporation Transaction execution system with improved key function versatility
US4290105A (en) * 1979-04-02 1981-09-15 American Newspaper Publishers Association Method and apparatus for testing membership in a set through hash coding with allowable errors
US4418275A (en) * 1979-12-07 1983-11-29 Ncr Corporation Data hashing method and apparatus
JPS5734251A (en) * 1980-08-07 1982-02-24 Toshiba Corp Address conversion and generating system
US4450522A (en) * 1981-09-11 1984-05-22 Data General Corporation Apparatus for deriving addresses of data using displacements from base addresses which change only on call and return
US4472774A (en) * 1982-09-27 1984-09-18 Data General Corp. Encachement apparatus
US4471431A (en) * 1982-09-27 1984-09-11 Data General Corporation Encachement apparatus
US4591972A (en) * 1982-11-15 1986-05-27 Data General Corp. Data processing system with unique microcode control
US4602328A (en) * 1982-12-17 1986-07-22 L'etat Francais Represente Par Le Ministre Des P.T.T. (Centre National D'etudes Des Telecommunications) Management system for the memory of a processor or microprocessor
US4564944A (en) * 1983-12-30 1986-01-14 International Business Machines Corporation Error correcting scheme
US4780816A (en) * 1986-05-16 1988-10-25 The United States Of America As Represented By The Secretary Of The Army Key-to-address transformations

Also Published As

Publication number Publication date
DE3788563D1 (de) 1994-02-03
KR880005522A (ko) 1988-06-29
EP0268373B1 (de) 1993-12-22
EP0268373A2 (de) 1988-05-25
US4922417A (en) 1990-05-01
EP0268373A3 (de) 1991-09-11
JPS63113727A (ja) 1988-05-18
CA1287183C (en) 1991-07-30

Similar Documents

Publication Publication Date Title
DE3788563T2 (de) Verfahren und Einrichtung um eine Datenbankadresse zu bestimmen.
DE3750492T2 (de) Datenbanksystem für Parallelprozessor.
DE69132356T2 (de) Verfahren und Gerät zur Zeigerkompression in strukturierten Datenbanken
DE60112130T2 (de) Vorrichtung zur datenverschlüsselung unter verwendung einer schlüsselmatrix
EP0010195B1 (de) Vorrichtung zur Adressumwandlung in einer Datenverarbeitungsanlage
DE69131941T2 (de) System und verfahren für informationsauffindung
DE3545125C2 (de)
DE69400207T2 (de) Sprachabhängiges textvergleichssystem
DE69229521T2 (de) Datenbankauffindungssystem
DE69427625T2 (de) Adressübersetzungsmechanismus für Rechnersystem mit virtuellen Speicher, der eine Vielzahl von Seitengrössen unterstützt
DE3751421T2 (de) Verfahren und Vorrichtung zur Textkomprimierung und -expandierung.
DE68907812T2 (de) Verfahren und Vorrichtung zur Kodierung, Dekodierung und Übertragung von Daten in komprimierter Form.
DE69534292T2 (de) Verfahren und System zur Dateifernübertragung
DE2905328A1 (de) Verfahren und vorrichtung zur assoziativen informationswiedergewinnung
DE69026764T2 (de) Verfahren zur Datenübertragung mit hoher Geschwindigkeit
DE69123660T2 (de) Datenkompressionsmethode und Gerät
DE3788782T2 (de) Verfahren zur Herstellung einer Meldungsdatei in einem Computer.
DE2547035A1 (de) Datenverarbeitungseinrichtung
DE2809623A1 (de) Verfahren und vorrichtung zur assoziativen informationswiedergewinnung
DE2723523A1 (de) Kompression und dekompression von gespeicherten digitaldaten
DE3485824T2 (de) Verfahren zur datenkompression.
DE3327379A1 (de) Einrichtung und verfahren zum umordnen von datensaetzen
DE1449544A1 (de) Datenverarbeitende Maschine mit ueberlappend abrufbarem Speicherwerk
DE2000340A1 (de) Verfahren und Vorrichtung zum Suchen verdichteter gespeicherter Informationen
DE2900586C2 (de) Anordnung zum Decodieren von Codewörtern variabler Länge

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee