System and method for structuring data in a computer system
A method and system for creating and searching a central linked list comprising a parent node which is situated at the center of a plurality of child nodes. Each child node has two double linked list pointers. One pointer points to the next child node, and the other pointer points to the parent node. Thus, matched data obtained at several child nodes moves immediately back to the parent simultaneously. The parent node contains the memory address and name of central linked list, a description of central linked list, and a description of the relationship between other parent nodes, as well as the relationship between each child node to its specific parent node. Each child node contains a node address, an attribute comprised of some or all of the stored data field and a link to the full data content that may reside on a file or in a database. Memory storage of the structure information is stored in system memory, such as, RAM. Thus, searching and comparison operations may be accomplished without the need to access a hard disk.
The invention relates to methods and systems for structuring data, and more particularly to a method and system for accessing and storing data of a centralized linked list data structure in a computer system.
BACKGROUND OF THE INVENTIONThere are many different forms of electronic data structures and each different data structure can have a myriad of implementations. One such data structure is in the form of a “list”—i.e., a grouping of ordered items that can be sequenced. A list that contains respective items and information to reach a prior or a subsequent item is referred to as a “linked list.” With a “single linked list,” each item only has a reference to the next list item. More sophisticated forms of electronic data structures are configured as a “double linked list” or “circular linked list” which consist of a chain of records (called nodes) in which the list is implemented by having a link to an adjacent data item.
The nodes of a linked list are connected like links of a chain; in the case of a circular linked list, the first pointer 12 is connected to last pointer 20 of the list illustrated in
Prior art linked list data structures, such as a double linked list and a circular linked list, operate systematically in the following manner. The beginning of the linked list is stored at head 8, which points to the first node 1. The first node 1 then points to the second node 2, and so forth, until reaching the last node 3. Though the linked list shown in
In addition, prior art linked lists are typically implemented in databases, and are therefore stored in permanent memory devices. While such permanent memory devices, such as disk drives and tape drives, can provide large amounts of memory storage, they have proved to be slow in storing and accessing data when large linked lists, or large sets of linked lists, are used. In addition, such linked lists are structured with one or more layers of lists requiring large amounts of sequential data processing time.
An example of a prior art linked list data structures is disclosed in U.S. Pat. No. 6,249,788, entitled “Structure for a Database.” The data structure described therein stores different data within an associated linked list in order to reduce the amount of sequential information searched. The described link list relates to a hierarchy of nodes consisting of a tree-structure which includes a root node, intermediate nodes and leaf nodes. An element of the root node establishes a link to a first intermediate node and then to subsequent intermediate node(s), which in turn link to a plurality of link nodes. Thus, such associated linked lists include sequential layers of data storage and therefore often require a great deal of processing time to search data of the linked list.
Prior art linked list data structures, such as that disclosed in U.S. patent application Publication No. 2002/0004793, entitled “Method and Apparatus for Organizing Data by Overlaying a Searchable Database with a Directory Tree Structure,” assign multiple links between nodes. Pointers are used to link related data items. However, searching related data items still follows a branched path across several child nodes before returning to a parent node. Each step in the process requires added processing time. Moreover, when pointer bugs occur, it is often difficult to identify where the crash has occurred. Each linked must be sequentially tested until the bug is found. Thus, the debugging process can be both time and labor intensive.
Accordingly, there remains an unmet need in data structures for a fast, efficient and reliable data structure which does not suffer from the drawbacks described above.
SUMMARY OF THE INVENTIONIn accordance with an embodiment of the invention, a central linked list comprises a parent node which is situated at the center of a plurality of child nodes. Each child node has two double linked list pointers. One pointer points to the next child node, and the other pointer points to the parent node. Thus, matched data obtained at several child nodes moves back to the parent simultaneously.
In accordance with another embodiment of the invention, the parent node contains the memory address and name of central linked list, a description of central linked list, and a description of the relationship between other parent nodes, as well as the relationship between each child node to its specific parent node. Each child node contains a node address, an attribute comprised of some or all of the stored data field and a link to the full data content that may reside on a file or in a database.
In accordance with yet another embodiment of the invention, memory storage of the structure information is stored in system memory, such as, random access memory (RAM). Thus, searching and comparison operations may be accomplished without the need to access data stored by a hard disk.
BRIEF DESCRIPTION OF THE DRAWINGSFurther objects, features and advantages of the invention will become apparent from the following detailed description taken in conjunction with the accompanying drawings showing illustrative embodiments of the invention, in which:
Memory storage of the structure information is stored in system memory, such as, in accordance with an embodiment of the invention, random access memory (RAM). Thus, searching and comparison operations may be accomplished without having to access a hard disk. As described more fully below, by remaining in system memory, processing time for storing and searching data is significantly decreased, as compared with effectuating such storing and searching in a system's hard drive or other storage device. In addition, extracting data from a hard disk only becomes necessary when a match based upon an attribute stored in system memory is found and the full data is not present in system memory.
Each child node 55 in central linked list 200 has two pointers—i.e., one pointer that points to the next node 76 (as shown in
The content of each child node 55 is made up of one of a predetermined number of variables. For example, if an image is captured, node 55 stores: the node memory address in RAM, a digital attribute of the image, and a link to the stored actual image data In this manner, as described more fully below with reference to
In accordance with an embodiment of the invention, parent node 80 stores text information relating to list 400, such as the address of list 400, the name of list 400, the number of child nodes associated with list 400, and the type of data associated with each of the child nodes. The type of data (or data type) may relate to whether the data is text data, numerical data (integers, real numbers, etc.), alphanumeric strings (such as radio frequency identification (RFID), etc.), data relating to images (img), fingerprints or a topic of information (salaries, test scores, etc.). In addition, parent node 80 stores information concerning the description of its relationship with associated child nodes 85-1 through 85-10, as well as its relationship with other parent nodes—e.g., node 90.
Child nodes 85-1 through 85-10 may store various types of data. For example, as illustrated in
The central linked list may be configured for groupings based on certain categories and/or other class properties, thereby allowing a system accessing the central linked list to perform relational data search in memory for increased security, performance and stability (as described below). Data may also be related based upon content and data type, as nodes are linked to central linked lists of the same group (also described below). For example, as illustrated in
It should be noted that, in accordance with an embodiment of the invention, central linked lists may be grouped together—i.e., one group of central linked lists may be related to another group of central linked lists. Thus, one or more child nodes 85 of central linked list 400 may, for example, be associated with parent node 80 as well as parent 90. Moreover, in addition to being associated with another child node of the same group of central linked lists (e.g., node 85-6 being associated with node 85-7), a child node, such as node 85-6 within a group of central linked lists can be related to another child node in a different group of central linked lists (not shown).
System and Process for Accessing Searching and Structuring Data
Computer 560 preferably includes standard hardware components, such as RAM 510, central processing unit (CPU) 530, and a read only memory (ROM) 535. The CPU 530 is preferably linked to the RAM 510 and ROM 535, either by means of a shared data bus, or dedicated connections. The CPU 530 may be embodied as a single commercially available processor. Alternatively, in another embodiment, the CPU 530 may be embodied as a number of such processors operating in parallel. ROM 535 is operable to store one or more instructions, discussed further below in conjunction with functions 511-520, which the CPU 530 is operable to retrieve, interpret and execute. ROM 535 preferably stores processes for searching and accessing (function 511) a central link list (e.g., list 200 or 400). In addition, ROM 535 stores processes for associating central linked lists and list nodes (function 512), provide self-teaching (513) and logic placement (514) functions, provide a display from memory protocol (515), manage database updates (516), manage datacells (517), configure performance and stability attributes (518), manage synchronization (519) and recovery protocols (520), as described below.
The CPU 530 preferably includes a control unit, an arithmetic logic unit (ALU), and a CPU 530 local memory storage device, such as, for example, a stackable cache or a plurality of registers, in a known manner. The control unit is operable to retrieve instructions from the ROM 535. The ALU is operable to perform a plurality of operations needed to carry out instructions. The CPU 530 local memory storage device is operable to provide high-speed storage used for storing temporary results and control information.
The processes of accessing data of central linked list 200 to facilitate the searching of stored data in nodes 50, 55 of list 200, comparing received data with such stored data and storing received data that is not included in the data structure are described with reference to
When data is transmitted by and received from an interface device 550, the content of the central linked list nodes are searched or compared, in accordance with an embodiment of the invention, to the input data of a hash function result (732), B− tree function result (734) or some other data searching algorithm (not shown). In addition to applying these search algorithms, the search or comparison can be performed using one of many available other comparison algorithms known in the art, such as B+ tree and/or AVL tree algorithms.
Referring to
CPU 520 verifies the data type identified in a parent node data field—e.g., by parent content attribute 62, and a search algorithm, such as B+ tree, B− tree, AVL tree and/or hash function algorithms, is applied at step 620.
Applying the search algorithm (620) comprises four steps which are illustrated in
By applying one or more of these algorithms, attributes of the verified data type of the received data and identified data types of the central linked list 200 are compared. Because the attribute information is stored in RAM 510, during the comparison, such system memory 510 (and not data from some other outside source, such as external database 580) is accessed.
In an embodiment of the invention, a hash function performs a transformation on an input and returns a number having a fixed length—the hash value. Properties of a hash function used in accordance with an embodiment of the invention include the ability to: (1) receive a variable-sized input and generate a fixed-size output, (2) compute a hash value relatively quickly for any input value, (3) be “one-way,” i.e., the input cannot be determined by knowing the hash value, and (4) be substantially collision-free. Hash functions satisfying these criteria include the message digest 5 (“MD5”) and secure hash algorithm (“SHA”)-1 algorithms.
The MD5 algorithm, for example, generates a 16-byte (128-bit) hash value and is substantially collision-free. The SHA-1 algorithm may generate a 20-byte (160-bit) hash value. The maximum input length of a data block to the SHA-1 algorithm is 264 bits (˜1.8×1019 bits). The design of SHA-1 is similar to that of MD5, but because its output is larger, it may be slower than MD5, although it is more collision-free. Depending on the system configuration for a given business requirements, any one or combination of the above mentioned algorithms (or other algorithms that are well known in the art) may be used for data search.
Returning to
Once the searched data is matched and ranked, the data is configured for storage (step 640) upon determining that such data does not already exist in memory. Thus, once the data has been downloaded, memory management configurations (644) and system management configurations (646) are considered for storing the data. Turning to
Memory management configuration 644 considers the amount of memory that is allocated for the data item (644-1) to be stored and data item type (644-1). In addition, external functions that are applied to the stored data item (644-3) are considered. Thus, if the stored data relates to salary information, external functions such as related tax information is associated thereto; or if the information relates to trading of stocks, information relating to the type of stock that is being traded is associated. In addition, information relating to linkages among related datacells (644-4) and related nodes (644-5) are also associated with the stored data.
System management configurations 646 are also considered when storing data items. For example, the type of security applied to data (e.g., who can access certain information) (646-1) is associated with the data that is being stored. Further, the manner in which different types of data is allocated to different components (e.g., text data to certain servers, numbers to other servers) is also considered (646-2). This is accomplished, in accordance with an embodiment of the invention, using the simple network management protocol (SNMP) (i.e., a conventional protocol for managing network devices), simple screen management protocol (SSMP) (i.e., a conventional communications protocol for text-based terminals), or the like. In addition, data synchronization protocols are employed (646-3) for, for example, data that may change—such as an employee's salary. Moreover, a protocol may be associated with data items respecting time dependent events (646-4), such as updates to stock prices, that are to occur at a predetermined frequency. Other configurations may also be established (i.e., custom requirements (646-5)) to provide such customized settings as desired by a user.
Upon completing the search, finding one or more matches and storing the received data, the search output is filtered (step 650)—i.e., ROM 535 determines whether the search results are to be stored or displayed—and the output is then transmitted to the appropriate location (step 660)—e.g., a user's interface device, such as printer 550-1, monitor of terminal 560-1, database 580, etc. More specifically, upon request by client or by server applications, via TCP/IP or some other qualified protocol, the content(s) of sibling linked list nodes, that is, nodes in the same central linked list (such as resulting linked list 750 of
It should be noted that database updates (function 516) for central linked list 200 or 400 may not necessarily be from an internally-created relational database management system (RDBMS), meaning created from the same server, to store all the information. Central linked list 200 or 400 may be used instead to download information and data from an external RDBMS, and to update or upload the information back to the RDBMS. This updating function saves system processing time and resources. In addition, the central linked list data structures described herein (200, 400) enable an automated data fusion functionality—i.e., the capability for a server accessing such data structure to be configured to fuse data from various data sources for searching data stored therein.
It should be further noted that the central linked list data structures is database-independent. Although central linked list functions may contain database query code in a single module, no sequential query language (SQL) code or equivalent code is required. Data querying is performed via software development kit (SDK) functions call. An SDK contains several functions that may be called to perform a query or a datafile search. As such, an SDK document is available outlining the parameters to be used for each function call within the SDK. For example, at the server level, the SDK is used to configure the linkage of the pointers from child node to child node, or child node to parent node. Upon completion of data download, a client computer may call an child_img_locator function within the SDK to access child nodes images via its parent.
Thus, accessing a database is performed by direct function calls from engine code. Accordingly, when loading data from database to memory buffer, information is stored in the form of central linked list specification. In accordance with an embodiment of the invention, the data may be accessed via the function calls from the SDK or application programming interface (API) provided. Because these API and SDK functions are derived from functional class libraries, the parameters are provided specific to the system configuration and the specific address of the central linked list, and/or central linked list content to be searched.
Additional System Functionality As illustrated in
System Reliability
Employing central linked list data structure 200 of
Relational and Association Functionality
Another aspect of the present invention includes data relation and associating functions (512) shown in
According to an embodiment of the central linked list, such as list 400, nodes 80, 85 continue to exist and are allocated in the heap with a call to malloc (i.e., memory allocation function or program to allocate memory from heap to create a linked list node header) until it is explicitly de-allocated by a call to free memory. The de-allocation function or program is effectuated to free memory from a linked list node header, thereby deleting the linked list. The data field 62, 64, 72, 74 contains content that is either an attribute or a full data description. Allocation steps therefore allocate resources for new central linked list nodes, while the de-allocation function is to release resources back to the system.
Child nodes 85 within central linked list group 400 are linked across all central linked list groups and inter-nodes. Thus, according to the hospital example described below, a data search for a missing patient can retrieve the patient's known image with images on surveillance cameras throughout the hospital. Logic and conditions are used for displaying, deleting, creating, and/or updating of central linked list child nodes, addresses, and content and to place various conditions on the nodes for search and retrieval, arithmetic and display. Because central linked list 400 resides in system virtual memory, logic and algorithms may be applied on real-time or close to real-time basis.
Further, central linked list functions allow each child node 85 within a central linked list group 400 to be linked and delinked from its parent node. Specifically, linking or de-linking functions are employed to relate or un-relate a central linked list node to another node. The functions form or terminate a relationship between the two nodes, whether it be a parent node to a child node, or a child node to another child node, or a parent node to another parent node. The central linked list groups are related and unrelated from one another. In addition, groups of central linked list nodes can be deleted, created and updated.
Self-Teaching and Logic Placement
As illustrated in
Performance and Stability Configuration
The performance and stability configuration function (518) of the present invention, shown in
Synchronization Management
Synchronization management functions (519) allow system 500 (of
Recovery Management
According to another feature of the present invention, in case of power failure or other total system failure, the central linked list can be configured to recover information at the restarting stage (function 520). The recovery function relies upon a setup procedure as a handling process.
When restarting the computer after a failure, the engine checks whether the central linked list history data file exists without corruption. If the central linked list history file exists without corruption, the restarting page is built from the meta buffer based on the central linked list history file. Thus, the recovery is much faster for not having to access a hard disk or other slow memory device. If the central linked list history file does not exist or is corrupted, the meta buffer contents are restored from the appropriate database(s), double-checking a log file for possible recovery.
Representative Application of Central Linked List As described above, central linked list data structures in accordance with the present invention, such as list 200 or 400, of
In accordance with an embodiment of the invention,
Thus, if, for example, the patient's friends or family members visits the patient at the hospital, each individual may be logically associated with the patient (i.e., grouped together as a linked list), positively identified via biometrics and facial recognition, located by RFID smart card, monitored and recorded movement about the hospital through, for example, the surveillance cameras. In the above scenario, in real time or close to real-time, the system stores the patient's facial image at different angles, records, RFID tag id, and fingerprint scan image in one datacell or one central linked list. Each linked list node stores an image/reading/record that belongs to that person, and various central linked list nodes may then be linked according to the pre-defined relationship with associated members.
The foregoing merely illustrates the principles of the invention. It will thus be appreciated that those skilled in the art will be able to devise numerous other arrangements which embody the principles of the invention and are thus within its spirit and scope.
For example, system 500 is disclosed herein in a form in which various functions are performed by discrete functional blocks. However, any one or more of these functions could equally well be embodied in an arrangement in which the functions of any one or more of those blocks or indeed, all of the functions thereof, are realized, for example, by one or more appropriately programmed processors in communication with a central linked list data structure described herein.
Claims
1. A data structure for organizing data, comprising:
- a parent node stored in a first memory;
- a first child node stored in a second memory, wherein said first child node stores a first data item;
- a second child node stored in a third memory, wherein said second child node stores a second data item;
- a first link connecting said parent node to said first child node;
- a second link connecting said first child node to said second child node; and
- a third link connecting said parent node to said second child node.
2. The data structure of claim 1, wherein said first child node stores a first content.
3. The data structure of claim 2, wherein said second child node stores a second content.
4. The data structure of claim 1, wherein said parent node has a first attribute describing said data structure.
5. The data structure of claim 4, wherein said first child node has a second attribute describing said first data item.
6. The data structure of claim 5, wherein said first link is comprised of a first pointer directing a program from said parent node to said first child node and a second pointer directing said program from said first child node to said parent node.
7. The data structure of claim 6, wherein said second link is comprised of a third pointer directing said program from said first child node to said second child node and a fourth pointer directing said program from said second child node to said first child node.
8. The data structure of claim 7, wherein said third link is comprised of a fifth pointer directing said program from said second child node to said parent node and a sixth pointer directing said program from said parent node to said second child node.
9. The data structure of claim 5, wherein said first memory has a first memory address and said second memory has a second memory address.
10. The data structure of claim 9, wherein said first pointer directs said program to said second memory address and said second pointer directs said program to said first memory address.
11. The data structure of claim 1, further comprising a second parent node, wherein said second parent node is linked to said parent node.
12. The data structure of claim 1, further comprising a second parent node, wherein said first child node is linked to said parent node and to said second parent node.
13. The data structure of claim 5, wherein said second child node has a third attribute describing said second data item.
14. The data structure of claim 13, wherein said second attribute and said third attribute describe a relationship between said first data item and said second data item, when said second attribute and said third attribute are logically related.
15. The data structure of claim 1, wherein said parent node, said first child node and second child node are stored in a plurality of memory devices.
16. A method for generating a data structure comprising:
- creating a parent node in a first memory, a first child node in a second memory and a second child node in a third memory;
- storing a first data item in said first child node;
- storing a second data item in said second child node; and
- linking said parent node to said first child node, said first child node to said second child node, and said parent node to said second child node.
17. The method of claim 16, wherein said first child node stores a first content.
18. The method of claim 17, wherein said second child node stores a second content.
19. The method of claim 16, further comprising associating a first attribute with said parent node, said attribute describing said data structure.
20. The method of claim 19, further comprising associating a second attribute with said first child node, said second attribute describing said first data item.
21. The method of claim 20, wherein said first link is comprised of a first pointer directing a program from said parent node to said first child node and a second pointer directing said program from said first child node to said parent node.
22. The method of claim 21, wherein said second link is comprised of a third pointer directing said program from said first child node to said second child node and a fourth pointer directing said program from said second child node to said first child node.
23. The method of claim 22, wherein said third link is comprised of a fifth pointer directing said program from said second child node to said parent node and a sixth pointer directing said program from said parent node to said second child node.
24. The method of claim 20, further comprising associating a first memory address with said first memory and a second memory address with said second memory.
25. The method of claim 24, wherein said first pointer directs said program to said second memory address and said second pointer directs said program to said first memory address.
26. The method of claim 16, further comprising creating a second parent node, and linking said second parent node to said parent node.
27. The method of claim 16, further comprising creating a second parent node, and linking said first child node to said parent node and to said second parent node.
28. The method of claim 20, further comprising associating a third attribute with said second child node, said third attribute describing said second data item, said second attribute and said third attribute are logically related.
29. The method of claim 28, wherein said second attribute and said third attribute describe a relationship between said first data item and said second data item, when said second attribute and said third attribute are logically related.
30. The method of claim 16, wherein said parent node, said first child node and second child node are created in a plurality of memory devices.
31. Computer executable software code stored on a computer readable medium, the code for creating a data structure, comprising:
- code for creating a parent node in a first memory, a first child node comprising a first data item in a second memory and a second child node comprising a second data item in a third memory; and
- code for linking said parent node to said first child node, said first child node to said second child node, and said parent node to said second child node.
32. The computer executable software code according to claim 31, wherein said first child node stores a first content.
33. The computer executable software code according to claim 32, wherein said second child node stores a second content.
34. The computer executable software code according to claim 31, further comprising code for associating a first attribute with said parent node, said attribute describing said data structure.
35. The computer executable software code according to claim 34, further comprising code for associating a second attribute with said first child node, said second attribute describing said first data item.
36. The computer executable software code according to claim 35, wherein said first link is comprised of a first pointer directing a program from said parent node to said first child node and a second pointer directing said program from said first child node to said parent node.
37. The computer executable software code according to claim 36, wherein said second link is comprised of a third pointer directing said program from said first child node to said second child node and a fourth pointer directing said program from said second child node to said first child node.
38. The computer executable software code according to claim 37, wherein said third link is comprised of a fifth pointer directing said program from said second child node to said parent node and a sixth pointer directing said program from said parent node to said second child node.
39. The computer executable software code according to claim 35, further comprising code for associating a first memory address with said first memory and a second memory address with said second memory.
40. The computer executable software code according to claim 39, wherein said first pointer directs said program to said second memory address and said second pointer directs said program to said first memory address.
41. The computer executable software code according to claim 31, further comprising code for creating a second parent node and linking said second parent node to said parent node.
42. The computer executable software code according to claim 31, further comprising code for creating a second parent node, and linking said first child node to said parent node and to said second parent node.
43. The computer executable software code according to claim 35, further comprising code for associating a third attribute with said second child node, said third attribute describing said second data item, said second attribute and said third attribute are logically related.
44. The computer executable software code according to claim 43, wherein said second attribute and said third attribute describe a relationship between said first data item and said second data item, when said second attribute and said third attribute are logically related.
45. The computer executable software code according to claim 31, wherein said parent node, said first child node and second child node are created in a plurality of memory devices.
46. A method for accessing data from a computer memory having a data structure, said data structure including a parent node, a first child node and a second child node, a first link connecting said parent node to said first child node, a second link connecting said first child node to said second child node, and a third link connecting said parent node to said second child node, said method comprising:
- receiving a request for accessing a data item, wherein said data item is stored in at least one of said first child node and said second child node;
- identifying at least one attribute associated with said data item to be accessed;
- identifying a parent node containing a reference to at least one of said first child node and said second child node, wherein said at least one of first child node and said second child node is configured for storing at least one data item associated with said attribute; and
- identifying which of said first child node and said second child node stores said data item.
47. The method of claim 46, further comprising reading said data item from a computer memory associated with said identified child node.
48. The method of claim 46, further comprising writing said data item to a computer memory associated with said identified child node.
49. The method of claim 46, wherein said at least one attribute relates to said type of said data item to be accessed.
50. The method of claim 49, wherein said type is selected from a group consisting of image data, fingerprint information, RFID information, text data, numerical data and alphanumeric string data.
51. A system for accessing data from a computer memory having a data structure, said data structure including a parent node, a first child node and a second child node, a first link connecting said parent node to said first child node, a second link connecting said first child node to said second child node, and a third link connecting said parent node to said second child node, said method comprising:
- an interface for receiving a request for accessing a data item, wherein said data item is stored in at least one of said first child node and said second child node; and
- a processor for identifying at least one attribute associated with said data item to be accessed, for identifying a parent node containing a reference to at least said first child node or said second child node, wherein said at least first child node or said second child node is configured for storing at least one data item associated with said attribute, and for identifying which of said at least first child node or said child node stores said data item.
52. The system of claim 51, wherein said processor is further configured for reading said data item from a computer memory associated with said identified child node.
53. The system of claim 5 1, wherein said processor is further configured for writing said data item to a computer memory associated with said identified child node.
54. The system of claim 51, wherein said at least one attribute relates to said type of said data item to be accessed.
55. The system of claim 54, wherein said type is selected from a group consisting of image data, fingerprint information, RFID information, text data, numerical data and alphanumeric string data.
56. Computer executable software code stored on a computer readable medium, the code for accessing data from a computer memory having a data structure, said data structure including a parent node, a first child node and a second child node, a first link connecting said parent node to said first child node, a second link connecting said first child node to said second child node, and a third link connecting said parent node to said second child node, comprising:
- code for receiving a request for accessing a data item, wherein said data item is stored in at least said first child node or said second child node;
- code for identifying at least one attribute associated with said data item to be accessed;
- identifying a parent node containing a reference to at least said first child node or said second child node, wherein said at least first child node or said second child node is configured for storing at least one data item associated with said attribute; and
- code for identifying which of said at least first child node or said child node stores said data item.
57. The computer executable software code according to claim 56, further comprising code for reading said data item from a computer memory associated with said identified child node.
58. The computer executable software code according to claim 56, further comprising code for writing said data item to a computer memory associated with said identified child node.
59. The computer executable software code according to claim 56, wherein said at least one attribute relates to said type of said data item to be accessed.
60. The computer executable software code according to claim 59, wherein said type is selected from a group consisting of image data, fingerprint information, RFID information, text data, numerical data and alphanumeric string data.
61. A data structure for organizing data, comprising:
- a parent node stored in a memory location;
- a plurality of N child nodes (C1, C2,..., CN) stored in a plurality of N corresponding memory locations, wherein N>2, wherein a plurality of said child nodes each store at least one data item;
- wherein said parent node comprises a pointer to each of said N child nodes, each of said child nodes comprises a pointer to said parent node, and each child node Ci, where 1<i<N, further comprises a pointer to the next child node Ci+1.
62. The data structure according to claim 61, wherein child node CN further comprises a pointer to child node C1.
63. The data structure according to claim 62, wherein each child node Ci further comprises a pointer to the precious child node Ci+1.
64. The data structure according to claim 63, wherein each child node Ci further comprises a pointer to child node CN.
65. The data structure according to claim 61, wherein at least two of said plurality of N memory locations are on a single chip.
66. The data structure according to claim 62, wherein at least one of said plurality of N child nodes further comprises content.
67. The data structure according to claim 63, wherein at least one child node further comprises an attribute describing a data item stored in a memory location different than the memory location of said at least one child node.
68. The data structure according to claim 61 wherein said data item comprises an image.
69. The data structure for organizing data, comprising:
- a parent node stored in a first memory location;
- a first child node stored in a second memory location, wherein said first child node comprises a first data item;
- a second child node stored in a third memory location, wherein said second child node comprises a data item; and
- a third child node stored in a fourth memory location;
- wherein said parent node comprises a pointer to each of said first, second and third child nodes; said first child node comprises a pointer to said parent node and said second child node; said second child node comprises a pointer to said parent node and said third child node; and said third child node comprises a pointer to said parent node.
70. The data structure according to claim 69, wherein said second child node further comprises a pointer to said first child node.
71. A data structure according to claim 2, wherein said content comprises an image.
72. A data structure according to claim 71, wherein said image comprises a facial image.
73. A data structure according to claim 71 wherein said image comprises a fingerprint.
Type: Application
Filed: Jul 16, 2004
Publication Date: Jan 20, 2005
Inventor: Jonathan Vu (Fairfax, VA)
Application Number: 10/892,774