IP Library Granted Patent US 8,364,700
Granted Patent B2
US 8,364,700 · App. 12/785,280 · Granted Jan 29, 2013

Method and apparatus for rapid data access and distribution using structured identifiers

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,364,700
App. No.
12/785,280
Granted
Jan 29, 2013
Kind
B2
Abstract

A method and apparatus for accessing data using an N-leg search tree including determining a tree identifier using a computer, traversing an N-leg search tree associated with the tree identifier, and accessing a data structure. The N-leg search tree is stored on a computer and traversed to a given node within the tree. The accessed data structure is associated with a deepest valid traversed node. The given node corresponds to a given element of a structured identifier.

Claims (51)

1. A method for accessing data stored on a computer system including one or more computers on a network, the method comprising:

determining a tree identifier using the computer system;

traversing, using the computer system, an N-leg search tree associated with the tree identifier stored on a computer, to a given node within the N-leg search tree, wherein the given node corresponds to a given element of a structured identifier; and

accessing a data structure associated with a deepest valid traversed node, wherein the deepest valid traversed node is determined by:

(a) determining whether data stored at the given node is valid;

(b) when the data stored at the given node is determined to be valid, determining that the given node is the deepest valid traversed node; and

(c) when the data stored at the given node is determined to be not valid, traversing back up the N-leg search tree to a first parent node that stores valid data, and determining that the first parent node that stores valid data is the deepest valid traversed node.

2. The method of claim 1 , wherein the tree identifier is determined by a method comprising:

determining a minimum number of members of the given element;

performing a modulo operation using a value corresponding to the minimum number of members of the given element of the structured identifier and a number of N-leg search trees used to store the data; and

using a result of the modulo operation as the tree identifier.

3. The method of claim 1 , further comprising accessing a child node of the given node, wherein the child node is associated with a next element of a structured identifier.

4. The method of claim 1 , wherein the traversing step is performed for each element of the structured identifier until at least one condition occurs, wherein the condition is one of a group consisting of: where the child node is a dead-end node, where the next element is a last element of the structured identifier, and where no node corresponds to the given element.

5. The method of claim 1 , wherein the structured identifier comprises one or more substrings of variable length.

6. The method of claim 1 , wherein the N-leg search tree comprises telephony routing data.

7. The method of claim 6 , wherein the structured identifier is a phone number comprising one or more substrings of variable length.

8. The method of claim 7 , wherein one of the one or more substrings is a telephone country code.

9. The method of claim 6 , wherein the data structure comprises an element of a telephone routing table comprised of one or more prefix substrings and one or more routing elements associated with the one or more prefix substrings.

10. The method of claim 1 , wherein the structured identifier is a first set of ASCII characters, each ASCII character in the set having an ASCII decimal value, the method further comprising converting the structured identifier from the first set of ASCII characters to a second set of numeric values by subtracting 48 from the ASCII decimal value of each ASCII character.

11. A method for implementing a scalable data access architecture for data stored on a computer, executed on a computer processor, the method comprising:

determining a minimum number of members for an element of a structured identifier using a computer;

performing a modulo operation on the structured identifier, wherein the modulo operation uses a value corresponding to the minimum number of members of the element of the structured identifier and a number of N-leg search trees used to store the data; and

inserting the structured identifier into an N-leg search tree corresponding to a result of the modulo operation.

12. The method of claim 11 , wherein a last member of the element of the structured identifier corresponds to a child node containing a data structure.

13. The method of claim 12 , wherein the data structure comprises an element of a telephone routing table comprised of one or more prefix substrings and one or more routing elements associated with the one or more prefix substrings.

14. The method of claim 11 , wherein the N-leg search tree comprises telephony routing data.

15. The method of claim 14 , wherein the structured identifier is a telephone number.

16. The method of claim 15 , wherein the element of the structured identifier is a country code.

17. The method of claim 11 , wherein the structured identifier is a first set of ASCII characters, each ASCII character in the first set having an ASCII decimal value, the method further comprising converting the structured identifier from the first set of ASCII characters to a second set of numeric values by subtracting 48 from the ASCII decimal value of each ASCII character.

18. An apparatus for data access and distribution comprising:

a) at least one processor; and

b) at least one storage device storing processor-executable instructions which, when executed by the at least one processor, perform a method including:

storing data in one or more N-leg search trees;

determining a tree identifier from a given structured identifier;

traversing an N-leg search tree associated with the tree identifier to a given node within the N-leg search tree; and

accessing a data structure associated with a deepest valid traversed node, wherein the deepest valid traversed node is determined by:

(1) determining whether data stored at the given node is valid;

(2) when the data stored at the given node is determined to be valid, determining that the given node is the deepest valid traversed node; and

(3) when the data stored at the given node is determined to be not valid, traversing back up the N-leg search tree to a first parent node that stores valid data, and determining that the first parent node that stores valid data is the deepest valid traversed node.

19. The apparatus of claim 18 , wherein the act of traversing the N-leg search tree includes:

traversing the N-leg search tree associated with the tree identifier to the given node within the N-leg search tree, wherein the given node corresponds to a given element of a structured identifier;

accessing a child node of the given node, wherein the child node is associated with a next element of the structured identifier; and

repeating the traversing and accessing steps for each element of the structured identifier until at least one condition occurs, wherein the at least one condition is at least one of the child node is a dead-end node, the next element is the last element of the structured identifier, or no node corresponds to the given element.

20. The apparatus of claim 19 , wherein the act of determining the tree identifier includes:

determining a minimum number of members of the given element;

performing a modulo operation using a value corresponding to the minimum number of members of the given element of the structured identifier and a number of N-leg search trees used to store the data; and

using the result of the modulo operation as the tree identifier.

21. The apparatus of claim 18 , wherein the N-leg search tree stores telephone routing information and the method further includes:

performing telephone routing operations.

22. The apparatus of claim 21 , further comprising:

a telephone routing table comprised of one or more prefix substrings and one or more routing elements associated with the one or more prefix substrings.

Assignments (11)
RELEASE OF SECURITY INTEREST Recorded Jul 28, 2022
From: JPMORGAN CHASE BANK, N.A.
To: VONAGE AMERICA INC.; VONAGE HOLDINGS CORP.; VONAGE BUSINESS INC.; NEXMO INC.; TOKBOX, INC.
Reel/Frame 061002/0340 →
SECURITY INTEREST Recorded Nov 12, 2018
From: VONAGE BUSINESS INC.
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 047502/0432 →
CORRECTIVE ASSIGNMENT TO CORRECT THE LIST BY DELETING 13831728 13831785 14291602 13680382 14827548 14752086 13680067 14169385 14473289 14194220 14194438 14317743 PREVIOUSLY RECORDED ON REEL 038328 FRAME 501. ASSIGNOR(S) HEREBY CONFIRMS THE SALE, ASSIGNMENT, TRANSFER AND CONVEYANCE OF REMAINING PROPERTIES. Recorded Oct 28, 2016
From: VONAGE NETWORK LLC
To: VONAGE BUSINESS INC.
Reel/Frame 040540/0702 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 1, 2016
From: VONAGE NETWORK LLC
To: VONAGE BUSINESS INC.
Reel/Frame 038328/0501 →
CORRECTIVE ASSIGNMENT TO CORRECT THE PATENT APPLICATION NUMBER 13966486 PREVIOUSLY RECORDED ON REEL 033545 FRAME 0424. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY INTEREST. Recorded Jan 21, 2016
From: VONAGE HOLDINGS CORP.; VONAGE NETWORK LLC; VONAGE BUSINESS SOLUTIONS INC.; VONAGE AMERICA INC.
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 037570/0203 →
SECURITY INTEREST Recorded Jul 29, 2015
From: VONAGE HOLDINGS CORP.; VONAGE AMERICA INC.; VONAGE BUSINESS SOLUTIONS, INC.; VONAGE NETWORK LLC
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 036205/0485 →
SECURITY INTEREST Recorded Aug 14, 2014
From: VONAGE HOLDINGS CORP.; VONAGE NETWORK LLC; VONAGE BUSINESS SOLUTIONS INC.; VONAGE AMERICA INC.
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 033545/0424 →
RELEASE OF SECURITY INTEREST IN PATENTS (REEL/FRAME 025494/0550) Recorded Aug 1, 2011
From: BANK OF AMERICA, N.A.
To: VONAGE HOLDINGS CORP.; VONAGE NETWORK LLC
Reel/Frame 026679/0582 →
SECURITY AGREEMENT Recorded Aug 1, 2011
From: VONAGE HOLDINGS CORP.; VONAGE NETWORK LLC
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 026680/0816 →
SECURITY AGREEMENT Recorded Dec 15, 2010
From: VONAGE HOLDINGS CORP.; VONAGE NETWORK LLC
To: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 025494/0550 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 24, 2010
From: HUANG, KEVIN; CICCHINO, DOMENIC
To: VONAGE NETWORK LLC
Reel/Frame 024429/0165 →