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
Links
- 238000000034 method Methods 0.000 title claims description 20
- 230000006870 function Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 4
- 238000013475 authorization Methods 0.000 description 3
- 238000000790 scattering method Methods 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000012856 packing Methods 0.000 description 2
- 238000005070 sampling Methods 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000009827 uniform distribution Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9014—Indexing; Data structures therefor; Storage structures hash tables
-
- 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
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.
- 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.
- 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.
- 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.
- 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.
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)
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)
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 |
-
1986
- 1986-10-24 US US06/922,875 patent/US4922417A/en not_active Expired - Lifetime
-
1987
- 1987-09-30 CA CA000548270A patent/CA1287183C/en not_active Expired - Fee Related
- 1987-10-15 EP EP87309117A patent/EP0268373B1/de not_active Expired - Lifetime
- 1987-10-15 DE DE87309117T patent/DE3788563T2/de not_active Expired - Fee Related
- 1987-10-21 KR KR870011678A patent/KR880005522A/ko not_active Application Discontinuation
- 1987-10-23 JP JP62266672A patent/JPS63113727A/ja active Pending
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 |