WO2007092205A2 - Methods, systems, and computer program products for indexing, validating, recovering and consolidating a database indexed by range-bound numeric data - Google Patents

Methods, systems, and computer program products for indexing, validating, recovering and consolidating a database indexed by range-bound numeric data Download PDF

Info

Publication number
WO2007092205A2
WO2007092205A2 PCT/US2007/002520 US2007002520W WO2007092205A2 WO 2007092205 A2 WO2007092205 A2 WO 2007092205A2 US 2007002520 W US2007002520 W US 2007002520W WO 2007092205 A2 WO2007092205 A2 WO 2007092205A2
Authority
WO
WIPO (PCT)
Prior art keywords
database
range
data
key
entry
Prior art date
Application number
PCT/US2007/002520
Other languages
French (fr)
Other versions
WO2007092205A3 (en
Inventor
Rohini Marathe
Paul D. Worley
Jonathan E. Nocjar
Original Assignee
Tekelec
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
Priority claimed from US11/364,759 external-priority patent/US20070203909A1/en
Application filed by Tekelec filed Critical Tekelec
Publication of WO2007092205A2 publication Critical patent/WO2007092205A2/en
Publication of WO2007092205A3 publication Critical patent/WO2007092205A3/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures

Definitions

  • the subject matter described herein relates to accessing data indexed by ranges of numbers. More particularly, the subject matter described herein relates to methods, systems, and computer program products for indexing, validating, recovering, and consolidating a database indexed by range-bound numeric data.
  • databases are often indexed by ranges of numbers, such as ranges of telephone numbers (TNs).
  • number portability databases such as local number portability databases
  • NPA-NXX The first six digits of a TN are commonly referred to as the NPA-NXX.
  • the NPA-NXX is common to ten thousand numbers, because the remaining four digits of a telephone number can range from 0000 to 9999. If a number within an NPA- NXX range is ported, its entry in the number portability database will contain a location routing number (LRN), which is a ten digit number corresponding to a ported-to end office.
  • LRN location routing number
  • B-tree structures have another problem associated with the high overhead for the key associated with each entry.
  • the size of key may be greater than the size of data associated with a key.
  • existing validation methods may not indicate whether results of a database access are valid. For example, when a number portability database is accessed and an LRN is retrieved, there is no way using current databases to determine whether the retrieved LRN is in fact the correct LRN corresponding to the search key.
  • Checksums may be used to indicate whether entries are corrupt or not. However, the checksums only indicate whether data is corrupt-not whether the data contains the correct LRN.
  • B-tree structures cannot be recovered in smaller data blocks since entries in such a structure relate to each other as branches. This forces a reload of the entire database when data is identifies as invalid. There exists a need to identify corrupt small data blocks and recover the smaller blocks of data, eliminating the need to reload an entire database.
  • Sparse data refers to data that occupies only a portion of a block of memory reserved for data within a range. For example, a block of memory may be reserved to store LRNs corresponding to keys within a range. If only a small number of TNs within the range are ported, the remaining space within the block is wasted. Thus, there exists a need for a method for consolidating sparse data.
  • the subject matter described herein includes a method for accessing a database indexed by range-bound numeric data.
  • the method includes computing at least one index based on a first key within a first range of numeric data.
  • An entry corresponding to the at least one index is accessed.
  • a bitmap having bits indicating presence or absence of data corresponding to different keys in the first range of numeric data is read.
  • Data corresponding to the first key is located using the bitmap.
  • the subject matter described herein includes a method for validating results of a search in a database indexed by range-bound numeric data.
  • the method includes storing a portion of a search key in a database indexed by range-bound numeric data.
  • the database is accessed by computing at least one index based on the search key. An entry in the database corresponding to the at least one index is located.
  • the search key portion is compared to a stored search key portion in the entry. If the search key portion used to access the database matches the stored search key portion, the database access is valid and a result is returned. If the stored search key portion does not match the search key portion used to perform the access, the database access result may be indicated as invalid.
  • the subject matter described herein includes recovery of invalid data blocks associated with bit maps.
  • the subject matter described herein includes a method for consolidating sparse data in a database indexed by range bound numeric data.
  • the method may include storing blocks of data indexed by ranges of numbers.
  • Each block of data may include individual entries corresponding to keys within each range.
  • a count, a pointer, and a bitmap may be stored.
  • the count may indicate a number of populated entries within each block.
  • the pointer may point to each block.
  • the bitmap may include bits indicating populated and unpopulated entries within each block. Blocks with unpopulated entries may be consolidated using the counts and the bitmaps.
  • the subject matter described herein includes a system for providing bounded access time for telecommunications number portability database accesses.
  • the system includes a number portability database including a plurality of range tables and a data table.
  • Each range table includes entries corresponding to ranges of digits in telephone numbers.
  • the data table includes entries containing number portability information.
  • a database access engine computes indices to the range tables using different portions of a telephone number for which number portability information is sought and locates, using the indices and data read from the range tables, an entry in the data table containing number portability information for the telephone number.
  • the subject matter described herein for indexing, validating, recovering, and consolidating data in a database indexed by range-bound numeric keys may be implemented using a computer program product comprising computer executable instructions embodied in a computer readable medium.
  • Exemplary computer readable media suitable for implementing the subject matter described herein include chip memory devices, disk memory devices, programmable logic devices, application specific integrated circuits, and downloadable electrical signals.
  • a computer program product that implements the subject matter described herein may be located on a single device or computing platform or may be distributed across multiple devices or computing platforms.
  • Figure 1 is a block diagram illustrating an exemplary operating environment for embodiments of the subject matter described herein;
  • Figure 2 is a flow chart illustrating exemplary steps for accessing data in a database indexed by range-bound numeric data according to an embodiment of the subject matter described herein;
  • Figure 3 is a data structure diagram illustrating an exemplary structure for a database indexed by range-bound numeric data according to an embodiment of the subject matter described herein;
  • Figures 4A and 4B are a flow chart illustrating exemplary steps for accessing data in the database structure illustrated in Figure 3 according to an embodiment of the subject matter described herein;
  • Figure 5 is a flow chart illustrating exemplary steps for validating results of access to a database indexed by range-bound numeric data according to an embodiment of the subject matter described herein;
  • Figure 6 is a flow chart illustrating exemplary steps for consolidating sparse data in a database indexed by range-bound numeric data according to an embodiment of the subject matter described herein.
  • FIG. 1 is a block diagram illustrating an exemplary internal architecture of a signal transfer point that includes a database access engine and a range-bound database according to an embodiment of the subject matter described herein.
  • STP 100 includes a plurality of internal processing modules 102- 108 connected to each other via a counter-rotating, dual-ring bus 110.
  • Processing modules 102-108 may each include an application processor and associated memory for implementing a telecommunications signaling function.
  • each processing module may include a communications processor for communicating with other processing modules via bus 110.
  • processing module 102 comprises a link interface module (LIM) for interfacing with SS7 signaling links.
  • Link interface module 102 includes a message transfer part (MTP) level 1 and 2 function 112, a gateway screening function 114, a discrimination function 116, a distribution function 118, and a routing function 120.
  • MTP level 1 and 2 function 112 performs MTP level 1 and 2 operations, such as error correction, error detection, and sequencing of SS7 signaling messages.
  • Gateway screening function 114 screens incoming SS7 signaling messages based on one or more parameters in the messages.
  • Discrimination function 116 determines whether a received SS7 signaling message should be distributed to another processing module within STP 100 for further processing or whether the message should be routed over an outbound signaling link.
  • Discrimination function 116 forwards messages that are to be distributed for internal processing to distribution function 118.
  • Distribution function 118 forwards the messages to the appropriate internal processing module.
  • Routing function 120 routes messages that are required to be routed based
  • Processing module 104 comprises a data communications module (DCM) for sending and receiving signaling messages via IP signaling links.
  • DCM 104 includes a network and physical layer function 122, a transport layer function 124, an adaptation layer function 126, and layers 112-120 described with regard to LIM 102.
  • Network and physical layer function 122 performs network and physical layer functions for sending and receiving messages over IP links.
  • function 122 may implement Internet protocol (IP) over Ethernet.
  • Transport layer function 124 implements transport layer functions.
  • transport layer function 124 may implement transmission control protocol (TCP), user datagram protocol (UDP), or stream control transmission protocol (SCTP).
  • Adaptation layer function 126 performs operations for adapting signaling messages, such as SS7 signaling messages, for transport over an IP network.
  • Adaptation layer function 126 may implement using any of the IETF adaptation layer protocols, such as M3UA, M2PA, SUA, TALI, or other suitable adaptation layer protocol.
  • Functions 114-120 perform the operations described above for the correspondingly numbered components of LIM 102.
  • Processing modules 106 and 108 are database service modules (DSMs) for providing database services for received signaling messages.
  • DSMs database service modules
  • 106 and 108 includes a service selection function 128 for determining the type of database service to be applied to a received signaling message. Once a service is selected, a database access engine 130 accesses services in a range-bound database 132 corresponding to the selected service. After the database access has been performed, routing function 120 may route the received signaling message or a response to a received signaling message to its destination.
  • Database access engine 130 may implement the indexing methods described herein for accessing data in database 132. In addition, database access engine 130 may perform validation of database access results at access time based on data stored in database 132.
  • a database manager 134 may communicate with an external database provisioning platform 136 to provision database 132 and perform the steps described herein for consolidating sparse data in database 132. If database 132 comprises a local number portability database, provisioning system 136 may receive number portability data from local service management system (LSMS) 138. Local service management system 138 may receive its number portability information from a number portability administration center (NPAC), which distributes number portability information on a national or regional level. Provisioning system 136 may maintain its own local copy of range-bound database 132.
  • LSMS local service management system
  • NPAC number portability administration center
  • Provisioning system 136 may perform insertions and deletions in its copy of database 132 based on data received from LSMS 138. Provisioning system 136 distributes its copy of database 132 to DSM cards 106 and 108. Accordingly, provisioning system 136 may include a database access engine 130 and a copy of range-bound database 132.
  • provisioning system 136 was required to sequentially and individually distribute number portability entries to range- bound databases 132 on DSM cards 106 and 108.
  • range-bound database 132 uses a multi-level index structure, rather than a b-tree. Accordingly, provisioning system 136 can distribute large blocks of number portability entries regardless of the order in which the entries are received from LSMS 138. Simultaneously sending blocks of more than one number portability entry. to range-bound database 132 decreases the time required for database synchronization over conventional b- tree-based synchronization methods where entries are sent sequentially by provisioning system 136.
  • Database 132 may be any suitable database in which entries are indexed by ranges of numbers. Examples of such databases include number portability databases, such as local number portability databases or mobile number portability databases, and databases of mobile telecommunications node addresses indexed by mobile subscriber identifiers, such as IMSIs or MSISDN numbers. Alternatively, database 132 may be indexed by non- numeric identifiers, such as session initiation protocol (SIP) uniform resource indicators (URIs) or uniform resource locators (URLs). In such an implementation, database access engine 130 may compute a hash of a search key to implement the index-based access methods described herein.
  • SIP session initiation protocol
  • URIs uniform resource indicators
  • URLs uniform resource locators
  • FIG. 2 is a flow chart illustrating exemplary overall steps for indexing data in a range-bound database, such as database 132 illustrated in Figure 1.
  • a database access engine such as database access engine 130, computes at least one index based on a first search key that falls within a first range of numeric data.
  • the search key may be a telephone number and at least one index may include an index based on a portion of the key, such as the NPA-NXX portion. Different indexes may be computed based on different portions of the search key, as will be described in detail below.
  • the database access engine 130 accesses an entry corresponding to the at least one index in the database.
  • a database access engine may perform a computation based on a portion of the search key and proceed directly to an entry corresponding to the computation result. For example, if the digits of a search key are "450," and each entry in a database is indexed by ranges of 100 numbers starting at 000, the computation may include adding 1 to the hundreds digits of 450 and proceeding to the fifth entry in the database. A detailed example of index calculation will be described below.
  • database access engine 130 reads, from the entry, a bitmap having bits that correspond to the presence or absence of data corresponding to different keys within the first range of numeric data.
  • each bit in the bitmap may indicate whether or not a number within a range of numbers is ported. If the bit indicates that a number corresponding to an access key is not ported, then further database access is not required. If the bit indicates that the number is ported, control will proceed to step 206 where the data is located using the bitmap.
  • FIG. 3 is a block diagram illustrating an exemplary data structure that may be used in a range-bound database, such as database 132, according to an embodiment of the subject matter described herein.
  • database 132 includes a level 1 range table 300, a level 2 sub-range table 302, a level 3 sub-range table 304, and a level 4 TN data table 306.
  • Tables 300-306 illustrated in Figure 3 will be explained with regard to number portability data. However, it should be noted that the structure of these tables can apply to any type of data where entries are indexed by ranges of numbers.
  • level 1 range table 300 may include entries indexed by NPA-NXX values. For illustrative purposes, a single entry is shown.
  • the entry includes a pointer to a record in level 2 sub-range table 302.
  • Each entry in level 2 sub-range table 302 is indexed by ranges of 1000 numbers from 0000 to 9999, corresponding to the last four digits of a telephone number used as a search key.
  • Each entry in level 2 sub-range table 302 includes a pointer to an entry in level 3 sub-range table 304 for the corresponding range.
  • Level 3 sub-range table 304 includes entries indexed by ranges of 100 numbers from 000 to 999 corresponding to the last three digits of a telephone number.
  • Each entry in level 3 sub-range table 304 includes a bitmap, a ported count, and a pointer to level 4 data table 306.
  • the ported count for each entry indicates the number of TNs within each range that are ported.
  • the bitmap includes bits that indicate the presence or absence of data for a key corresponding to each bit.
  • the pointer points to the block of data in level 4 TN data table 306 corresponding to each range in level 3 sub-range table 304.
  • Level 4 TN data table 306 includes the data desired to be accessed.
  • level 4 TN data table 306 may include an LRN and MRG data.
  • level 4 data table 306 may include a portion of a search key, such as the NPA-NXX value, so that results of a database access can be validated at access time.
  • Figures 4A and 4B are a flow chart illustrating detailed steps for accessing data indexed by range-bound keys using the data structure illustrated in Figure 3 according to an embodiment of the subject matter described herein.
  • a first index is computed based on a first portion of a key.
  • the first index is an index to level 1 range table 300 in the database.
  • the numeric key is 919-380-2450
  • the first index may be computed based on the NPA-NXX portion of the number or 919-380.
  • the first index is the value 919-380 that points to the row 919380 in level 1 range table. If any telephone numbers with NPA-NXX value of 919-380 are ported, row 919380 in the level 1 range table will have a pointer to a row in level 2 range table.
  • step 402 the entry in the level 1 range table corresponding to the first index is accessed, and a pointer to a level 2 sub-range table is located.
  • the NPA-NXX value of 919-380 will result in an entry in the level 1 sub-range table that contains a pointer to a record in level 2 sub-range table 302.
  • the record may include multiple entries.
  • a second index is computed to the level 2 sub-range table based on a second portion of the key. Since the entries in level 2 sub-range table 302 correspond to the last four digits of the TN, the second index may be computed based on 2450 from the search key.
  • step 406 the entry in the level 2 sub-range table corresponding to the first pointer and the second index is accessed.
  • a pointer to a record in level 3 sub-range table 304 is read.
  • step 408 a third index is computed based on a third portion of the key. Since entries in the extracted record from level 3 subrange table 304 are arranged in increments of 100 telephone numbers, the last three digits of the telephone number are used to compute the third index. In this example, the last three digits of the telephone number are 450. If one is added to the 100s digit, the result is 5, and the fifth entry in the table will be accessed.
  • step 410 an entry in the level 3 sub-range table is accessed using the second pointer in the third index. From the entry, a bitmap and a third pointer to a block of data in level 4 data table 306 corresponding to the level 3 subrange table entry are read. The pointer points to the level 4 TN data table entry that contains number portability data for a range of numbers within each the search key falls.
  • the bitmap includes 100 bits, one for each key within the range of TNs of the entry in level 3 sub-range table 304, where each bit indicates the presence or absence of number portability data corresponding to each key in level 4 TN data table 306.
  • step 412 and 414 in Figure 4B 1 it is determined whether the bitmap indicates the presence of data corresponding to the key in level 4 TN data table 306.
  • the bitmap includes one bit for each number from 400-499. If the fifty-first bit indicates the presence of number portability data, control proceeds to step 416 where the number portability information is accessed in level 4 data table 306 using the pointer and the bitmap. The pointer points to the appropriate data block in the level 4 data table.
  • the bitmap allows the database access engine to calculate the appropriate entry.
  • number portability data table entries may be arranged sequentially starting from the first TN that has a ported number and ending on the last TN that has a ported number within the given range.
  • the database access engine may count the number of ported bits in the bitmap before the fifty-first bit. If there are ten bits indicating ported numbers before the fifty-first bit, then the entry corresponding to the number 919-380-2450 will be the eleventh entry in level 4 TN data table 306.
  • step 414 if the bitmap indicates that number portability data is not present for the TN, control may proceed to step 418 where the access engine returns not ported or no data present.
  • the time to access data in the database is bounded, even as the number of ported numbers added to the database increases.
  • the lookup time depends on the number of computations required to be performed on the search key and the time to access the entries each table rather than the time required to traverse branches in a b-tree, which increase in number as ported numbers are added to the database.
  • results of a database access may be validated at access time.
  • Figure 5 is a flow chart illustrating exemplary steps for validating results of a database access at access time.
  • a portion of a search key is stored in a database indexed by range-bound numeric data.
  • the NPA-NXX may be stored in an entry of level 4 TN data table 306 illustrated in Figure 3 to validate results of a database access.
  • the database is accessed by computing at least one index based on the search key. The access may be performed using the steps described above with regard to Figures 4A and 4B.
  • an entry in the database is accessed using the index.
  • the entry in level 4 TN data table 306 may be accessed.
  • the search key portion used to perform the access e.g., the NPA-NXX value
  • the database access results are indicated as valid and the result is returned. If there is not a match, control proceeds to step 512 where the database access results are indicated as invalid.
  • the entire database needs to be reloaded into memory. The subject matter described herein recognizes invalid data in blocks of memory as described above. Data blocks containing invalid data may be recovered, resulting in eliminating the need to reload an entire database.
  • the subject matter described herein may include a method for consolidating sparse data.
  • Sparse data refers to a data within a block of reserved memory that occupies less than the entire block. For example, if a block of memory is reserved to store data for ported numbers within a range of one hundred TNs and only one number in the range is ported, the data would be considered to be sparse.
  • FIG. 6 is a flow chart illustrating exemplary steps for consolidating sparse data according to an embodiment of the subject matter described herein.
  • step 600 blocks of data indexed by ranges of numbers are stored in a database.
  • Each block of data includes individual entries corresponding to keys in each range.
  • each block of data in TN data table 306 may include a predetermined number of TN records.
  • each block includes one hundred TN records as is the case in level 4 data table 306 illustrated in Figure 3.
  • Each one-hundred-TN record may include populated entries, i.e., entries for which number portability data is present, and unpopulated entries, i.e., entries for which number portability data is not present because the number Is not ported.
  • a count, a pointer, and a bitmap are stored. The count indicates the number of populated entries within each range.
  • the pointer points to each block of data in level 4 TN data table 306, and the bitmap includes bits indicating whether each entry is populated or unpopulated.
  • level 3 sub-range table 304 stores a bitmap and a pointer to blocks in level 4 TN data table 306 as described above.
  • level 3 sub-range table 304 may include a ported count for each block.
  • blocks with unpopulated entries are consolidated using the counts and the bitmaps. Consolidating the blocks using the counts and bitmaps may include moving number portability data in table 306 from one block with unpopulated entries to another block with unpopulated entries. When this occurs, the pointer in table 304 to the source block will be changed to point to the destination block. The bitmaps for both blocks may be separately maintained in level 3 sub-range table 304. However, the ported count maintained in table 304 for the destination block will be changed to reflect the cumulative ported count of all blocks before the current block. Table 1 shown below illustrates an example of data structure changes that may be made in level 3 sub-range table 304 according to an embodiment of the subject matter described herein.
  • Table 1 Data Structure for Consolidating Blocks of Ported Numbers
  • the first column indicates the ranges by which entries in level 3 subrange table 304 are indexed.
  • the second column stores the cumulative ported count for the current block and any blocks preceding the current block.
  • the third column stores a pointer to each block. It should be noted that all of the pointers point to the same block indicating that the blocks are consolidated.
  • the bitmap includes bits in the locations of ported entries within the original blocks before consolidation.
  • the location of ported entries in level 4 data blocks after consolidation can be derived from the bitmaps and the cumulative ported counts. For example, if the last three digits of a TN are 201 , the third row in Table 1 will be accessed.
  • bit maps and data blocks that contain data pointed to by the bit maps.
  • bit maps and data blocks are both updated.
  • Table 1 if 5 updates are received for the bit maps indicated in Table 1, the entry shown above in Table 1 for Level 3 table and the data block pointed to by memory location 0x5E are both updated.
  • the 5 updates need not be sent sequentially.
  • the 5 updates may be sent in a single cumulative update.
  • the subject matter described herein includes a method for accessing data in a database indexed by range-bound data where the keys used to perform the access are of non-numeric data.
  • one method includes converting the non-numeric keys to range bound numeric keys and using the numeric keys to perform the access. For example, if a telecommunications database is indexed by a non-numeric indicator, such as a SIP URI, the URI can be converted into numeric key by using a hash algorithm such as the MD5 hash algorithm.
  • the portion "rohini” may be hashed and treated similarly to the last four digits of a telephone number as described above.
  • the tekelec.com portion of the address may be hashed and the results may be treated as the NPA-NXX portion of the number.
  • the hash output for these two portions may be used to access the database as described above.
  • One problem with using hash functions to convert non-numeric data to numeric data is collisions. In hash functions, output is supposed to be unique for different inputs. However, two different inputs may hash to the same output, which is referred to as a collision. In order to access data in a database when a collision occurs, a collision table may be maintained. Table 2 shown below illustrates exemplary data that may be stored in such a table.
  • the first column stores the hash function output, which for illustrative purposes is shown as 919380.
  • the second column stores the first hash input corresponding to the hash output, which in this example is tekelec.com.
  • the third column in the Table contains the pointer to the level 2 sub-range table for the hash input in the second column.
  • the third column in the collision table stores the second hash input that corresponds to the same hash output.
  • the second hash input is the domain vz.com.
  • the final column in the table stores the pointer to the entry in the level 2 sub-range table that corresponds to the second hash input. Accordingly, if a collision occurs, data, such as that illustrated in Table 2 can be used to resolve the collision.

Abstract

Methods, systems, and computer program products for indexing, validating, recovering, and consolidating a database indexed by range-bound numeric data are disclosed. According to one method, at least one index is computed based on a first key within a first range of numeric data. An entry corresponding to the index is accessed in a database having entries indexed by range-bound numeric data. From the entry, a bitmap having bits indicating the presence or absence of data corresponding to different keys within the first range of numeric data is read. Data corresponding to the first key is located using the bitmap.

Description

DESCRIPTION
METHODS, SYSTEMS, AND COMPUTER PROGRAM PRODUCTS FOR INDEXING, VALIDATING, RECOVERING, AND CONSOLIDATING A
DATABASE INDEXED BY RANGE-BOUND NUMERIC DATA
RELATED APPLICATIONS
This application claims the benefit of U.S. Patent Application Serial No. 11/364,759, filed February 28, 2006 and U.S. Provisional Patent Application Serial No. 60/765,644, filed February 6, 2006; the disclosures of which are incorporated herein by reference in their entireties.
TECHNICAL FIELD
The subject matter described herein relates to accessing data indexed by ranges of numbers. More particularly, the subject matter described herein relates to methods, systems, and computer program products for indexing, validating, recovering, and consolidating a database indexed by range-bound numeric data.
BACKGROUND ART In telecommunications networks, databases are often indexed by ranges of numbers, such as ranges of telephone numbers (TNs). For example, number portability databases, such as local number portability databases, are indexed based on the first six digits of a telephone number, referred to as the numbering plan/exchange address and subsequent four digits. The first six digits of a TN are commonly referred to as the NPA-NXX. The NPA-NXX is common to ten thousand numbers, because the remaining four digits of a telephone number can range from 0000 to 9999. If a number within an NPA- NXX range is ported, its entry in the number portability database will contain a location routing number (LRN), which is a ten digit number corresponding to a ported-to end office.
One problem with conventional telecommunications databases, such as number portability databases, is that the databases are increasing in size, which results in increased storage requirements and lookup time. For example, number portability databases have increased in size in the United States and in other countries to include entries for hundreds of millions of subscribers. Such databases are typically implemented using binary tree data structures. In order to locate an entry in a b-tree data structure, a search key, such as a called party telephone number, is compared with data associated with different branches in the tree. As the number of ported telephone numbers increases, the number of branches in the tree increases and the search time increases. Another problem with using b-trees is that sophisticated balancing algorithms are required to ensure that the trees do not become unbalanced. B-tree structures have another problem associated with the high overhead for the key associated with each entry. The size of key may be greater than the size of data associated with a key. As database size grows, there is a need to minimize the key overhead associated with each data entry. Resulting in a more compact structure for large databases. Yet another problem associated with conventional telecommunications databases is that existing validation methods may not indicate whether results of a database access are valid. For example, when a number portability database is accessed and an LRN is retrieved, there is no way using current databases to determine whether the retrieved LRN is in fact the correct LRN corresponding to the search key. Checksums may be used to indicate whether entries are corrupt or not. However, the checksums only indicate whether data is corrupt-not whether the data contains the correct LRN.
Another problem associated with data validation is data recovery. B-tree structures cannot be recovered in smaller data blocks since entries in such a structure relate to each other as branches. This forces a reload of the entire database when data is identifies as invalid. There exists a need to identify corrupt small data blocks and recover the smaller blocks of data, eliminating the need to reload an entire database.
Still another problem associated with conventional telecommunications databases is the presence of sparse data. Sparse data refers to data that occupies only a portion of a block of memory reserved for data within a range. For example, a block of memory may be reserved to store LRNs corresponding to keys within a range. If only a small number of TNs within the range are ported, the remaining space within the block is wasted. Thus, there exists a need for a method for consolidating sparse data.
Another problem with telecommunications databases is the high rate of updates for the databases. Databases require updates to be applied one update at a time and in sequence. There exists a need to apply cumulative updates for data blocks. There also exists a need to be able to apply updates that may not be in sequence. This would eliminate the need to slow down updates when database systems are operating inefficiently or cannot be updated for any period of time. Accordingly, in light of these difficulties associated with conventional databases that are indexed by range-bound numeric data, there exists a need for improved methods, systems, and computer program products for indexing, validating, recovering, and consolidating a database indexed by range-bound numeric data.
SUMMARY
According to one aspect, the subject matter described herein includes a method for accessing a database indexed by range-bound numeric data. The method includes computing at least one index based on a first key within a first range of numeric data. An entry corresponding to the at least one index is accessed. From the entry, a bitmap having bits indicating presence or absence of data corresponding to different keys in the first range of numeric data is read. Data corresponding to the first key is located using the bitmap.
According to another aspect, the subject matter described herein includes a method for validating results of a search in a database indexed by range-bound numeric data. The method includes storing a portion of a search key in a database indexed by range-bound numeric data. The database is accessed by computing at least one index based on the search key. An entry in the database corresponding to the at least one index is located. The search key portion is compared to a stored search key portion in the entry. If the search key portion used to access the database matches the stored search key portion, the database access is valid and a result is returned. If the stored search key portion does not match the search key portion used to perform the access, the database access result may be indicated as invalid.
According to another aspect, the subject matter described herein includes recovery of invalid data blocks associated with bit maps. According to another aspect, the subject matter described herein includes a method for consolidating sparse data in a database indexed by range bound numeric data. The method may include storing blocks of data indexed by ranges of numbers. Each block of data may include individual entries corresponding to keys within each range. For each block of data, a count, a pointer, and a bitmap may be stored. The count may indicate a number of populated entries within each block. The pointer may point to each block. The bitmap may include bits indicating populated and unpopulated entries within each block. Blocks with unpopulated entries may be consolidated using the counts and the bitmaps. According to another aspect, the subject matter described herein includes a system for providing bounded access time for telecommunications number portability database accesses. The system includes a number portability database including a plurality of range tables and a data table. Each range table includes entries corresponding to ranges of digits in telephone numbers. The data table includes entries containing number portability information. A database access engine computes indices to the range tables using different portions of a telephone number for which number portability information is sought and locates, using the indices and data read from the range tables, an entry in the data table containing number portability information for the telephone number.
The subject matter described herein for indexing, validating, recovering, and consolidating data in a database indexed by range-bound numeric keys may be implemented using a computer program product comprising computer executable instructions embodied in a computer readable medium. Exemplary computer readable media suitable for implementing the subject matter described herein include chip memory devices, disk memory devices, programmable logic devices, application specific integrated circuits, and downloadable electrical signals. In addition, a computer program product that implements the subject matter described herein may be located on a single device or computing platform or may be distributed across multiple devices or computing platforms.
BRIEF DESCRIPTION OF THE DRAWINGS
Preferred embodiments of the subject matter described herein will now be explained with reference to the accompanying drawings of which:
Figure 1 is a block diagram illustrating an exemplary operating environment for embodiments of the subject matter described herein; Figure 2 is a flow chart illustrating exemplary steps for accessing data in a database indexed by range-bound numeric data according to an embodiment of the subject matter described herein;
Figure 3 is a data structure diagram illustrating an exemplary structure for a database indexed by range-bound numeric data according to an embodiment of the subject matter described herein;
Figures 4A and 4B are a flow chart illustrating exemplary steps for accessing data in the database structure illustrated in Figure 3 according to an embodiment of the subject matter described herein;
Figure 5 is a flow chart illustrating exemplary steps for validating results of access to a database indexed by range-bound numeric data according to an embodiment of the subject matter described herein; and
Figure 6 is a flow chart illustrating exemplary steps for consolidating sparse data in a database indexed by range-bound numeric data according to an embodiment of the subject matter described herein.
DETAILED DESCRIPTION OF THE INVENTION
The subject matter described herein for indexing, validating, recovering, and consolidating data in a database indexed by range-bound keys can be implemented on any suitable hardware platform that includes such a database. In the telecommunications industry, examples of such hardware platforms include signal transfer points (STPs), service control points (SCPs), service switching points (SSPs)1 home location registers (HLRs), visitor location registers (VLRs), short message service centers (SMSCs), database provisioning platforms, or Internet protocol (IP) telephony signaling nodes, such as media gateways, IP-based database nodes, etc. Figure 1 is a block diagram illustrating an exemplary internal architecture of a signal transfer point that includes a database access engine and a range-bound database according to an embodiment of the subject matter described herein. Referring to Figure 1 , STP 100 includes a plurality of internal processing modules 102- 108 connected to each other via a counter-rotating, dual-ring bus 110. Processing modules 102-108 may each include an application processor and associated memory for implementing a telecommunications signaling function. In addition, each processing module may include a communications processor for communicating with other processing modules via bus 110.
In the illustrated example, processing module 102 comprises a link interface module (LIM) for interfacing with SS7 signaling links. Link interface module 102 includes a message transfer part (MTP) level 1 and 2 function 112, a gateway screening function 114, a discrimination function 116, a distribution function 118, and a routing function 120. MTP level 1 and 2 function 112 performs MTP level 1 and 2 operations, such as error correction, error detection, and sequencing of SS7 signaling messages. Gateway screening function 114 screens incoming SS7 signaling messages based on one or more parameters in the messages. Discrimination function 116 determines whether a received SS7 signaling message should be distributed to another processing module within STP 100 for further processing or whether the message should be routed over an outbound signaling link. Discrimination function 116 forwards messages that are to be distributed for internal processing to distribution function 118. Distribution function 118 forwards the messages to the appropriate internal processing module. Routing function 120 routes messages that are required to be routed based on MTP level 3 information in the messages.
Processing module 104 comprises a data communications module (DCM) for sending and receiving signaling messages via IP signaling links. DCM 104 includes a network and physical layer function 122, a transport layer function 124, an adaptation layer function 126, and layers 112-120 described with regard to LIM 102. Network and physical layer function 122 performs network and physical layer functions for sending and receiving messages over IP links. For example, function 122 may implement Internet protocol (IP) over Ethernet. Transport layer function 124 implements transport layer functions. For example, transport layer function 124 may implement transmission control protocol (TCP), user datagram protocol (UDP), or stream control transmission protocol (SCTP). Adaptation layer function 126 performs operations for adapting signaling messages, such as SS7 signaling messages, for transport over an IP network. Adaptation layer function 126 may implement using any of the IETF adaptation layer protocols, such as M3UA, M2PA, SUA, TALI, or other suitable adaptation layer protocol. Functions 114-120 perform the operations described above for the correspondingly numbered components of LIM 102.
Processing modules 106 and 108 are database service modules (DSMs) for providing database services for received signaling messages. Each DSM
106 and 108 includes a service selection function 128 for determining the type of database service to be applied to a received signaling message. Once a service is selected, a database access engine 130 accesses services in a range-bound database 132 corresponding to the selected service. After the database access has been performed, routing function 120 may route the received signaling message or a response to a received signaling message to its destination.
Database access engine 130 may implement the indexing methods described herein for accessing data in database 132. In addition, database access engine 130 may perform validation of database access results at access time based on data stored in database 132. A database manager 134 may communicate with an external database provisioning platform 136 to provision database 132 and perform the steps described herein for consolidating sparse data in database 132. If database 132 comprises a local number portability database, provisioning system 136 may receive number portability data from local service management system (LSMS) 138. Local service management system 138 may receive its number portability information from a number portability administration center (NPAC), which distributes number portability information on a national or regional level. Provisioning system 136 may maintain its own local copy of range-bound database 132. Provisioning system 136 may perform insertions and deletions in its copy of database 132 based on data received from LSMS 138. Provisioning system 136 distributes its copy of database 132 to DSM cards 106 and 108. Accordingly, provisioning system 136 may include a database access engine 130 and a copy of range-bound database 132.
In prior implementations where range-bound database 132 was implemented using a binary tree, provisioning system 136 was required to sequentially and individually distribute number portability entries to range- bound databases 132 on DSM cards 106 and 108. However, as will be described in detail below, range-bound database 132 uses a multi-level index structure, rather than a b-tree. Accordingly, provisioning system 136 can distribute large blocks of number portability entries regardless of the order in which the entries are received from LSMS 138. Simultaneously sending blocks of more than one number portability entry. to range-bound database 132 decreases the time required for database synchronization over conventional b- tree-based synchronization methods where entries are sent sequentially by provisioning system 136. Such synchronization is particularly important when DSM cards 106 and 108 reboot and must reload range-bound databases 132 from scratch. Database 132 may be any suitable database in which entries are indexed by ranges of numbers. Examples of such databases include number portability databases, such as local number portability databases or mobile number portability databases, and databases of mobile telecommunications node addresses indexed by mobile subscriber identifiers, such as IMSIs or MSISDN numbers. Alternatively, database 132 may be indexed by non- numeric identifiers, such as session initiation protocol (SIP) uniform resource indicators (URIs) or uniform resource locators (URLs). In such an implementation, database access engine 130 may compute a hash of a search key to implement the index-based access methods described herein. Figure 2 is a flow chart illustrating exemplary overall steps for indexing data in a range-bound database, such as database 132 illustrated in Figure 1. Referring to Figure 2, in step 200, a database access engine, such as database access engine 130, computes at least one index based on a first search key that falls within a first range of numeric data. For example, the search key may be a telephone number and at least one index may include an index based on a portion of the key, such as the NPA-NXX portion. Different indexes may be computed based on different portions of the search key, as will be described in detail below. In step 202, the database access engine 130 accesses an entry corresponding to the at least one index in the database. Rather than performing comparisons to locate a database entry, a database access engine according to an embodiment of the subject matter described herein may perform a computation based on a portion of the search key and proceed directly to an entry corresponding to the computation result. For example, if the digits of a search key are "450," and each entry in a database is indexed by ranges of 100 numbers starting at 000, the computation may include adding 1 to the hundreds digits of 450 and proceeding to the fifth entry in the database. A detailed example of index calculation will be described below. In step 204, database access engine 130 reads, from the entry, a bitmap having bits that correspond to the presence or absence of data corresponding to different keys within the first range of numeric data. For example, in a number portability environment, each bit in the bitmap may indicate whether or not a number within a range of numbers is ported. If the bit indicates that a number corresponding to an access key is not ported, then further database access is not required. If the bit indicates that the number is ported, control will proceed to step 206 where the data is located using the bitmap.
Figure 3 is a block diagram illustrating an exemplary data structure that may be used in a range-bound database, such as database 132, according to an embodiment of the subject matter described herein. Referring to Figure 3, database 132 includes a level 1 range table 300, a level 2 sub-range table 302, a level 3 sub-range table 304, and a level 4 TN data table 306. Tables 300-306 illustrated in Figure 3 will be explained with regard to number portability data. However, it should be noted that the structure of these tables can apply to any type of data where entries are indexed by ranges of numbers. In the illustrated example, level 1 range table 300 may include entries indexed by NPA-NXX values. For illustrative purposes, a single entry is shown. In the illustrated example, the entry includes a pointer to a record in level 2 sub-range table 302. Each entry in level 2 sub-range table 302 is indexed by ranges of 1000 numbers from 0000 to 9999, corresponding to the last four digits of a telephone number used as a search key. Each entry in level 2 sub-range table 302 includes a pointer to an entry in level 3 sub-range table 304 for the corresponding range. Level 3 sub-range table 304 includes entries indexed by ranges of 100 numbers from 000 to 999 corresponding to the last three digits of a telephone number. Each entry in level 3 sub-range table 304 includes a bitmap, a ported count, and a pointer to level 4 data table 306. The ported count for each entry indicates the number of TNs within each range that are ported. The bitmap includes bits that indicate the presence or absence of data for a key corresponding to each bit. The pointer points to the block of data in level 4 TN data table 306 corresponding to each range in level 3 sub-range table 304. Level 4 TN data table 306 includes the data desired to be accessed.
For example, for number portability data, level 4 TN data table 306 may include an LRN and MRG data. In addition, level 4 data table 306 may include a portion of a search key, such as the NPA-NXX value, so that results of a database access can be validated at access time.
Figures 4A and 4B are a flow chart illustrating detailed steps for accessing data indexed by range-bound keys using the data structure illustrated in Figure 3 according to an embodiment of the subject matter described herein. Referring to Figure 4A, in step 400, a first index is computed based on a first portion of a key. The first index is an index to level 1 range table 300 in the database. Using the data structure illustrated in Figure 3 as an example, if the numeric key is 919-380-2450, the first index may be computed based on the NPA-NXX portion of the number or 919-380. The first index is the value 919-380 that points to the row 919380 in level 1 range table. If any telephone numbers with NPA-NXX value of 919-380 are ported, row 919380 in the level 1 range table will have a pointer to a row in level 2 range table.
In step 402, the entry in the level 1 range table corresponding to the first index is accessed, and a pointer to a level 2 sub-range table is located. Continuing with the example, the NPA-NXX value of 919-380 will result in an entry in the level 1 sub-range table that contains a pointer to a record in level 2 sub-range table 302. The record may include multiple entries. In order to access the appropriate entry, in step 404, a second index is computed to the level 2 sub-range table based on a second portion of the key. Since the entries in level 2 sub-range table 302 correspond to the last four digits of the TN, the second index may be computed based on 2450 from the search key. Since level 2 sub-range table 302 is sequentially arranged, the appropriate entry may be accessed by adding one to the 1000s digit of the phone number. Using 2450 as example, since 2+1=3, the third entry in level 2 sub-range table 302, may be accessed.
In step 406, the entry in the level 2 sub-range table corresponding to the first pointer and the second index is accessed. A pointer to a record in level 3 sub-range table 304 is read. In step 408, a third index is computed based on a third portion of the key. Since entries in the extracted record from level 3 subrange table 304 are arranged in increments of 100 telephone numbers, the last three digits of the telephone number are used to compute the third index. In this example, the last three digits of the telephone number are 450. If one is added to the 100s digit, the result is 5, and the fifth entry in the table will be accessed.
In step 410, an entry in the level 3 sub-range table is accessed using the second pointer in the third index. From the entry, a bitmap and a third pointer to a block of data in level 4 data table 306 corresponding to the level 3 subrange table entry are read. The pointer points to the level 4 TN data table entry that contains number portability data for a range of numbers within each the search key falls. The bitmap includes 100 bits, one for each key within the range of TNs of the entry in level 3 sub-range table 304, where each bit indicates the presence or absence of number portability data corresponding to each key in level 4 TN data table 306.
In steps 412 and 414 in Figure 4B1 it is determined whether the bitmap indicates the presence of data corresponding to the key in level 4 TN data table 306. In this example, since the last three digits of the TN being analyzed are 450, and the bitmap includes one bit for each number from 400-499, the fifty- first bit of the bitmap is analyzed. If the fifty-first bit indicates the presence of number portability data, control proceeds to step 416 where the number portability information is accessed in level 4 data table 306 using the pointer and the bitmap. The pointer points to the appropriate data block in the level 4 data table. The bitmap allows the database access engine to calculate the appropriate entry. For example, number portability data table entries may be arranged sequentially starting from the first TN that has a ported number and ending on the last TN that has a ported number within the given range. In order to calculate the location of the appropriate entry, the database access engine may count the number of ported bits in the bitmap before the fifty-first bit. If there are ten bits indicating ported numbers before the fifty-first bit, then the entry corresponding to the number 919-380-2450 will be the eleventh entry in level 4 TN data table 306. In step 414, if the bitmap indicates that number portability data is not present for the TN, control may proceed to step 418 where the access engine returns not ported or no data present.
Because the database is accessible through a series of computations based on different portions of the TN used to perform the lookup, the time to access data in the database is bounded, even as the number of ported numbers added to the database increases. For example, the lookup time depends on the number of computations required to be performed on the search key and the time to access the entries each table rather than the time required to traverse branches in a b-tree, which increase in number as ported numbers are added to the database.
According to another aspect of the subject matter described herein, results of a database access may be validated at access time. Figure 5 is a flow chart illustrating exemplary steps for validating results of a database access at access time. Referring to Figure 5, in step 500, a portion of a search key is stored in a database indexed by range-bound numeric data. Using number portability as an example, the NPA-NXX may be stored in an entry of level 4 TN data table 306 illustrated in Figure 3 to validate results of a database access. In step 502, the database is accessed by computing at least one index based on the search key. The access may be performed using the steps described above with regard to Figures 4A and 4B. In step 504, an entry in the database is accessed using the index. For example, the entry in level 4 TN data table 306 may be accessed. In step 506, the search key portion used to perform the access, e.g., the NPA-NXX value, may be compared to the stored search key portion. If there is a match, control proceeds to step 510 where the database access results are indicated as valid and the result is returned. If there is not a match, control proceeds to step 512 where the database access results are indicated as invalid. According to another aspect, when invalid data exists in a database, the entire database needs to be reloaded into memory. The subject matter described herein recognizes invalid data in blocks of memory as described above. Data blocks containing invalid data may be recovered, resulting in eliminating the need to reload an entire database. In the above example, if the portability data for telephone number 919-380-2450 is invalid, only the data block in level 4 TN table containing the invalid data needs to be recovered: The data can be recovered by replacing the data for the invalid entry in the level 4 TN table with valid data from a local or remote copy of the database. The recovery may be performed by the database access engine. According to another aspect, the subject matter described herein may include a method for consolidating sparse data. Sparse data refers to a data within a block of reserved memory that occupies less than the entire block. For example, if a block of memory is reserved to store data for ported numbers within a range of one hundred TNs and only one number in the range is ported, the data would be considered to be sparse. Since it is desirable to avoid sparse data, the subject matter described herein includes a method for consolidating sparse data. Figure 6 is a flow chart illustrating exemplary steps for consolidating sparse data according to an embodiment of the subject matter described herein. Referring to Figure 6, in step 600, blocks of data indexed by ranges of numbers are stored in a database. Each block of data includes individual entries corresponding to keys in each range. For example, each block of data in TN data table 306 may include a predetermined number of TN records. For purposes of illustration, it will be assumed that each block includes one hundred TN records as is the case in level 4 data table 306 illustrated in Figure 3. Each one-hundred-TN record may include populated entries, i.e., entries for which number portability data is present, and unpopulated entries, i.e., entries for which number portability data is not present because the number Is not ported. In step 602, for each range of indices, a count, a pointer, and a bitmap are stored. The count indicates the number of populated entries within each range. The pointer points to each block of data in level 4 TN data table 306, and the bitmap includes bits indicating whether each entry is populated or unpopulated. As illustrated in Figure 3, level 3 sub-range table 304 stores a bitmap and a pointer to blocks in level 4 TN data table 306 as described above. In addition, level 3 sub-range table 304 may include a ported count for each block. In step 604, blocks with unpopulated entries are consolidated using the counts and the bitmaps. Consolidating the blocks using the counts and bitmaps may include moving number portability data in table 306 from one block with unpopulated entries to another block with unpopulated entries. When this occurs, the pointer in table 304 to the source block will be changed to point to the destination block. The bitmaps for both blocks may be separately maintained in level 3 sub-range table 304. However, the ported count maintained in table 304 for the destination block will be changed to reflect the cumulative ported count of all blocks before the current block. Table 1 shown below illustrates an example of data structure changes that may be made in level 3 sub-range table 304 according to an embodiment of the subject matter described herein.
Figure imgf000016_0001
Table 1 : Data Structure for Consolidating Blocks of Ported Numbers In Table 1 , the first column indicates the ranges by which entries in level 3 subrange table 304 are indexed. The second column stores the cumulative ported count for the current block and any blocks preceding the current block. The third column stores a pointer to each block. It should be noted that all of the pointers point to the same block indicating that the blocks are consolidated. The bitmap includes bits in the locations of ported entries within the original blocks before consolidation. The location of ported entries in level 4 data blocks after consolidation can be derived from the bitmaps and the cumulative ported counts. For example, if the last three digits of a TN are 201 , the third row in Table 1 will be accessed. Since the last two digits 01 in the TN correspond to the second bit in the bitmap, which is a 1, the number is ported. The cumulative ported count for the row is 6 and the pointer is 0x5 E. Accordingly, the seventh entry in the block of data in level 4 data table 306 corresponding to the pointer 0X5E will be accessed.
According to another aspect, the subject matter described herein provides a method to update bit maps and data blocks that contain data pointed to by the bit maps. When updates are received, bit maps and data blocks are both updated. In the example shown in Table 1 above, if 5 updates are received for the bit maps indicated in Table 1, the entry shown above in Table 1 for Level 3 table and the data block pointed to by memory location 0x5E are both updated. The 5 updates need not be sent sequentially. The 5 updates may be sent in a single cumulative update.
According to another aspect, the subject matter described herein includes a method for accessing data in a database indexed by range-bound data where the keys used to perform the access are of non-numeric data. In order to access a database using non-numeric data, one method includes converting the non-numeric keys to range bound numeric keys and using the numeric keys to perform the access. For example, if a telecommunications database is indexed by a non-numeric indicator, such as a SIP URI, the URI can be converted into numeric key by using a hash algorithm such as the MD5 hash algorithm. If the SIP URI is rohini@tekelec.com, the portion "rohini" may be hashed and treated similarly to the last four digits of a telephone number as described above. The tekelec.com portion of the address may be hashed and the results may be treated as the NPA-NXX portion of the number. The hash output for these two portions may be used to access the database as described above. One problem with using hash functions to convert non-numeric data to numeric data is collisions. In hash functions, output is supposed to be unique for different inputs. However, two different inputs may hash to the same output, which is referred to as a collision. In order to access data in a database when a collision occurs, a collision table may be maintained. Table 2 shown below illustrates exemplary data that may be stored in such a table.
Figure imgf000018_0001
Table 2: Collision Table
In Table 2, the first column stores the hash function output, which for illustrative purposes is shown as 919380. The second column stores the first hash input corresponding to the hash output, which in this example is tekelec.com. The third column in the Table contains the pointer to the level 2 sub-range table for the hash input in the second column. The third column in the collision table stores the second hash input that corresponds to the same hash output. In this example, the second hash input is the domain vz.com. The final column in the table stores the pointer to the entry in the level 2 sub-range table that corresponds to the second hash input. Accordingly, if a collision occurs, data, such as that illustrated in Table 2 can be used to resolve the collision.
It will be understood that various details of the invention may be changed without departing from the scope of the invention. Furthermore, the foregoing description is for the purpose of illustration only, and not for the purpose of limitation.

Claims

CLAIMS What is claimed is:
1. A method for indexing a database indexed by range-bound numeric data, the method comprising: (a) computing at least one first index based on a first key within a first range of numeric data;
(b) accessing an entry corresponding to the index in a database having entries that are indexed by range-bound numeric data;
(c) reading, from the entry, a bitmap having bits indicating the presence or absence of data corresponding to different keys within the first range of numeric data; and
(d) locating data corresponding to the first key using the bitmap.
2. The method of claim 1 wherein the first key comprises a numeric key.
3. The method of claim 2 wherein the first key comprises a telephone number and the first range comprises a range of telephone numbers.
4. The method of claim 1 wherein the database comprises a number portability database indexed by ranges of telephone numbers.
5. The method of claim 4 wherein the number portability database comprises a local number portability database indexed by ranges of telephone numbers and wherein the data corresponding to the first key comprises a location routing number (LRN).
6. The method of claim 4 wherein the number portability database comprises a mobile number portability database and wherein the data comprises mobile telecommunications node addresses.
7. The method of claim 1 wherein the database comprises a mobile telecommunications node address database indexed by ranges of and individual mobile subscriber identifiers.
8. The method of claim 1 wherein the first key comprises a non-numeric key and wherein the method further comprises converting the non- numeric key to a numeric key by computing a hash of at least a portion of the first key.
9. The method of claim 1 wherein computing at least one index includes:
(a) computing a first index to a first level range table of the database based on a first portion of the key;
(b) accessing an entry in the first level range table corresponding to the first index and reading, from the entry, a first pointer to a second level subrange table;
(c) computing a second index to a second level sub-range table in the database based on a second portion of the key;
(d) accessing an entry in the second level sub-range table corresponding to the second index and locating a second pointer to a third level sub-range table in the database;
(e) computing a third index to the third level sub-range table based on a third portion of the key; and
(f) accessing an entry in the third level sub-range table corresponding to the third index, wherein the entry in the third level sub-range table includes the bitmap and a fourth pointer, wherein locating data corresponding to the first key using the bitmap includes locating data corresponding to the first key using the bitmap and the fourth pointer.
10. The method of claim 1 comprising validating results of access to the database by:
(a) storing a portion of a search key in an entry in the database;
(b) accessing an entry in the database by computing at least one index based on a search key; (c) locating an entry in the database corresponding to the at least one index;
(d) reading a portion of a search key stored in the entry; and
(e) determining whether results of the access are valid based on the portion of the search key stored in the entry and the search key used to perform the access.
11. The method of claim 10 comprising, in response to determining that results of the database access are invalid, recovering data in the entry corresponding to the invalid results.
12. The method of claim 11 wherein recovering data in the entry corresponding to the invalid results includes replacing the data corresponding to the invalid results in the entry without reloading the entire database.
13. The method of claim 1 comprising consolidating sparse data in the database by:
(a) storing, in the database, blocks of data indexed by ranges of numbers, each block of data including individual entries corresponding to a number within a range; (b) storing, in the database, a count, a pointer, and a bitmap for each range of numbers, the count indicating a number of populated entries within each range, the pointer pointing to each block, and the bitmap including bits that indicate populated and unpopulated entries within each range; and (c) consolidating, in the database, blocks having unpopulated entries using the counts and the bitmaps.
14. The method of claim 13 wherein consolidating blocks with unpopulated entries using the counts and the bitmaps comprises:
(a) identifying blocks having bitmaps including unpopulated entries; (b) merging the blocks having unpopulated entries; and
(c) updating the counts for the ranges to represent a cumulative count of populated entries in each range and ranges preceding each range.
15. A database system for providing access to a database indexed by range bound numeric data, the system comprising:
(a) a database for storing data indexed by range-bound numeric data; and
(b) a database access engine for computing at least one index based ori a first key within a first range of numeric data, for accessing an entry in the database corresponding to the index, for reading from the entry, a bitmap having bits indicating the presence or absence of data corresponding to different keys within the first range of numeric data, and for locating data corresponding to the first key using the bitmap.
16. The system of claim 15 wherein the first key comprises a numeric key.
17. The system of claim 15 wherein the first key comprises a telephone number within a range of telephone numbers.
18. The system of claim 15 wherein the database comprises a number portability database.
19. The system of claim 18 wherein the database comprises a local number portability database.
20. The system of claim 18 wherein the number portability database comprises a mobile number portability database.
21. The system of claim 15 wherein the database comprises a database of mobile subscriber node addresses indexed by ranges of and by individual mobile subscriber identifiers.
22. The system of claim 15 wherein the database access engine is adapted to compute a hash of a non-numeric key and to use the hashed key to access the database.
23. The system of claim 15 wherein the database access engine is adapted to: (a) access a first entry in a level one range table of the database corresponding to the first index and read, from the first entry, a first pointer to a second level sub-range table in the database; (b) compute a second index to the second level sub-range table based on a second portion of the key; (c) access an entry in the second level sub-range table corresponding to the second index and locate a second pointer to a third level sub-range table in the database; (d) computing a third index to the third level sub-range table based on a third portion of the key; (e) access an entry in the third level sub-range table corresponding to the third index and to read a bitmap and a fourth pointer from the entry; and (f) locate the data corresponding to the first key using the bitmap and the fourth pointer.
24. The system of claim 15 comprising a provisioning platform operatively associated with the database for receiving database updates and for communicating blocks including a plurality of database updates to the database.
25. The system of claim 24 wherein the database access engine is adapted to perform cumulative updates to blocks of data in the database and to bitmaps that point to the blocks.
26. A system for providing bounded access time for telecommunications number portability database accesses, the system comprising:
(a) a number portability database including a plurality of range tables and a data table, each range table including entries corresponding to ranges of digits in telephone numbers and the data table including entries containing number portability information; and
(b) a database access engine for computing indices to the range tables using different portions of a telephone number for which number portability information is sought and for locating, using the indices and data read from the range tables, an entry in the data table containing number portability information for the telephone number.
27. The system of claim 26 wherein the range tables include a level one range table including entries indexed by the NPA-NXX portion of a telephone number.
28. The system of claim 27 wherein the range tables include a level two sub-range table including entries indexed by the last four digits of a telephone number.
29. The system of claim 28 wherein the range tables include a level three sub-range table including entries indexed by the last three digits of a telephone number.
30. The system of claim 29 wherein the data table comprises a level four data table indexed by information derived from the entries in the level three range table and containing the number portability information.
31. The system of claim 30 wherein each entry in the level three sub-range table includes a pointer to a block of data in the level four data table and a bitmap indicating entries in the block of data that contain number portability information. '
32. The system of claim 31 wherein the database access engine is adapted to determine, based on the bitmap, the location of the number portability information for the telephone number used to access the database.
33. A computer program product comprising computer executable instructions embodied in a computer readable medium for performing steps comprising:
(a) computing at least one first index based on a first key within a first range of numeric data;
(b) accessing an entry corresponding to the index in a database having entries that are indexed by range-bound numeric data;
(c) reading, from the entry, a bitmap having bits indicating the presence or absence of data corresponding to different keys within the first range of numeric data; and
(d) locating data corresponding to the first key using the bitmap.
PCT/US2007/002520 2006-02-06 2007-01-31 Methods, systems, and computer program products for indexing, validating, recovering and consolidating a database indexed by range-bound numeric data WO2007092205A2 (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US76564406P 2006-02-06 2006-02-06
US60/765,644 2006-02-06
US11/364,759 2006-02-28
US11/364,759 US20070203909A1 (en) 2006-02-28 2006-02-28 Methods, systems, and computer program products for indexing, validating, recovering, and consolidating a database indexed by range-bound numeric data

Publications (2)

Publication Number Publication Date
WO2007092205A2 true WO2007092205A2 (en) 2007-08-16
WO2007092205A3 WO2007092205A3 (en) 2008-05-02

Family

ID=38345634

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2007/002520 WO2007092205A2 (en) 2006-02-06 2007-01-31 Methods, systems, and computer program products for indexing, validating, recovering and consolidating a database indexed by range-bound numeric data

Country Status (1)

Country Link
WO (1) WO2007092205A2 (en)

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7787445B2 (en) 2006-07-20 2010-08-31 Tekelec Methods, systems, and computer program products for routing and processing ENUM queries
US7848767B2 (en) 2002-10-15 2010-12-07 Tekelec Methods and systems for migrating between application layer mobile signaling protocols
US7889716B2 (en) 2005-12-01 2011-02-15 Tekelec Methods, systems, and computer program products for using an E.164 number (ENUM) database for message service message routing resolution among 2G and subsequent generation network systems
US7916857B2 (en) 2006-02-15 2011-03-29 Tekelec Methods, systems, and computer readable media for selectively processing or redirecting signaling connection control part (SCCP) messages
US7996541B2 (en) 2007-06-15 2011-08-09 Tekelec Methods, systems, and computer program products for identifying a serving home subscriber server (HSS) in a communications network
US8184798B2 (en) 2006-06-13 2012-05-22 Tekelec Methods, systems and computer program products for accessing number portability (NP) and E.164 number (ENUM) data using a common NP/ENUM data locator structure
CN102955861A (en) * 2012-11-30 2013-03-06 华为技术有限公司 Method and device for generating index files based on backup files
US8452325B2 (en) 2009-05-11 2013-05-28 Tekelec, Inc. Methods, systems, and computer readable media for providing scalable number portability (NP) home location register (HLR)
US8538000B2 (en) 2007-08-10 2013-09-17 Tekelec, Inc. Methods, systems, and computer program products for performing message deposit transaction screening
US8644355B2 (en) 2010-12-23 2014-02-04 Tekelec, Inc. Methods, systems, and computer readable media for modifying a diameter signaling message directed to a charging function node
US8750292B2 (en) 2010-02-25 2014-06-10 Tekelec, Inc. Systems, methods, and computer readable media for using a signaling message routing node to provide backup subscriber information management service
US8855654B2 (en) 2013-01-28 2014-10-07 Tekelec Global, Inc. Methods, systems, and computer readable media for tracking and communicating long term evolution (LTE) handset communication capability
US9021014B2 (en) 2009-03-25 2015-04-28 Tekelec, Inc. Methods, systems, and computer readable media for providing home subscriber server (HSS) proxy
US9100796B2 (en) 2011-12-15 2015-08-04 Tekelec, Inc. Methods, systems, and computer readable media for seamless roaming between diameter and non-diameter networks

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6434144B1 (en) * 1998-07-06 2002-08-13 Aleksey Romanov Multi-level table lookup
US20030220951A1 (en) * 2002-05-24 2003-11-27 Oracle International Corporation Dynamic disk space management by multiple database server instances in a cluster configuration
US20040034699A1 (en) * 2002-08-16 2004-02-19 Martina Gotz Managing data integrity using a filter condition
US6775737B1 (en) * 2001-10-09 2004-08-10 Cisco Technology, Inc. Method and apparatus for allocating and using range identifiers as input values to content-addressable memories
US20050101297A1 (en) * 2003-11-07 2005-05-12 Tekelec Methods and systems for distributing application data among multiple processing modules in a telecommunications network element having a distributed internal processing architecture
US20050251509A1 (en) * 2002-08-05 2005-11-10 Ben Pontius System and method of paralled pattern matching

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6434144B1 (en) * 1998-07-06 2002-08-13 Aleksey Romanov Multi-level table lookup
US6775737B1 (en) * 2001-10-09 2004-08-10 Cisco Technology, Inc. Method and apparatus for allocating and using range identifiers as input values to content-addressable memories
US20030220951A1 (en) * 2002-05-24 2003-11-27 Oracle International Corporation Dynamic disk space management by multiple database server instances in a cluster configuration
US20050251509A1 (en) * 2002-08-05 2005-11-10 Ben Pontius System and method of paralled pattern matching
US20040034699A1 (en) * 2002-08-16 2004-02-19 Martina Gotz Managing data integrity using a filter condition
US20050101297A1 (en) * 2003-11-07 2005-05-12 Tekelec Methods and systems for distributing application data among multiple processing modules in a telecommunications network element having a distributed internal processing architecture

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7848767B2 (en) 2002-10-15 2010-12-07 Tekelec Methods and systems for migrating between application layer mobile signaling protocols
US7889716B2 (en) 2005-12-01 2011-02-15 Tekelec Methods, systems, and computer program products for using an E.164 number (ENUM) database for message service message routing resolution among 2G and subsequent generation network systems
US7916857B2 (en) 2006-02-15 2011-03-29 Tekelec Methods, systems, and computer readable media for selectively processing or redirecting signaling connection control part (SCCP) messages
US8184798B2 (en) 2006-06-13 2012-05-22 Tekelec Methods, systems and computer program products for accessing number portability (NP) and E.164 number (ENUM) data using a common NP/ENUM data locator structure
US7787445B2 (en) 2006-07-20 2010-08-31 Tekelec Methods, systems, and computer program products for routing and processing ENUM queries
US7996541B2 (en) 2007-06-15 2011-08-09 Tekelec Methods, systems, and computer program products for identifying a serving home subscriber server (HSS) in a communications network
US8538000B2 (en) 2007-08-10 2013-09-17 Tekelec, Inc. Methods, systems, and computer program products for performing message deposit transaction screening
US9021014B2 (en) 2009-03-25 2015-04-28 Tekelec, Inc. Methods, systems, and computer readable media for providing home subscriber server (HSS) proxy
US8452325B2 (en) 2009-05-11 2013-05-28 Tekelec, Inc. Methods, systems, and computer readable media for providing scalable number portability (NP) home location register (HLR)
US8750292B2 (en) 2010-02-25 2014-06-10 Tekelec, Inc. Systems, methods, and computer readable media for using a signaling message routing node to provide backup subscriber information management service
US8644355B2 (en) 2010-12-23 2014-02-04 Tekelec, Inc. Methods, systems, and computer readable media for modifying a diameter signaling message directed to a charging function node
US9100796B2 (en) 2011-12-15 2015-08-04 Tekelec, Inc. Methods, systems, and computer readable media for seamless roaming between diameter and non-diameter networks
CN102955861A (en) * 2012-11-30 2013-03-06 华为技术有限公司 Method and device for generating index files based on backup files
US8855654B2 (en) 2013-01-28 2014-10-07 Tekelec Global, Inc. Methods, systems, and computer readable media for tracking and communicating long term evolution (LTE) handset communication capability

Also Published As

Publication number Publication date
WO2007092205A3 (en) 2008-05-02

Similar Documents

Publication Publication Date Title
US20070203909A1 (en) Methods, systems, and computer program products for indexing, validating, recovering, and consolidating a database indexed by range-bound numeric data
WO2007092205A2 (en) Methods, systems, and computer program products for indexing, validating, recovering and consolidating a database indexed by range-bound numeric data
EP2033431B1 (en) Methods, systems and computer program products for accessing number portability (np) and e.164 number (enum) data using a common np/enum data locator structure
US6993038B2 (en) Methods and systems for automatically provisioning address translation information in a mobile services node address translation database
EP2047667B1 (en) Methods, systems and computer program products for routing and processing enum queries
EP2062424B1 (en) Methods, systems, and computer program products for providing a country code identifier in an international enum system
EP1891799B1 (en) Methods, systems, and computer program products for selecting a global title translation mode based on an originator of a signaling message and performing global title translation according to the selected mode
US7127057B2 (en) Methods and systems for distributing application data among multiple processing modules in a telecommunications network element having a distributed internal processing architecture
WO2007044689A2 (en) Methods, systems, and computer program products for providing address translation using subsequent address information
US7372953B2 (en) Methods and systems for default routing in a signaling network
US20080198862A1 (en) Methods, systems, and computer program products for using a location routing number based query and response mechanism to route calls to IP multimedia subsystem (IMS) subscribers
CN101682676A (en) Methods, systems, and computer program products for using a location routing number based query and response mechanism to effect subscriber cutover
CN101416150A (en) Methods, systems, and computer program products for indexing, validating, recovering and consolidating a database indexed by range-bound numeric data
US8954445B2 (en) System and method for efficiently representing and managing a computer facility
EP1697815A2 (en) Methods and systems for message transfer part (mtp) load sharing using mtp load sharing groups
US7738640B1 (en) Methods for reconciling discrepancies in circuit information among various telecommunication network management systems
EP1644791A2 (en) Methods, systems, and computer program products for flexible global title translation (gtt) load sharing
EP2033430B1 (en) Methods, systems, and computer program products for performing range-based directory number (dn) screening
EP1460864A1 (en) Signaling server
JP2021508212A (en) Network communication method and equipment
EP4245041A1 (en) Methods, systems, and computer readable media for load sharing class 1 signaling connection control part (sccp) messages
KR20060060769A (en) Practical using method of sccp gt messages in no.7 signalling network

Legal Events

Date Code Title Description
NENP Non-entry into the national phase in:

Ref country code: DE

WWE Wipo information: entry into national phase

Ref document number: 200780012095.7

Country of ref document: CN

32PN Ep: public notification in the ep bulletin as address of the adressee cannot be established

Free format text: "NOTING OF LOSS OF RIGHTS PURSUANT TO RULE 112(1) EPC, EPO FORM 1205A, DATED 04.12.2008"

121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 07763268

Country of ref document: EP

Kind code of ref document: A2

122 Ep: pct application non-entry in european phase

Ref document number: 07763268

Country of ref document: EP

Kind code of ref document: A2