IP Library Granted Patent US 8,626,689
Granted Patent B1
US 8,626,689 · App. 13/196,484 · Granted Jan 7, 2014

Data pattern analysis using optimized deterministic finite automation

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,626,689
App. No.
13/196,484
Granted
Jan 7, 2014
Kind
B1
Abstract

Techniques for data pattern analysis using deterministic finite automaton are described herein. In one embodiment, a number of transitions from a current node to one or more subsequent nodes representing one or more sequences of data patterns is determined, where each of the current node and subsequent nodes is associated with a deterministic finite automaton (DFA) state. A data structure is dynamically allocated for each of the subsequent nodes for storing information associated with each of the subsequent nodes, where data structures for the subsequent nodes are allocated in an array maintained by a data structure corresponding to the current node if the number of transitions is greater than a predetermined threshold. Other methods and apparatuses are also described.

Claims (39)

1. A method for data pattern analysis, the method comprising:

a processor executing instructions residing in memory, the processor determining a number of transitions from a current node to one or more subsequent nodes representing one or more sequences of data patterns, each of the current node and subsequent nodes being associated with a deterministic finite automaton (DFA) state; and

the processor dynamically allocating a data structure for each of the subsequent nodes for storing information associated with each of the subsequent nodes in memory, wherein data structures for the subsequent nodes are dynamically allocated a first type of data structure to optimize performance when the number of transitions is greater than a predetermined threshold, and wherein data structures for the subsequent nodes are dynamically allocated a second type of data structure to optimize memory utilization when the number of transitions is less than or equal to the predetermined threshold.

2. The method of claim 1 , wherein the data structures for the subsequent nodes corresponding to the first type of data structure is an array maintained by a data structure corresponding to the current node, and wherein the data structures for the subsequent nodes corresponding to the second type of data structure are dynamically allocated in a chain manner with a reference maintained by the data structure corresponding to the current node.

3. The method of claim 2 , wherein each element of the array is directly accessible from the data structure corresponding to the current node.

4. The method of claim 1 , wherein the data structures for the subsequent nodes corresponding to the first type of data structure is an array maintained by a data structure corresponding to the current node, and wherein the data structures for the subsequent nodes corresponding to the second type of data structure are dynamically allocated in a linked-list manner, wherein each of the data structures dynamically allocated in a linked-list manner includes a first reference pointer linked to a previous data structure and a second reference pointer linked to a next data structure.

5. The method of claim 1 , further comprising determining whether each of the subsequent nodes includes a single child node, wherein the data structures for the subsequent nodes corresponding to the first type of data structure are allocated in an array maintained by a data structure corresponding to the current node when each of the subsequent nodes includes a single child node.

6. The method of claim 5 , further comprising allocating an array for storing matched data for the subsequent nodes and accessible by the data structure of the current node, each element of the array corresponding to one subsequent node.

7. A non-transitory computer readable storage medium having embodied thereon a program executable by a processor to perform a method for data pattern analysis, the method comprising:

determining a number of transitions from a current node to one or more subsequent nodes representing one or more sequences of data patterns, each of the current node and subsequent nodes being associated with a deterministic finite automaton (DFA) state; and

dynamically allocating a data structure for each of the subsequent nodes for storing information associated with each of the subsequent nodes in memory, wherein data structures for the subsequent nodes are dynamically allocated a first type of data structure to optimize performance when the number of transitions is greater than a predetermined threshold and wherein data structures for the subsequent nodes are dynamically allocated a second type of data structure to optimize memory utilization when the number of transitions is less than or equal to the predetermined threshold.

8. The non-transitory computer readable storage medium of claim 7 , wherein the data structures for the subsequent nodes corresponding to the first type of data structure is an array maintained by a data structure corresponding to the current node, and wherein the data structures for the subsequent nodes corresponding to the second type of data structure are dynamically allocated in a chain manner with a reference maintained by the data structure corresponding to the current node.

9. The non-transitory computer readable storage medium of claim 8 , wherein each element of the array is directly accessible from the data structure corresponding to the current node.

10. The non-transitory computer readable storage medium of claim 7 , wherein the data structures for the subsequent nodes corresponding to the first type of data structure is an array maintained by a data structure corresponding to the current node, and wherein the data structures for the subsequent nodes corresponding to the second type of data structure are dynamically allocated in a linked-list manner, wherein each of the data structures dynamically allocated in a linked-list manner includes a first reference pointer linked to a previous data structure and a second reference pointer linked to a next data structure.

11. The non-transitory computer readable storage medium of claim 7 , wherein the method further comprising determining whether each of the subsequent nodes includes a single child node, wherein the data structures for the subsequent nodes corresponding to the first type of data structure are allocated in an array maintained by a data structure corresponding to the current node when each of the subsequent nodes includes a single child node.

12. The non-transitory computer readable storage medium of claim 11 , wherein the method further comprising allocating an array for storing matched data for the subsequent nodes and accessible by the data structure of the current node, each element of the array corresponding to one subsequent node.

13. A data processing system, the system comprising:

a processor; and

a memory for storing instructions, which when executed from the memory, cause the processor to determine a number of transitions from a current node to one or more subsequent nodes representing one or more sequences of data patterns, each of the current node and subsequent nodes being associated with a deterministic finite automaton (DFA) state, and the processor dynamically allocating a first type of data structure to optimize performance or a second type of data structure to optimize memory utilization for each of the subsequent nodes for storing information associated with each of the subsequent nodes, wherein data structures for the subsequent nodes corresponding to the first data structure are dynamically allocated in an array maintained by a data structure corresponding to the current node when the number of transitions is greater than a predetermined threshold, and wherein data structures for the subsequent nodes corresponding to the second data structure are dynamically allocated in a chain manner or in a linked-list manner when the number of transitions is less than or equal to the predetermined threshold.

14. A method for data pattern analysis, the method comprising:

a processor executing instructions residing in memory, the processor determining whether each of one or more subsequent nodes transitioned from a current node includes a single child node, the current node and subsequent nodes representing one or more sequences of data patterns, wherein each of the current node and subsequent nodes is associated with a deterministic finite automaton (DFA) state; and

the processor dynamically allocating a data structure for each of the subsequent nodes for storing information associated with each of the subsequent nodes in memory, wherein data structures for the subsequent nodes are dynamically allocated in an array to optimize performance wherein the data structures in the array are maintained by a data structure corresponding to the current node when each of the subsequent nodes includes a single child node, and wherein data structures for the subsequent nodes are dynamically allocated a second type of data structure to optimize memory utilization when the number of transitions is less than or equal to the predetermined threshold.

15. The method of claim 14 , wherein the data structures for the subsequent nodes corresponding to the second type of data structure are dynamically allocated in a chain manner with a reference maintained by the data structure corresponding to the current node.

16. The method of claim 14 , wherein the data structures for the subsequent nodes corresponding to the second type of data structure are dynamically allocated in a linked-list manner, wherein each of the data structures includes a first reference pointer linked to a previous data structure and a second reference pointer linked to a next data structure.

17. The method of claim 14 , wherein each element of the array is directly accessible from the data structure corresponding to the current node.

18. A non-transitory computer readable storage medium for storing instructions embodied thereon a program executed by a processor to perform a method for data pattern analysis, the method comprising:

determining whether each of one or more subsequent nodes transitioned from a current node includes a single child node, the current node and subsequent nodes representing one or more sequences of data patterns, wherein each of the current node and subsequent nodes is associated with a deterministic finite automaton (DFA) state;

determining a number of transitions from the current node to the one or more subsequent nodes representing one or more sequences of data patterns; and

dynamically allocating a data structure for each of the subsequent nodes for storing information associated with each of the subsequent nodes, wherein data structures for the subsequent nodes are dynamically allocated in an array to optimize performance, the data structures for the subsequent nodes maintained by a data structure corresponding to the current node when each of the subsequent nodes includes a single child node, and when the number of transitions is greater than a predetermined threshold and wherein data structures for the subsequent nodes are dynamically allocated a second type of data structure to optimize memory utilization when the number of transitions is less than or equal to the predetermined threshold.

19. The non-transitory computer readable storage medium of claim 18 , wherein the data structures for the subsequent nodes corresponding to the second type of data structure are dynamically allocated in a chain manner with a reference maintained by the data structure corresponding to the current node.

20. The non-transitory computer readable storage medium of claim 19 , wherein the data structures for the subsequent nodes corresponding to the second type of data structure are dynamically allocated in a linked-list manner, wherein each of the data structures includes a first reference pointer linked to a previous data structure and a second reference pointer linked to a next data structure.

21. A method for data pattern analysis, the method comprising:

a processor executing instruction residing in memory, the processor determining a relationship of each of one or more child nodes transitioned from a root parent node include a distance between each of the child nodes and the root parent node, the root parent node and child nodes representing one or more sequences of data patterns, wherein each of the root parent node and child nodes is associated with a deterministic finite automaton (DFA) state; and

the processor dynamically allocating a data structure for each of the child nodes for storing information associated with each of the child nodes in memory, wherein a data structure for a child node is dynamically allocated in an array to optimize performance when the distance between the child node and the root parent node is less than a predetermined threshold or in a linked-list manner to optimize memory utilization when the distance between the child node and the root parent node is greater than or equal to a predetermined threshold.

22. The method of claim 21 , wherein the distance between the child node and the root parent node is represented by a number of intermediate nodes between the child node and the root parent node.

23. A non-transitory computer readable storage medium having embodied thereon a program executable cause the to perform a method for data pattern analysis, the method comprising:

determining a relationship of each of one or more child nodes transitioned from a root parent node include a distance between each of the child nodes and the root parent node, the root parent node and child nodes representing one or more sequences of data patterns, wherein each of the root parent node and child nodes is associated with a deterministic finite automaton (DFA) state; and

dynamically allocating a data structure for each of the child nodes for storing information associated with each of the child nodes, wherein a data structure for a child node is allocated either in an array to optimize performance when the distance between the child node and the root parent node is less than a predetermined threshold or in a linked-list manner to optimize memory utilization when the distance between the child node and the root parent node is greater than or equal to a predetermined threshold.

24. The non-transitory computer readable storage medium of claim 23 , wherein the distance between the child node and the root parent node is represented by a number of intermediate nodes between the child node and the root parent node.

Assignments (20)
FIRST LIEN IP SUPPLEMENT Recorded Jun 30, 2025
From: SONICWALL US HOLDINGS INC.
To: UBS AG, STAMFORD BRANCH, AS COLLATERAL AGENT
Reel/Frame 071777/0641 →
RELEASE OF SECOND LIEN SECURITY INTEREST IN PATENTS RECORDED AT RF 046321/0393 Recorded Jun 16, 2025
From: UBS AG, STAMFORD BRANCH, AS COLLATERAL AGENT
To: SONICWALL US HOLDINGS INC.
Reel/Frame 071625/0887 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Jun 7, 2018
From: SONICWALL US HOLDINGS INC.
To: UBS AG, STAMFORD BRANCH, AS COLLATERAL AGENT
Reel/Frame 046321/0393 →
FIRST LIEN PATENT SECURITY AGREEMENT Recorded Jun 7, 2018
From: SONICWALL US HOLDINGS INC.
To: UBS AG, STAMFORD BRANCH, AS COLLATERAL AGENT
Reel/Frame 046321/0414 →
RELEASE OF FIRST LIEN SECURITY INTEREST IN PATENTS RECORDED AT R/F 040581/0850 Recorded May 22, 2018
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
To: QUEST SOFTWARE INC. (F/K/A DELL SOFTWARE INC.); AVENTAIL LLC
Reel/Frame 046211/0735 →
CHANGE OF NAME Recorded Dec 18, 2017
From: DELL SOFTWARE INC.
To: QUEST SOFTWARE INC.
Reel/Frame 044890/0009 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE PREVIOUSLY RECORDED AT REEL: 040587 FRAME: 0624. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Nov 28, 2017
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: QUEST SOFTWARE INC. (F/K/A DELL SOFTWARE INC.); AVENTAIL LLC
Reel/Frame 044811/0598 →
CORRECTIVE ASSIGNMENT TO CORRECT THE THE NATURE OF CONVEYANCE PREVIOUSLY RECORDED AT REEL: 041073 FRAME: 0001. ASSIGNOR(S) HEREBY CONFIRMS THE INTELLECTUAL PROPERTY ASSIGNMENT.. Recorded Apr 5, 2017
From: QUEST SOFTWARE INC.
To: SONICWALL US HOLDINGS INC.
Reel/Frame 042168/0114 →
INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Jan 23, 2017
From: QUEST SOFTWARE INC.
To: SONICWALL US HOLDINGS, INC.
Reel/Frame 041073/0001 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Nov 10, 2016
From: DELL SOFTWARE INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040587/0624 →
FIRST LIEN PATENT SECURITY AGREEMENT Recorded Nov 9, 2016
From: DELL SOFTWARE INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040581/0850 →
RELEASE OF SECURITY INTEREST IN CERTAIN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (040039/0642) Recorded Oct 31, 2016
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
To: AVENTAIL LLC; DELL PRODUCTS L.P.; DELL SOFTWARE INC.
Reel/Frame 040521/0016 →
RELEASE OF SECURITY INTEREST Recorded Oct 31, 2016
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: AVENTAIL LLC; DELL PRODUCTS, L.P.; DELL SOFTWARE INC.
Reel/Frame 040521/0467 →
SECURITY AGREEMENT Recorded Sep 14, 2016
From: AVENTAIL LLC; DELL PRODUCTS, L.P.; DELL SOFTWARE INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040030/0187 →
SECURITY AGREEMENT Recorded Sep 14, 2016
From: AVENTAIL LLC; DELL PRODUCTS L.P.; DELL SOFTWARE INC.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 040039/0642 →
MERGER Recorded Dec 14, 2015
From: SONICWALL L.L.C.
To: DELL SOFTWARE INC.
Reel/Frame 037285/0873 →
CONVERSION AND NAME CHANGE Recorded Dec 14, 2015
From: SONICWALL, INC.
To: SONICWALL L.L.C.
Reel/Frame 037289/0202 →
CHANGE OF NAME Recorded Sep 5, 2013
From: PSM MERGER SUB (DELAWARE), INC.
To: SONICWALL, INC.
Reel/Frame 031141/0957 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 5, 2013
From: DUBROVSKY, ALEKSANDER; BRADY, JUSTIN MICHAEL; YANOVSKY, ROMAN; YANOVSKY, BORIS
To: SONICWALL, INC.
Reel/Frame 031141/0820 →
MERGER Recorded Sep 5, 2013
From: SONICWALL, INC.
To: PSM MERGER SUB (DELAWARE), INC. C/O THOMA BRAVO, LLC
Reel/Frame 031141/0890 →