US20020035660A1 - Functional memory based on a trie structure - Google Patents

Functional memory based on a trie structure Download PDF

Info

Publication number
US20020035660A1
US20020035660A1 US09/994,034 US99403401A US2002035660A1 US 20020035660 A1 US20020035660 A1 US 20020035660A1 US 99403401 A US99403401 A US 99403401A US 2002035660 A1 US2002035660 A1 US 2002035660A1
Authority
US
United States
Prior art keywords
node
nodes
compressed
width
pointers
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.)
Granted
Application number
US09/994,034
Other versions
US6691131B2 (en
Inventor
Matti Tikkanen
Jukka-Pekka Ilvonen
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.)
Nokia Oyj
Original Assignee
Nokia Oyj
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 Nokia Oyj filed Critical Nokia Oyj
Assigned to NOKIA CORPORATION reassignment NOKIA CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: IIVONEN, JUKKA-PEKKA, TIKKANEN, MATTI
Publication of US20020035660A1 publication Critical patent/US20020035660A1/en
Application granted granted Critical
Publication of US6691131B2 publication Critical patent/US6691131B2/en
Adjusted expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • 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/9027Trees
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • Y10S707/99934Query formulation, input preparation, or translation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99943Generating database or data structure, e.g. via user interface

Definitions

  • the present invention generally relates to implementation of a memory. More specifically, the invention is intended to be used in connection with all such memories that are based on a functional digital trie structure.
  • the solution is, however, mainly intended for central memory databases.
  • a functional structure denotes a memory in which updates, such as additions, are made in such a way that the path from the root to the point of addition is first copied, and the addition is made to the copied data (the addition is not made directly to the existing data).
  • Such an updating procedure is also called by the term “copy-on-write”.
  • digital trie The prior art unidimensional directory structure termed digital trie (the word “trie” is derived from the English word “retrieval”) is the underlying basis of the principle of the present invention.
  • Digital trie structures can be implemented in two types: bucket tries, and tries having no buckets.
  • a bucket digital trie structure is a tree-shaped structure composed of two types of nodes: buckets and trie nodes.
  • a bucket is a data structure that can accommodate a number of data units or a number of pointers to data units or a number of search key/data unit pairs or a number of search key/pointer pairs. A maximum size greater than one has been defined for said number. However, a bucket can contain a smaller number than said maximum number of data units, pointers, or key/pointer pairs, in which case the bucket is not full.
  • a trie node is an array guiding the retrieval, having a size of two by the power of k (2 k ) elements. If an element in a trie node is in use, it refers either to a trie node at the next level in the directory tree or to a bucket. In other cases, the element is free (empty).
  • Search in the database proceeds by examining the search key (which in the case of a subscriber database in a mobile telephone network or a telephone exchange, for instance, is typically the binary numeral corresponding to the telephone number of the subscriber) k bits at a time.
  • the bits to be searched are selected in such a way that at the root level of the structure (in the first trie node), k leftmost bits are searched; at the second level of the structure, k bits next to the leftmost bits are searched, etc.
  • the bits to be searched are interpreted as an unsigned binary integer that is employed directly to index the element table contained in the trie node, the index indicating a given element in the table. If the element indicated by the index is free, the search will terminate as unsuccessful.
  • the routine branches off in the trie node either to a trie node at the next level or to a bucket. If the element refers to a bucket containing a key, the key stored therein is compared with the search key. The entire search key is thus compared only after the search has encountered a bucket. Where the keys are equal, the search is successful, and the desired data unit is obtained at the storage address indicated by the pointer of the bucket. Where the keys differ, the search terminates as unsuccessful.
  • a bucketless trie structure has no buckets, but a leaf node containing only one element that can be a data unit, a pointer to a data unit, a search key/data unit pair or a search key/pointer pair corresponds to a bucket.
  • the nodes above the leaf nodes in the bucketless trie structure are called internal nodes; these correspond to trie nodes in a bucket structure (i.e., they comprise a similar table as trie nodes).
  • the nodes are thus either internal nodes or leaf nodes.
  • the need for reorganizing the directory structure can be postponed, as a large number of pointers, data units, search key/data unit pairs or search key/pointer pairs can be accommodated in the buckets until a time when such a need arises.
  • Leaves are denoted with references A, B, C, D . . . H . . . M, N, O and P. Thus a leaf is a node that does not point to a lower level in the tree.
  • Internal nodes are denoted with references IN 1 . . . IN 5 and elements in the internal node with reference NE in FIG. 1.
  • a pointer is stored in each leaf to that storage location in the database SD at which the actual data, e.g. the telephone number of the pertinent subscriber and other information relating to that subscriber, is to be found.
  • the actual subscriber data may be stored in the database for instance as a sequential file of the type shown in the figure.
  • the search is performed on the basis of the search key of record H, for example, by first extracting from the search key the two leftmost bits ( 01 ) and interpreting them, which delivers the second element of node IN 1 , containing a pointer to node IN 3 at the next level. At this level, the two next bits ( 11 ) are extracted from the search key, thus yielding the fourth element of that node, pointing to record H.
  • a leaf may contain (besides a search key) an actual data file (also called by the more generic term data unit).
  • an actual data file also called by the more generic term data unit.
  • the data relating to subscriber A may be located in leaf A, the data relating to subscriber B in leaf B, etc.
  • the present invention mainly relates to bucketless trie structures, since the solution in accordance with the invention affords the same advantages as a bucket structure, and thus the invention yields greater benefit in bucketless structures.
  • the search key may also be multidimensional.
  • the search key may comprise a number of attributes (for example the family name and one or more forenames of a subscriber).
  • attributes for example the family name and one or more forenames of a subscriber.
  • Such a multidimensional trie structure is disclosed in international application No. PCT/FI95/00319 (published under number WO 95/34155).
  • address computation is performed in such a way that a given predetermined number of bits at a time is selected from each dimension independently of the other dimensions.
  • a fixed limit independent of the other dimensions is set for each dimension in any individual node of the trie structure, by predetermining the number of search key bits to be searched in each dimension.
  • the memory circuit requirement can be curbed when the distribution of the values of the search keys is known in advance, in which case the structure can be implemented in a static form.
  • the size of the nodes must vary dynamically as the key distribution changes.
  • the node size may be increased to make the structure flatter (a flatter structure entails faster retrievals).
  • the node size can be maintained small, which will enable locally a more even key distribution and thereby smaller storage space occupancy.
  • Dynamic changes of node size require the address computation to be implemented in such a way that in each node of the tree-shaped hierarchy constituted by the digital trie structure, a node-specific number of bits is selected from the bit string constituted by the search keys used. Dynamic reorganizing of the nodes naturally requires part of the processing capacity.
  • the efficiency and performance of the memory are thus influenced, among other things, by the storage space required by the trie structure and the depth of the trie structure.
  • the performance of the memory is also influenced by how many words to be copied such a path contains.
  • U.S. Pat. No. 5,276,868 discloses a compression method for a trie node. This system supports only two node sizes: quads and nodes of size 16. In the method, some of the nil pointers are removed from the nodes in such a way that nodes having less than five non-nil pointers are converted to compressed quads, whereas the remaining nodes are maintained uncompressed. The structure thus includes both compressed nodes and non-compressed nodes of size 16. Since nil pointers must still be stored in the structure, the structure does not provide a very good result in view of storage space requirement and copying costs. Also, since only two node sizes are possible, the structure is not well suited to functional memories or other memories having efficient memory management that is capable of allocating memory for use a single word at a time.
  • the invention makes use of the prior art width compression, to which reference is made e.g. in the above U.S. Patent.
  • the node size for the trie tree is already initially selected to be as large as possible: the logical size of the nodes used in the structure is preferably 16, but can in principle be even greater.
  • increasing the width-compressed node is permitted up to a maximum limit, which is smaller than the maximum size of the node.
  • the node is split into a cluster of nodes as soon as it grows to be in excess of this threshold value. In the case of a width-compressed node having 16 elements, for example, it is preferred to employ 13 child nodes as the threshold value. If the number of child nodes exceeds 13, the parent node is disassembled into a cluster of compressed quad nodes.
  • the idea in accordance with the invention is based on the insight that as the size of a width-compressed node increases, the copying costs increase sharply at some stage, since the copying carried out in connection with updates always takes place from the root of the tree up to the point of update and since the nodes in the upper part of the tree, which are copied at every copying round, are filled first and are normally fuller than the lower nodes.
  • increasing the fill rate of a width-compressed node is of no avail when a certain stage has been reached, but the increase in copying costs totally eliminates the advantage to be gained with width compression.
  • the width-compressed node is converted back to a cluster of nodes at two different hierarchy levels.
  • the idea is also to avoid such a sharp increase in copying costs, so that the cluster of nodes to be formed is as advantageous as possible in view of the requirements set out above.
  • the threshold value 13 stated above is advantageous for nodes of size 16 in the sense that the copying costs cannot increase sharply yet, and on the other hand, when the size is greater than 13, one can be certain that when a cluster of quad nodes is formed, the parent node will contain no nil pointers. Hence, the search operation can be accelerated, since the number of pointers in said node need not be examined in connection with the search.
  • the memory consumption of the functional structure can be diminished by means of width compression without the number of words to be copied in connection with updates substantially increasing and thereby diminishing the advantage to be gained by width compression.
  • FIG. 1 illustrates the use of a unidimensional digital trie structure in the maintenance of subscriber data in a telephone exchange
  • FIG. 2 shows a node of size 16, having four non-nil pointers
  • FIG. 3 shows the node of FIG. 2 width-compressed
  • FIG. 4 shows a situation in which the size of the width-compressed node has become too large on account of an addition made to the node
  • FIG. 5 shows a quad node cluster disassembled from the node of FIG. 4,
  • FIG. 6 illustrates the increase of copying costs in a functional trie structure as a function of the upper limit of non-nil pointers in the node
  • FIG. 7 illustrates the storage space requirement of a trie tree as a function of the upper limit of non-nil pointers in the node
  • FIGS. 8 and 9 illustrate the change of a quad cluster back to a width-compressed node of logical size 16,
  • FIG. 10 illustrates the structure of a width-compressed node
  • FIG. 11 shows a memory arrangement in accordance with the invention on block diagram level.
  • width compression When width compression is used on the nodes of a functional trie structure, it can be effectively utilized by selecting a large node size for the structure.
  • the starting-point is a node size distinctly larger than quads, preferably nodes of (logical) size 16.
  • FIG. 2 illustrates such a node N 20 , which in this exemplary case has four non-nil pointers pointing downward in the tree.
  • Prior art width compression is carried out on the nodes of the structure by storing only those pointers that differ from nil.
  • a bit pattern or chart BP 1 is stored in connection with the node, on the basis of which it can be determined whether the pointer corresponding to the logical index of the element table of the node is a nil pointer or not, and if not, where the pointer corresponding to said logical index is physically located in the node.
  • the standard-length element table (16 elements) of the node is represented by means of the bit pattern as a table of physical storage locations the length of which varies according to how many nil pointers the node contains in each case. It is to be noted, therefore, that in connection with width compression the logical size of the node (i.e.
  • the node contains only four physical elements (pointers A . . . D), and in addition a bit pattern BP 1 is stored in the node, indicating the physical location of the pointer therein corresponding to the element table index formed from the search key.
  • the bit pattern has one bit for each element (logical index) of the element table, and each bit indicates whether the corresponding element contains a non-nil pointer or a nil pointer.
  • one denotes a non-nil pointer and zero denotes a nil pointer. Since the pointers are stored in the compressed node preserving the order (and no space is reserved for nil pointers), it is known for the compressed node of FIG. 3 that a nil pointer corresponds to element table index 0 , a non-nil pointer corresponds to element table index 1 , its physical index being zero, nil pointers correspond to element table indices 2 . . .
  • non-nil pointers correspond to element table indices 7 and 8 , their physical indices being one and two, nil pointers correspond to element table indices 9 . . . 12 , a non-nil pointer corresponds to element table index 13 , its physical index being three, and nil pointers correspond to element table indices 14 and 15 .
  • the pointer corresponding to the logical index formed from the search key bits is found in the node.
  • Address computation for the compressed node is performed in such a way that a (logical) element table index is first formed from the bits extracted from the search key in the normal way. Thereafter, the bit corresponding to this index is read from the bit pattern. If the bit indicates that a nil pointer is concerned, the search is terminated as unsuccessful. If the bit indicates that a non-nil pointer is concerned, the physical location (physical index) of the pointer corresponding to said element table index is determined by means of the bit pattern. When a bit pattern of the kind shown in FIG. 3 is employed, having one bit for each index of the element table, the physical index is directly obtained by counting the number of 1-bits starting from the beginning of the bit pattern up to the bit corresponding to the element table index.
  • Another alternative is to continue the search without checking whether the bit in the bit pattern corresponding to the logical index is zero or not, that is, the physical index can be retrieved without performing said check.
  • the search is continued up to a leaf, in which a key comparison is performed. Failure of the search is detected on the basis of said comparison in the leaf.
  • bit pattern can deviate from the number of logical indices, and the bit pattern can employ various coding methods by means of which the physical storage location corresponding to the logical index is found. Yet the above-stated solution enables a short bit pattern and a simple coding mechanism.
  • the solution in accordance with the invention is based on the insight that when the size of a width-compressed node increases, the copying costs will at some stage increase so sharply that increasing the fill rate of the node is of no avail, but the increase in copying costs totally eliminates the advantage to be gained with increased width compression.
  • the compressed nodes increase in size.
  • the width-compressed nodes are not permitted to be filled, but an upper limit is set on their size (number of physical elements, i.e. non-nil pointers), whereafter they are disassembled into node clusters. This limit is preferably 13 with a node of size 16, since additional advantages are gained with the use of this limit.
  • the procedure in accordance with the invention will be described in the following with reference to the example in accordance with FIGS. 4 and 5.
  • the size of the node increases.
  • the node contains 13 pointers, which is the maximum number of child nodes for a width-compressed node in the structure in accordance with the invention (when nodes of size 16 are used).
  • N fourteenth pointer
  • the width-compressed node is disassembled into a cluster of compressed quad nodes in accordance with FIG. 5, having a parent node N 50 and four child nodes (N 51 . .
  • each of the quad nodes in the cluster is similarly width-compressed as the original node of size 16, and thus each quad node has a bit pattern of four bits, each bit indicating whether the corresponding element has a nil pointer or a non-nil pointer.
  • the trie structure in accordance with the invention is preferably one having width-compressed nodes only.
  • the nodes are otherwise of logical size 16, but each node in which the maximum fill rate has been exceeded has been converted to a cluster of width-compressed quads.
  • FIG. 6 depicts the copying cost (number of words to be copied) as a function of the maximum number of child nodes of the width-compressed node.
  • the maximum copying cost has been shown by a continuous line and the average copying cost by a broken line.
  • the copying costs will increase sharply if filled nodes are permitted in the structure.
  • each node must contain only an element table (pointers) and a bit pattern.
  • FIG. 10 illustrates the structure of a width-compressed node.
  • the compressed node thus comprises three parts: a type information field indicating the type of the node (reference 111 ), field 112 containing a bit pattern, and an element table (reference 113 ) in which the number of elements (pointers) is in accordance with the above.
  • the type information is used to indicate whether the node is a leaf node.
  • the bit pattern and the node type information can in practice be accommodated in the same word, and thus the bit pattern requires no extra space.
  • the principle described above mainly pertains to a bucketless trie structure. This is due to the fact that the solution in accordance with the invention will as such afford the same advantages as buckets do (compact structure at the lower end of the tree as well), and thus it is preferable to use similar nodes in the entire tree.
  • the leaf nodes typically contain a pointer to a data unit (or a data unit). However, the use of buckets is not ruled out.
  • Path compression means that paths containing successive single-child nodes are compressed in depth. Since path compression can be implemented in known manner, it will not be described more closely in this context.
  • PCT/FI98/00191 One kind of path compression is disclosed in the Applicants' earlier patent application PCT/FI98/00191.
  • a unidimensional directory structure can be made multidimensional (generally n-dimensional) in the known manner by employing bit interleaving.
  • Bit interleaving has been disclosed for example in the above international application PCT/FI98/00191, wherefrom the interested reader can find background information relating to the invention, if so desired.
  • the starting-point is level compression that is cancelled when the fill rate of the level-compressed node reaches a given limit (that is, when the copying costs become inordinate).
  • the starting-point is the smallest possible node size and the node size is increased (i.e., level compression is performed) when there are a sufficient number of internal nodes among the child nodes for the node.
  • FIG. 11 shows a memory in accordance with the invention on block diagram level.
  • Each dimension has a dedicated input register, and hence there is a total of n input registers.
  • the search key of each dimension is stored in these input registers, denoted by references R 1 . . . R n , each key in a register of its own.
  • the input registers are connected to a register TR in which the above-described search word is formed in accordance with the bit interleaving method employed.
  • the register TR is connected via adder S to the address input of memory MEM.
  • the output of the memory in turn is connected to address register AR the output of which in turn is connected to adder S. Initially the bits selected from each register are read into the common register TR in the correct order.
  • the initial address of the first internal or trie node is first stored in the address register AR, and the address obtained as an offset address from register TR is added to the initial address in adder S.
  • the resulting address is supplied to the address input of the memory MEM, and the data output of the memory provides the initial address of the next node, the address being written into the address register AR over the previous address stored therein.
  • the next selected bits are again loaded from the input registers into the common register TR in the correct order, and the address (index) obtained thereby is added to the initial address of the relevant table (i.e., trie node), obtained from the address register AR.
  • This address is again supplied to the address input of the memory MEM, the data output of the memory thus providing the initial address of the next node.
  • the above-described procedure is repeated until the desired point has been accessed and recordal can be performed or the desired record read.
  • Control logic CL reads the element table index from register TR and the corresponding bit from the bit pattern of the node. If said bit indicates that a non-nil pointer is concerned, the control logic determines the physical index on the basis of the bit pattern and stores it in register TR instead of the logical index. In such a case, the physical index is added (instead of the logical index) in adder S with the initial address of the node that is obtained from register AR. The control logic also attends to the compression of the nodes and to the fact that a correct number of bits (2 or 4) is extracted from the registers in each node.
  • the rapidity of the address computation can be influenced by the type of hardware configuration chosen. Since progress is by way of the above-stated bit manipulations, address computation can be accelerated by shifting from use of one processor to a multiprocessor environment in which parallel processing is carried out.
  • An alternative implementation to the multiprocessor environment is an ASIC circuit.
  • the structure in accordance with the invention is preferably implemented in such a manner that also the nodes (which are preferably leaves) at the lowermost level are compressed similarly as the other nodes (internal nodes). If a pointer is stored in a leaf, the structure of the leaves is the same as in the internal nodes. If data units are stored in the leaves, these can be of fixed length in order that also the leaves can be compressed similarly as the internal nodes. However, it is possible that the nodes at the lowermost level are not similarly width-compressed. In that case, however, some of the advantages of the invention are lost, since in that case the search is slower at the leaves,

Abstract

The invention relates to a method for implementing a functional memory and to a memory arrangement. The memory is implemented as a directory structure comprising a tree-shaped hierarchy having nodes at several different hierarchy levels. In the directory structure, pointers are first added to nodes whose table contains a given first number of elements and which are width-compressed nodes. To maximize the performance of the functional trie structure, addition of a pointer to an individual width-compressed node is permitted until the number of pointers in the node corresponds to a given predetermined threshold value that is smaller than said first number. The width-compressed node is converted to a cluster of nodes made up by a parent node (N50) and separate child nodes (N51 . . . N54) as soon as the number of pointers to be accommodated in the width-compressed node exceeds said threshold value.

Description

    FIELD OF THE INVENTION
  • The present invention generally relates to implementation of a memory. More specifically, the invention is intended to be used in connection with all such memories that are based on a functional digital trie structure. The solution is, however, mainly intended for central memory databases. A functional structure denotes a memory in which updates, such as additions, are made in such a way that the path from the root to the point of addition is first copied, and the addition is made to the copied data (the addition is not made directly to the existing data). Such an updating procedure is also called by the term “copy-on-write”. [0001]
  • BACKGROUND OF THE INVENTION
  • The prior art unidimensional directory structure termed digital trie (the word “trie” is derived from the English word “retrieval”) is the underlying basis of the principle of the present invention. Digital trie structures can be implemented in two types: bucket tries, and tries having no buckets. [0002]
  • A bucket digital trie structure is a tree-shaped structure composed of two types of nodes: buckets and trie nodes. A bucket is a data structure that can accommodate a number of data units or a number of pointers to data units or a number of search key/data unit pairs or a number of search key/pointer pairs. A maximum size greater than one has been defined for said number. However, a bucket can contain a smaller number than said maximum number of data units, pointers, or key/pointer pairs, in which case the bucket is not full. A trie node, on the other hand, is an array guiding the retrieval, having a size of two by the power of k (2[0003] k) elements. If an element in a trie node is in use, it refers either to a trie node at the next level in the directory tree or to a bucket. In other cases, the element is free (empty).
  • Search in the database proceeds by examining the search key (which in the case of a subscriber database in a mobile telephone network or a telephone exchange, for instance, is typically the binary numeral corresponding to the telephone number of the subscriber) k bits at a time. The bits to be searched are selected in such a way that at the root level of the structure (in the first trie node), k leftmost bits are searched; at the second level of the structure, k bits next to the leftmost bits are searched, etc. The bits to be searched are interpreted as an unsigned binary integer that is employed directly to index the element table contained in the trie node, the index indicating a given element in the table. If the element indicated by the index is free, the search will terminate as unsuccessful. If the element refers to a trie node at the next level, k next bits extracted from the search key are searched at that level in the manner described above. As a result of comparison, the routine branches off in the trie node either to a trie node at the next level or to a bucket. If the element refers to a bucket containing a key, the key stored therein is compared with the search key. The entire search key is thus compared only after the search has encountered a bucket. Where the keys are equal, the search is successful, and the desired data unit is obtained at the storage address indicated by the pointer of the bucket. Where the keys differ, the search terminates as unsuccessful. [0004]
  • A bucketless trie structure has no buckets, but a leaf node containing only one element that can be a data unit, a pointer to a data unit, a search key/data unit pair or a search key/pointer pair corresponds to a bucket. In the present context, the nodes above the leaf nodes in the bucketless trie structure are called internal nodes; these correspond to trie nodes in a bucket structure (i.e., they comprise a similar table as trie nodes). In a bucketless digital trie structure, the nodes are thus either internal nodes or leaf nodes. By means of buckets, the need for reorganizing the directory structure can be postponed, as a large number of pointers, data units, search key/data unit pairs or search key/pointer pairs can be accommodated in the buckets until a time when such a need arises. [0005]
  • FIG. 1 shows an example of a digital trie structure in which the key has a length of 4 bits and k=2, and thus each trie node has [0006] 2 2=4 elements, and two bits extracted from the key are searched at each level. Leaves are denoted with references A, B, C, D . . . H . . . M, N, O and P. Thus a leaf is a node that does not point to a lower level in the tree. Internal nodes are denoted with references IN1 . . . IN5 and elements in the internal node with reference NE in FIG. 1.
  • In the exemplary case of FIG. 1, the search keys for the leaves shown are as follows: A=0000, B=0001, C=0010, . . . , H=0111, . . . and P=1111. In this case, a pointer is stored in each leaf to that storage location in the database SD at which the actual data, e.g. the telephone number of the pertinent subscriber and other information relating to that subscriber, is to be found. The actual subscriber data may be stored in the database for instance as a sequential file of the type shown in the figure. The search is performed on the basis of the search key of record H, for example, by first extracting from the search key the two leftmost bits ([0007] 01) and interpreting them, which delivers the second element of node IN1, containing a pointer to node IN3 at the next level. At this level, the two next bits (11) are extracted from the search key, thus yielding the fourth element of that node, pointing to record H.
  • Instead of a pointer, a leaf may contain (besides a search key) an actual data file (also called by the more generic term data unit). Thus for example the data relating to subscriber A (FIG. 1) may be located in leaf A, the data relating to subscriber B in leaf B, etc. [0008]
  • The present invention mainly relates to bucketless trie structures, since the solution in accordance with the invention affords the same advantages as a bucket structure, and thus the invention yields greater benefit in bucketless structures. These facts will be described in detail hereinafter. [0009]
  • The search key may also be multidimensional. In other words, the search key may comprise a number of attributes (for example the family name and one or more forenames of a subscriber). Such a multidimensional trie structure is disclosed in international application No. PCT/FI95/00319 (published under number WO 95/34155). In said structure, address computation is performed in such a way that a given predetermined number of bits at a time is selected from each dimension independently of the other dimensions. Hence, a fixed limit independent of the other dimensions is set for each dimension in any individual node of the trie structure, by predetermining the number of search key bits to be searched in each dimension. With such a structure, the memory circuit requirement can be curbed when the distribution of the values of the search keys is known in advance, in which case the structure can be implemented in a static form. [0010]
  • If the possibility of reorganizing the structure in accordance with the current key distribution to be optimal in terms of efficiency and storage space occupancy is desired, the size of the nodes must vary dynamically as the key distribution changes. When the key distribution is even, the node size may be increased to make the structure flatter (a flatter structure entails faster retrievals). On the other hand, with uneven key distributions in connection with which storage space occupancy will present a problem in memory structures employing dynamic node size, the node size can be maintained small, which will enable locally a more even key distribution and thereby smaller storage space occupancy. Dynamic changes of node size require the address computation to be implemented in such a way that in each node of the tree-shaped hierarchy constituted by the digital trie structure, a node-specific number of bits is selected from the bit string constituted by the search keys used. Dynamic reorganizing of the nodes naturally requires part of the processing capacity. [0011]
  • The choice between a fixed node size and a dynamically changing node size is dependent for example on what type of application the memory is intended for, e.g. what the number of database searches, additions and deletions is and what the proportions of said operations are. [0012]
  • The efficiency and performance of the memory are thus influenced, among other things, by the storage space required by the trie structure and the depth of the trie structure. In a functional digital trie structure, in which the entire search path from the root to the point of updating has to be copied in connection with updates, the performance of the memory is also influenced by how many words to be copied such a path contains. Thus, if compression is performed in the memory, this should be done in such a way that the quantity of data to be copied does not increase as a result of compression to such an extent as to impair the performance of the memory. [0013]
  • U.S. Pat. No. 5,276,868 discloses a compression method for a trie node. This system supports only two node sizes: quads and nodes of [0014] size 16. In the method, some of the nil pointers are removed from the nodes in such a way that nodes having less than five non-nil pointers are converted to compressed quads, whereas the remaining nodes are maintained uncompressed. The structure thus includes both compressed nodes and non-compressed nodes of size 16. Since nil pointers must still be stored in the structure, the structure does not provide a very good result in view of storage space requirement and copying costs. Also, since only two node sizes are possible, the structure is not well suited to functional memories or other memories having efficient memory management that is capable of allocating memory for use a single word at a time.
  • Hence, the problem with a functional trie structure is how compression should be carried out in the structure in order for the memory performance to be as good as possible, observing all the above factors. [0015]
  • SUMMARY OF THE INVENTION
  • It is an object of the present invention to provide a solution to the problem described above. This object is achieved with the method defined in the independent claims. [0016]
  • The invention makes use of the prior art width compression, to which reference is made e.g. in the above U.S. Patent. For this reason, the node size for the trie tree is already initially selected to be as large as possible: the logical size of the nodes used in the structure is preferably 16, but can in principle be even greater. In accordance with the invention, increasing the width-compressed node is permitted up to a maximum limit, which is smaller than the maximum size of the node. The node is split into a cluster of nodes as soon as it grows to be in excess of this threshold value. In the case of a width-compressed node having 16 elements, for example, it is preferred to employ 13 child nodes as the threshold value. If the number of child nodes exceeds 13, the parent node is disassembled into a cluster of compressed quad nodes. [0017]
  • The idea in accordance with the invention is based on the insight that as the size of a width-compressed node increases, the copying costs increase sharply at some stage, since the copying carried out in connection with updates always takes place from the root of the tree up to the point of update and since the nodes in the upper part of the tree, which are copied at every copying round, are filled first and are normally fuller than the lower nodes. Hence, increasing the fill rate of a width-compressed node is of no avail when a certain stage has been reached, but the increase in copying costs totally eliminates the advantage to be gained with width compression. In accordance with the invention, at this stage at the latest the width-compressed node is converted back to a cluster of nodes at two different hierarchy levels. [0018]
  • The idea is also to avoid such a sharp increase in copying costs, so that the cluster of nodes to be formed is as advantageous as possible in view of the requirements set out above. For example, the threshold value [0019] 13 stated above is advantageous for nodes of size 16 in the sense that the copying costs cannot increase sharply yet, and on the other hand, when the size is greater than 13, one can be certain that when a cluster of quad nodes is formed, the parent node will contain no nil pointers. Hence, the search operation can be accelerated, since the number of pointers in said node need not be examined in connection with the search. Furthermore, one can be certain that in the node cluster to be formed, none of the child nodes in the cluster will be path-compressed (it is preferable to use path compression in the structure), since in this case the parent node is full and each child node has at least two child nodes (the path compression to be carried out in the quad cluster will retard the calculation).
  • In order for the memory performance to remain optimum the entire time, it is preferable to reassemble the cluster of nodes into a width-compressed node when the number of the grandchild nodes of the parent node of the cluster falls to said threshold value or below it. [0020]
  • When the solution in accordance with the invention is used, the memory consumption of the functional structure can be diminished by means of width compression without the number of words to be copied in connection with updates substantially increasing and thereby diminishing the advantage to be gained by width compression.[0021]
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • In the following the invention and its preferred embodiments will be described in closer detail with reference to examples in accordance with FIGS. [0022] 2-11 in the accompanying drawings, in which
  • FIG. 1 illustrates the use of a unidimensional digital trie structure in the maintenance of subscriber data in a telephone exchange, [0023]
  • FIG. 2 shows a node of [0024] size 16, having four non-nil pointers,
  • FIG. 3 shows the node of FIG. 2 width-compressed, [0025]
  • FIG. 4 shows a situation in which the size of the width-compressed node has become too large on account of an addition made to the node, [0026]
  • FIG. 5 shows a quad node cluster disassembled from the node of FIG. 4, [0027]
  • FIG. 6 illustrates the increase of copying costs in a functional trie structure as a function of the upper limit of non-nil pointers in the node, [0028]
  • FIG. 7 illustrates the storage space requirement of a trie tree as a function of the upper limit of non-nil pointers in the node, [0029]
  • FIGS. 8 and 9 illustrate the change of a quad cluster back to a width-compressed node of [0030] logical size 16,
  • FIG. 10 illustrates the structure of a width-compressed node, and [0031]
  • FIG. 11 shows a memory arrangement in accordance with the invention on block diagram level.[0032]
  • DETAILED DESCRIPTION OF THE INVENTION
  • When width compression is used on the nodes of a functional trie structure, it can be effectively utilized by selecting a large node size for the structure. Thus, in the structure in accordance with the invention the starting-point is a node size distinctly larger than quads, preferably nodes of (logical) [0033] size 16. FIG. 2 illustrates such a node N20, which in this exemplary case has four non-nil pointers pointing downward in the tree. Prior art width compression is carried out on the nodes of the structure by storing only those pointers that differ from nil. In addition to the non-nil pointers, a bit pattern or chart BP1 is stored in connection with the node, on the basis of which it can be determined whether the pointer corresponding to the logical index of the element table of the node is a nil pointer or not, and if not, where the pointer corresponding to said logical index is physically located in the node. When compression is used, the standard-length element table (16 elements) of the node is represented by means of the bit pattern as a table of physical storage locations the length of which varies according to how many nil pointers the node contains in each case. It is to be noted, therefore, that in connection with width compression the logical size of the node (i.e. the size of the element table) does not change, but the physical size of the node diminishes instead, since in a compressed node the nil pointers do not occupy any storage space. As a result, a width-compressed node N30 in accordance with FIG. 3, in which all non-nil pointers are in succession, is obtained from the node of FIG. 2. The node contains only four physical elements (pointers A . . . D), and in addition a bit pattern BP1 is stored in the node, indicating the physical location of the pointer therein corresponding to the element table index formed from the search key. In this exemplary case, the bit pattern has one bit for each element (logical index) of the element table, and each bit indicates whether the corresponding element contains a non-nil pointer or a nil pointer. In the exemplary case shown in the figure, one denotes a non-nil pointer and zero denotes a nil pointer. Since the pointers are stored in the compressed node preserving the order (and no space is reserved for nil pointers), it is known for the compressed node of FIG. 3 that a nil pointer corresponds to element table index 0, a non-nil pointer corresponds to element table index 1, its physical index being zero, nil pointers correspond to element table indices 2 . . . 6, non-nil pointers correspond to element table indices 7 and 8, their physical indices being one and two, nil pointers correspond to element table indices 9 . . . 12, a non-nil pointer corresponds to element table index 13, its physical index being three, and nil pointers correspond to element table indices 14 and 15. Thus, the pointer corresponding to the logical index formed from the search key bits is found in the node. Such a method of compression, in which the bit pattern of the compressed node has one bit for each element (logical index) of the element table, is known per se. Such a solution is referred to for example in the above U.S. Pat. No. 5,276,868.
  • Address computation for the compressed node is performed in such a way that a (logical) element table index is first formed from the bits extracted from the search key in the normal way. Thereafter, the bit corresponding to this index is read from the bit pattern. If the bit indicates that a nil pointer is concerned, the search is terminated as unsuccessful. If the bit indicates that a non-nil pointer is concerned, the physical location (physical index) of the pointer corresponding to said element table index is determined by means of the bit pattern. When a bit pattern of the kind shown in FIG. 3 is employed, having one bit for each index of the element table, the physical index is directly obtained by counting the number of 1-bits starting from the beginning of the bit pattern up to the bit corresponding to the element table index. [0034]
  • Another alternative is to continue the search without checking whether the bit in the bit pattern corresponding to the logical index is zero or not, that is, the physical index can be retrieved without performing said check. In this case, the search is continued up to a leaf, in which a key comparison is performed. Failure of the search is detected on the basis of said comparison in the leaf. [0035]
  • However, the number of bits used in the bit pattern can deviate from the number of logical indices, and the bit pattern can employ various coding methods by means of which the physical storage location corresponding to the logical index is found. Yet the above-stated solution enables a short bit pattern and a simple coding mechanism. [0036]
  • As was stated previously, the solution in accordance with the invention is based on the insight that when the size of a width-compressed node increases, the copying costs will at some stage increase so sharply that increasing the fill rate of the node is of no avail, but the increase in copying costs totally eliminates the advantage to be gained with increased width compression. When additions are made in the trie tree, the compressed nodes increase in size. In accordance with the invention, the width-compressed nodes are not permitted to be filled, but an upper limit is set on their size (number of physical elements, i.e. non-nil pointers), whereafter they are disassembled into node clusters. This limit is preferably 13 with a node of [0037] size 16, since additional advantages are gained with the use of this limit.
  • The procedure in accordance with the invention will be described in the following with reference to the example in accordance with FIGS. 4 and 5. When additions are made to the width-compressed node in accordance with FIG. 3, the size of the node increases. At some stage, the node contains 13 pointers, which is the maximum number of child nodes for a width-compressed node in the structure in accordance with the invention (when nodes of [0038] size 16 are used). When a fourteenth pointer (N, FIG. 4) is added to such a node (node N40, FIG. 4), the width-compressed node is disassembled into a cluster of compressed quad nodes in accordance with FIG. 5, having a parent node N50 and four child nodes (N51 . . . N54) with a total of 14 pointers to grandchild nodes. Each of the quad nodes in the cluster is similarly width-compressed as the original node of size 16, and thus each quad node has a bit pattern of four bits, each bit indicating whether the corresponding element has a nil pointer or a non-nil pointer.
  • Hence, the trie structure in accordance with the invention is preferably one having width-compressed nodes only. The nodes are otherwise of [0039] logical size 16, but each node in which the maximum fill rate has been exceeded has been converted to a cluster of width-compressed quads.
  • By means of the disclosed procedure, the adverse effect of copying costs can be avoided in a highly advantageous way. This is due firstly to the fact that by selecting the value 13 as the maximum number of child nodes of a width-compressed node, one can be certain that the parent node (N[0040] 50) to be formed is always full. Therefore, the number of pointers for said node need not be examined, and thus the retrieval process is rapid in this respect. On the other hand, one can be certain that even though the structure employs path compression, in the quad cluster to be formed none of the child nodes of the cluster will be path-compressed, since in this case each child node has at least two child nodes of its own (path compression to be carried out in a quad cluster will retard the computation).
  • In addition to the advantages set out above, the value 13 offers a good compromise between copying costs and storage space requirement. This fact has been studied by experimentally measuring copying costs and trie tree storage space requirement in a trie tree in which the nodes are of [0041] size 16 and are width-compressed in the manner described above. An even key distribution has been employed in the test. FIG. 6 depicts the copying cost (number of words to be copied) as a function of the maximum number of child nodes of the width-compressed node. The maximum copying cost has been shown by a continuous line and the average copying cost by a broken line. As will be seen from the figure, the copying costs will increase sharply if filled nodes are permitted in the structure. FIG. 7 shows correspondingly the space occupancy (memory requirement) of a trie tree as a function of the maximum number of child nodes of the width-compressed node. As is apparent, the space occupancy will decrease in so far as fuller nodes are permitted. It is also to be seen from the figures that proceeding in accordance with the invention will afford a good compromise between space occupancy and copying costs.
  • When deletions are made in the quad cluster in accordance with FIG. 5 so that the number of grandchild nodes becomes less than 14, the cluster is reconverted to a single width-compressed node. This is illustrated in FIGS. 8 and 9. When one pointer, e.g. pointer K, is deleted from the child nodes in the cluster of FIG. 5, a cluster of the kind shown in FIG. 8 is obtained, where the number of grandchild nodes has decreased to [0042] 13. As a result, a level compression by means of which the cluster is restored to a single width-compressed node is carried out. This will give the node N90 shown in FIG. 9.
  • In addition to the type information of the node, each node must contain only an element table (pointers) and a bit pattern. [0043]
  • FIG. 10 illustrates the structure of a width-compressed node. In its minimum composition, the compressed node thus comprises three parts: a type information field indicating the type of the node (reference [0044] 111), field 112 containing a bit pattern, and an element table (reference 113) in which the number of elements (pointers) is in accordance with the above. In addition to the node types stated above, the type information is used to indicate whether the node is a leaf node. The bit pattern and the node type information can in practice be accommodated in the same word, and thus the bit pattern requires no extra space.
  • As was indicated at the beginning, the principle described above mainly pertains to a bucketless trie structure. This is due to the fact that the solution in accordance with the invention will as such afford the same advantages as buckets do (compact structure at the lower end of the tree as well), and thus it is preferable to use similar nodes in the entire tree. The leaf nodes typically contain a pointer to a data unit (or a data unit). However, the use of buckets is not ruled out. [0045]
  • It is advantageous to incorporate into the memory in accordance with the invention also path compression to which brief reference was made above, since single-child nodes will be produced in the structure in spite of the compression described above. Path compression means that paths containing successive single-child nodes are compressed in depth. Since path compression can be implemented in known manner, it will not be described more closely in this context. One kind of path compression is disclosed in the Applicants' earlier patent application PCT/FI98/00191. [0046]
  • A unidimensional directory structure can be made multidimensional (generally n-dimensional) in the known manner by employing bit interleaving. Bit interleaving has been disclosed for example in the above international application PCT/FI98/00191, wherefrom the interested reader can find background information relating to the invention, if so desired. [0047]
  • As will be noted from the above, in the functional structure in accordance with the invention the starting-point is level compression that is cancelled when the fill rate of the level-compressed node reaches a given limit (that is, when the copying costs become inordinate). In conventional imperative structures, on the other hand, the starting-point is the smallest possible node size and the node size is increased (i.e., level compression is performed) when there are a sufficient number of internal nodes among the child nodes for the node. [0048]
  • FIG. 11 shows a memory in accordance with the invention on block diagram level. Each dimension has a dedicated input register, and hence there is a total of n input registers. The search key of each dimension is stored in these input registers, denoted by references R[0049] 1 . . . Rn, each key in a register of its own. The input registers are connected to a register TR in which the above-described search word is formed in accordance with the bit interleaving method employed. The register TR is connected via adder S to the address input of memory MEM. The output of the memory in turn is connected to address register AR the output of which in turn is connected to adder S. Initially the bits selected from each register are read into the common register TR in the correct order. The initial address of the first internal or trie node is first stored in the address register AR, and the address obtained as an offset address from register TR is added to the initial address in adder S. The resulting address is supplied to the address input of the memory MEM, and the data output of the memory provides the initial address of the next node, the address being written into the address register AR over the previous address stored therein. Thereafter the next selected bits are again loaded from the input registers into the common register TR in the correct order, and the address (index) obtained thereby is added to the initial address of the relevant table (i.e., trie node), obtained from the address register AR. This address is again supplied to the address input of the memory MEM, the data output of the memory thus providing the initial address of the next node. The above-described procedure is repeated until the desired point has been accessed and recordal can be performed or the desired record read.
  • Control logic CL reads the element table index from register TR and the corresponding bit from the bit pattern of the node. If said bit indicates that a non-nil pointer is concerned, the control logic determines the physical index on the basis of the bit pattern and stores it in register TR instead of the logical index. In such a case, the physical index is added (instead of the logical index) in adder S with the initial address of the node that is obtained from register AR. The control logic also attends to the compression of the nodes and to the fact that a correct number of bits (2 or 4) is extracted from the registers in each node. [0050]
  • The rapidity of the address computation can be influenced by the type of hardware configuration chosen. Since progress is by way of the above-stated bit manipulations, address computation can be accelerated by shifting from use of one processor to a multiprocessor environment in which parallel processing is carried out. An alternative implementation to the multiprocessor environment is an ASIC circuit. [0051]
  • The structure in accordance with the invention is preferably implemented in such a manner that also the nodes (which are preferably leaves) at the lowermost level are compressed similarly as the other nodes (internal nodes). If a pointer is stored in a leaf, the structure of the leaves is the same as in the internal nodes. If data units are stored in the leaves, these can be of fixed length in order that also the leaves can be compressed similarly as the internal nodes. However, it is possible that the nodes at the lowermost level are not similarly width-compressed. In that case, however, some of the advantages of the invention are lost, since in that case the search is slower at the leaves, [0052]
  • Even though the invention has been described in the above with reference to examples in accordance with the accompanying drawings, it is obvious that the invention is not to be so restricted, but it can be modified within the scope of the inventive idea disclosed in the appended claims. Although the invention has been described with reference to a preferred node size, the same principle can be applied also to nodes having a logical size greater than 16, e.g. 32 or 64. In such a case, the nodes in the cluster to be constructed from the node are also respectively larger than quad nodes. A leaf node typically contains a pointer to a stored data unit, but it can also contain a data unit or a pointer to a node in another directory structure. [0053]

Claims (10)

1. A method for implementing a functional memory, in which memory data is stored as data units for each of which a dedicated storage space is assigned in the memory, in accordance with which method
the memory is implemented as a directory structure comprising a tree-shaped hierarchy having nodes at several different levels, wherein at least some of the nodes are such that the node is associated with a logical table wherein an individual element may contain a pointer pointing to a lower node in the tree-shaped hierarchy and wherein an individual element may also be empty, in which case the content of the element corresponds to a nil pointer, the number of elements in the table corresponding to a power of two,
address computation performed in the directory structure comprises the steps of
(a) in the node at the uppermost level of the tree-shaped hierarchy, selecting a given number of bits from the bit string formed by the search keys employed, forming from the selected bits a search word with which the address of the next node is sought in the node, and proceeding to said node,
(b) selecting a predetermined number of bits from the unselected bits in the bit string formed by the search keys employed and forming from the selected bits a search word with which the address of a further new node at a lower level is sought in the node that has been accessed,
repeating step (b) until an element containing a nil pointer is encountered or until a node at the lowermost level has been accessed,
when a data unit is added to the structure, pointers by means of which the data unit can be retrieved by means of said address computation are added to the nodes,
in the directory structure, pointers are first added to nodes whose table contains a given first number of elements and which are width-compressed nodes in which non-nil pointers are physically stored and additionally a bit pattern on the basis of which the physical storage location in the node, corresponding to the search word, can be determined,
characterized in that
addition of a pointer to an individual width-compressed node is permitted until the number of pointers in the node corresponds to a given predetermined threshold value that is smaller than said first number, and
the width-compressed node is converted to a cluster of nodes made up by a parent node and separate child nodes as soon as the number of pointers to be accommodated in the width-compressed node exceeds said threshold value.
2. A method as claimed in claim 1, wherein the first number is sixteen, characterized in that addition of a pointer to a width-compressed node is permitted each time the number of pointers in the node after the addition is smaller than or equal to thirteen, and that the width-compressed node is converted to a cluster of width-compressed quad nodes each time the number of pointers to be accommodated in the width-compressed node exceeds the value thirteen.
3. A method as claimed in claim 1, characterized in that width-compressed nodes are made from all nodes of the structure.
4. A method as claimed in claim 1 or claim 2, characterized in that the cluster of nodes made up by said parent node and its child nodes is reconverted to a single width-compressed node as soon as the number of the grandchild nodes of the parent node decreases to said threshold value or below it.
5. A method as claimed in claim 1, characterized in that the non-nil pointers are stored in the width-compressed node in succession in the same order as they have in said table.
6. A method as claimed in claim 5, characterized in that the bit pattern comprises one bit for each element in the table, each bit indicating whether the corresponding element has a nil pointer or a non-nil pointer.
7. A memory arrangement for storing data units, said memory arrangement comprising a directory structure in which progress is made by using search words formed from a bit string constituted by the search keys employed in each case, said directory structure comprising a tree-shaped hierarchy having nodes at several different hierarchy levels, wherein at least some of the nodes are such that the node is associated with a logical table wherein an individual element may contain a pointer pointing to a lower node in the tree-shaped hierarchy and wherein an individual element may also be empty, in which case the content of the element corresponds to a nil pointer, the number of elements in the table corresponding to a power of two, at least some of the nodes in said directory structure being width-compressed nodes in which only non-nil pointers are physically stored and additionally a bit pattern (BP1) on the basis of which the physical storage location in the node, corresponding to the search word, can be determined,
characterized in that
a first part of the nodes are such in which the number of pointers stored in the node is always smaller than or equal to a given predetermined threshold value that is smaller than the number of elements in the table of the node, and
a second part of the nodes is constituted by clusters of nodes, each consisting of a parent node and its child nodes at a lower hierarchy level, the number of the grandchild nodes of said parent node always exceeding said threshold value.
8. A memory arrangement as claimed in claim 7, characterized in that at least the nodes in the first part are width-compressed nodes.
9. A memory arrangement as claimed in claim 7, characterized in that the nodes in both the first part and the second part are width-compressed.
10. A memory arrangement as claimed in claim 7, characterized in that substantially all nodes in the directory structure are width-compressed nodes.
US09/994,034 1999-06-02 2001-11-23 Functional memory based on a trie structure Expired - Fee Related US6691131B2 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
FI991261A FI991261A (en) 1999-06-02 1999-06-02 Functional memory based on tree structure
FI991261 1999-06-02
PCT/FI2000/000380 WO2000075804A1 (en) 1999-06-02 2000-04-28 Functional memory based on a trie structure

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
PCT/FI2000/000380 Continuation WO2000075804A1 (en) 1999-06-02 2000-04-28 Functional memory based on a trie structure

Publications (2)

Publication Number Publication Date
US20020035660A1 true US20020035660A1 (en) 2002-03-21
US6691131B2 US6691131B2 (en) 2004-02-10

Family

ID=8554792

Family Applications (1)

Application Number Title Priority Date Filing Date
US09/994,034 Expired - Fee Related US6691131B2 (en) 1999-06-02 2001-11-23 Functional memory based on a trie structure

Country Status (6)

Country Link
US (1) US6691131B2 (en)
EP (1) EP1192564A1 (en)
JP (1) JP3992495B2 (en)
AU (1) AU4407200A (en)
FI (1) FI991261A (en)
WO (1) WO2000075804A1 (en)

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7054841B1 (en) * 2001-09-27 2006-05-30 I2 Technologies Us, Inc. Document storage and classification
US20060184505A1 (en) * 2004-04-26 2006-08-17 Storewiz, Inc. Method and system for compression of files for storage and operation on compressed files
US20060190643A1 (en) * 2004-04-26 2006-08-24 Storewiz, Inc. Method and system for compression of data for block mode access storage
US7970965B2 (en) 2004-04-26 2011-06-28 Storewize Inc. Method and system for compression of data for block mode access storage
US20110219144A1 (en) * 2005-04-21 2011-09-08 Jonathan Amit Systems and methods for compression of data for block mode access storage
US20110218974A1 (en) * 2005-04-21 2011-09-08 Jonathan Amit Systems and methods for compressing files for storage and operation on compressed files
US20120179699A1 (en) * 2011-01-10 2012-07-12 Ward Roy W Systems and methods for high-speed searching and filtering of large datasets
US8612402B1 (en) * 2012-10-26 2013-12-17 Stec, Inc. Systems and methods for managing key-value stores
US9002859B1 (en) 2010-12-17 2015-04-07 Moonshadow Mobile, Inc. Systems and methods for high-speed searching and filtering of large datasets
US9171054B1 (en) 2012-01-04 2015-10-27 Moonshadow Mobile, Inc. Systems and methods for high-speed searching and filtering of large datasets
US9411898B1 (en) 2012-01-17 2016-08-09 Moonshadow Mobile, Inc. Processing and storage of spatial data
US10521411B2 (en) 2016-08-10 2019-12-31 Moonshadow Mobile, Inc. Systems, methods, and data structures for high-speed searching or filtering of large datasets
US11238046B2 (en) * 2018-02-19 2022-02-01 Nippon Telegraph And Telephone Corporation Information management device, information management method, and information management program

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FI991261A (en) 1999-06-02 2000-12-03 Nokia Networks Oy Functional memory based on tree structure
US20040264479A1 (en) * 2003-06-30 2004-12-30 Makaram Raghunandan Method for generating a trie having a reduced number of trie blocks
WO2005052812A1 (en) 2003-10-28 2005-06-09 France Telecom Trie-type memory device comprising a compression mechanism
US7921088B1 (en) 2005-07-22 2011-04-05 X-Engines, Inc. Logical operations encoded by a function table for compressing index bits in multi-level compressed look-up tables
US7430560B1 (en) 2005-07-22 2008-09-30 X-Engines, Inc. Multi-level compressed lock-up tables formed by logical operations to compress selected index bits
EP2074767A2 (en) * 2006-08-02 2009-07-01 University Of Florida Research Foundation, Inc. Succinct representation of static packet classifiers
US7827218B1 (en) 2006-11-18 2010-11-02 X-Engines, Inc. Deterministic lookup using hashed key in a multi-stride compressed trie structure
JP5812007B2 (en) 2010-10-15 2015-11-11 日本電気株式会社 Index creation device, data search device, index creation method, data search method, index creation program, and data search program
US8902902B2 (en) * 2012-07-18 2014-12-02 Netronome Systems, Incorporated Recursive lookup with a hardware trie structure that has no sequential logic elements
JP5696132B2 (en) * 2012-12-25 2015-04-08 日本電信電話株式会社 Adaptive reconstruction apparatus, method, and program according to partial tree structure

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4864497A (en) * 1988-04-13 1989-09-05 Digital Equipment Corporation Method of integrating software application programs using an attributive data model database
US5333317A (en) * 1989-12-22 1994-07-26 Bull Hn Information Systems Inc. Name resolution in a directory database
US5684976A (en) * 1994-11-16 1997-11-04 International Business Machines Corporation Method and system for reduced address tags storage within a directory having a tree-like data structure
US6098066A (en) * 1997-06-13 2000-08-01 Sun Microsystems, Inc. Method and apparatus for searching for documents stored within a document directory hierarchy
US6185550B1 (en) * 1997-06-13 2001-02-06 Sun Microsystems, Inc. Method and apparatus for classifying documents within a class hierarchy creating term vector, term file and relevance ranking
US6341325B2 (en) * 1999-01-12 2002-01-22 International Business Machines Corporation Method and apparatus for addressing main memory contents including a directory structure in a computer system
US6360227B1 (en) * 1999-01-29 2002-03-19 International Business Machines Corporation System and method for generating taxonomies with applications to content-based recommendations
US6453325B1 (en) * 1995-05-24 2002-09-17 International Business Machines Corporation Method and means for backup and restoration of a database system linked to a system for filing data

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU620994B2 (en) * 1989-07-12 1992-02-27 Digital Equipment Corporation Compressed prefix matching database searching
US5276868A (en) * 1990-05-23 1994-01-04 Digital Equipment Corp. Method and apparatus for pointer compression in structured databases
US5592667A (en) * 1991-05-29 1997-01-07 Triada, Ltd. Method of storing compressed data for accelerated interrogation
ATE210856T1 (en) * 1994-06-06 2001-12-15 Nokia Networks Oy METHOD FOR STORING AND FINDING DATA AND A STORAGE ARRANGEMENT
JP3152868B2 (en) * 1994-11-16 2001-04-03 富士通株式会社 Search device and dictionary / text search method
FI102425B1 (en) 1997-03-14 1998-11-30 Nokia Telecommunications Oy Method for implementing memory
FI102426B (en) * 1997-03-14 1998-11-30 Nokia Telecommunications Oy Procedure for memory formation
FI982095A (en) * 1998-09-29 2000-03-30 Nokia Networks Oy Method of implementing memory and memory arrangement
FI991261A (en) 1999-06-02 2000-12-03 Nokia Networks Oy Functional memory based on tree structure

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4864497A (en) * 1988-04-13 1989-09-05 Digital Equipment Corporation Method of integrating software application programs using an attributive data model database
US5333317A (en) * 1989-12-22 1994-07-26 Bull Hn Information Systems Inc. Name resolution in a directory database
US5684976A (en) * 1994-11-16 1997-11-04 International Business Machines Corporation Method and system for reduced address tags storage within a directory having a tree-like data structure
US6453325B1 (en) * 1995-05-24 2002-09-17 International Business Machines Corporation Method and means for backup and restoration of a database system linked to a system for filing data
US6098066A (en) * 1997-06-13 2000-08-01 Sun Microsystems, Inc. Method and apparatus for searching for documents stored within a document directory hierarchy
US6185550B1 (en) * 1997-06-13 2001-02-06 Sun Microsystems, Inc. Method and apparatus for classifying documents within a class hierarchy creating term vector, term file and relevance ranking
US6341325B2 (en) * 1999-01-12 2002-01-22 International Business Machines Corporation Method and apparatus for addressing main memory contents including a directory structure in a computer system
US6360227B1 (en) * 1999-01-29 2002-03-19 International Business Machines Corporation System and method for generating taxonomies with applications to content-based recommendations

Cited By (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7054841B1 (en) * 2001-09-27 2006-05-30 I2 Technologies Us, Inc. Document storage and classification
US8856409B2 (en) 2004-04-26 2014-10-07 International Business Machines Corporation Systems and methods for compression of data for block mode access storage
US20060190643A1 (en) * 2004-04-26 2006-08-24 Storewiz, Inc. Method and system for compression of data for block mode access storage
US7970965B2 (en) 2004-04-26 2011-06-28 Storewize Inc. Method and system for compression of data for block mode access storage
US7979403B2 (en) * 2004-04-26 2011-07-12 Storewize, Inc. Method and system for compression of files for storage and operation on compressed files
US20110219153A1 (en) * 2004-04-26 2011-09-08 Jonathan Amit Systems and methods for compression of data for block mode access storage
US8347003B2 (en) 2004-04-26 2013-01-01 International Business Machines Corporation Systems and methods for compression of data for block mode access storage
US20110218976A1 (en) * 2004-04-26 2011-09-08 Jonathan Amit Method and system for compression of files for storage and operation on compressed files
US20060184505A1 (en) * 2004-04-26 2006-08-17 Storewiz, Inc. Method and system for compression of files for storage and operation on compressed files
US20110219186A1 (en) * 2004-04-26 2011-09-08 Jonathan Amit Systems and methods for compression of data for block mode access storage
US20110218977A1 (en) * 2004-04-26 2011-09-08 Jonathan Amit Systems and methods for compression of data for block mode access storage
US8606763B2 (en) 2004-04-26 2013-12-10 International Business Machines Corporation Method and system for compression of files for storage and operation on compressed files
US8347004B2 (en) 2004-04-26 2013-01-01 International Business Machines Corporation Systems and methods for compression of data for block mode access storage
US20110218970A1 (en) * 2005-04-21 2011-09-08 Jonathan Amit Systems and methods for compression of data for block mode access storage
US8285898B2 (en) 2005-04-21 2012-10-09 International Business Machines Corporation Method and system for compression of files for storage and operation on compressed files
US8327050B2 (en) 2005-04-21 2012-12-04 International Business Machines Corporation Systems and methods for compressing files for storage and operation on compressed files
US20110218974A1 (en) * 2005-04-21 2011-09-08 Jonathan Amit Systems and methods for compressing files for storage and operation on compressed files
US8473652B2 (en) 2005-04-21 2013-06-25 International Business Machines Corporation Systems and methods for compression of data for block mode access storage
US20110218975A1 (en) * 2005-04-21 2011-09-08 Jonathan Amit Method and system for compression of files for storage and operation on compressed files
US8656075B2 (en) 2005-04-21 2014-02-18 International Business Machines Corporation Method and system for compression of files for storage and operation on compressed files
US8677039B2 (en) 2005-04-21 2014-03-18 International Business Machines Corporation Systems and methods for compression of data for block mode access storage
US20110219144A1 (en) * 2005-04-21 2011-09-08 Jonathan Amit Systems and methods for compression of data for block mode access storage
US9697250B1 (en) 2010-12-17 2017-07-04 Moonshadow Mobile, Inc. Systems and methods for high-speed searching and filtering of large datasets
US9002859B1 (en) 2010-12-17 2015-04-07 Moonshadow Mobile, Inc. Systems and methods for high-speed searching and filtering of large datasets
US8977656B2 (en) * 2011-01-10 2015-03-10 Moonshadow Mobile, Inc. Inline tree data structure for high-speed searching and filtering of large datasets
US9652467B2 (en) 2011-01-10 2017-05-16 Moonshadow Mobile, Inc. Inline tree data structure for high-speed searching and filtering of large datasets
US20120179699A1 (en) * 2011-01-10 2012-07-12 Ward Roy W Systems and methods for high-speed searching and filtering of large datasets
US9171054B1 (en) 2012-01-04 2015-10-27 Moonshadow Mobile, Inc. Systems and methods for high-speed searching and filtering of large datasets
US9626401B1 (en) 2012-01-04 2017-04-18 Moonshadow Mobile, Inc. Systems and methods for high-speed searching and filtering of large datasets
US9411898B1 (en) 2012-01-17 2016-08-09 Moonshadow Mobile, Inc. Processing and storage of spatial data
US8612402B1 (en) * 2012-10-26 2013-12-17 Stec, Inc. Systems and methods for managing key-value stores
US10521411B2 (en) 2016-08-10 2019-12-31 Moonshadow Mobile, Inc. Systems, methods, and data structures for high-speed searching or filtering of large datasets
US11106646B2 (en) 2016-08-10 2021-08-31 Moonshadow Mobile, Inc. Systems, methods, and data structures for high-speed searching or filtering of large datasets
US11573941B2 (en) 2016-08-10 2023-02-07 Moonshadow Mobile, Inc. Systems, methods, and data structures for high-speed searching or filtering of large datasets
US11238046B2 (en) * 2018-02-19 2022-02-01 Nippon Telegraph And Telephone Corporation Information management device, information management method, and information management program

Also Published As

Publication number Publication date
JP2003501749A (en) 2003-01-14
JP3992495B2 (en) 2007-10-17
US6691131B2 (en) 2004-02-10
FI991261A0 (en) 1999-06-02
WO2000075804A1 (en) 2000-12-14
EP1192564A1 (en) 2002-04-03
AU4407200A (en) 2000-12-28
FI991261A (en) 2000-12-03

Similar Documents

Publication Publication Date Title
US6691131B2 (en) Functional memory based on a trie structure
US6910043B2 (en) Compression of nodes in a trie structure
JP2957703B2 (en) Method and memory structure for storing and retrieving data
US6499032B1 (en) Method for implementing an associative memory based on a digital trie structure
US8255398B2 (en) Compression of sorted value indexes using common prefixes
US6505206B1 (en) Method for implementing an associative memory based on a digital trie structure
US6675171B2 (en) Memory based on a digital trie structure
US6532476B1 (en) Software based methodology for the storage and retrieval of diverse information
US6115716A (en) Method for implementing an associative memory based on a digital trie structure
US5664179A (en) Modified skip list database structure and method for access
EP0970430A1 (en) Method for implementing an associative memory based on a digital trie structure
US7647291B2 (en) B-tree compression using normalized index keys
Lomet A simple bounded disorder file organization with good performance
CA1234633A (en) Compression of data for storage
CN112988912A (en) Block chain data storage method and device and electronic equipment
CN108134739B (en) Route searching method and device based on index trie
CN112988909B (en) Block chain data storage method and device and electronic equipment
JP2001527240A (en) Management in data structures
CN112988908A (en) Block chain data storage method and device and electronic equipment
CN115718819A (en) Index construction method, data reading method and index construction device
CN115374127B (en) Data storage method and device
CN114968976A (en) Memory database storage engine data optimization method, electronic equipment and storage medium
Chan et al. A Compact Patricia Trie for a Large Set of Keys.

Legal Events

Date Code Title Description
AS Assignment

Owner name: NOKIA CORPORATION, FINLAND

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:TIKKANEN, MATTI;IIVONEN, JUKKA-PEKKA;REEL/FRAME:012327/0349;SIGNING DATES FROM 20011107 TO 20011111

FPAY Fee payment

Year of fee payment: 4

REMI Maintenance fee reminder mailed
LAPS Lapse for failure to pay maintenance fees
STCH Information on status: patent discontinuation

Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362

FP Lapsed due to failure to pay maintenance fee

Effective date: 20120210