Patent Publication Number: US-10783127-B2

Title: Componentized data storage

Description:
RELATED APPLICATION(S) 
     The present application claims the benefit of and priority to a Provisional Patent Application Ser. No. 62/181,139, filed Jun. 17, 2015, and titled “Componentized Data Storage,” which is hereby incorporated fully by reference into the present application. 
    
    
     BACKGROUND 
     Data files often have several different types of data stored within them, such as text, metadata, and images, for example. However, storing different data types together in the same data file can make later retrieval of the data challenging. For instance, search algorithms developed to look for text may not effectively identify data stored in tables or as text accompanying images. As a result, the conventional approach to storing data can be inefficient for large-scale content searching, post-processing, and indexing. 
     SUMMARY 
     There are provided systems and methods for performing componentized data storage, substantially as shown in and/or described in connection with at least one of the figures, and as set forth more completely in the claims. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  shows a diagram of one exemplary implementation of a computer system for performing componentized data storage; 
         FIG. 2  shows another exemplary implementation of a computer system for performing componentized data storage; 
         FIG. 3  is a flowchart presenting an exemplary method for use by a computer system for performing componentized data storage; 
         FIG. 4  shows a more detailed example of the operation of a data componentization unit suitable for use in the computer systems of  FIG. 1  and  FIG. 2 , according to one exemplary implementation; and 
         FIG. 5  shows an exemplary database and database entry included in a computer system for performing componentized data storage, according to one implementation. 
     
    
    
     DETAILED DESCRIPTION 
     The following description contains specific information pertaining to implementations in the present disclosure. One skilled in the art will recognize that the present disclosure may be implemented in a manner different from that specifically discussed herein. The drawings in the present application and their accompanying detailed description are directed to merely exemplary implementations. Unless noted otherwise, like or corresponding elements among the figures may be indicated by like or corresponding reference numerals. Moreover, the drawings and illustrations in the present application are generally not to scale, and are not intended to correspond to actual relative dimensions. 
     The present application describes systems and methods for performing componentized data storage. The systems and methods disclosed herein may receive a data file including multiple data types, and may parse that data file to identify the different types of data it contains. According to implementations of the present inventive concepts, the data file including multiple data types is then transformed into data components corresponding respectively to the multiple data types. Those data components, in turn, are used to generate database entries that are saved in databases segregated by data type, where the database entries can be searched, accessed, and modified. Consequently, the componentized data storage solution disclosed in the present application can increase the efficiency and effectiveness with which large-scale content searching, post-processing, and indexing of data is performed. 
     Referring to  FIG. 1 ,  FIG. 1  shows a diagram of one exemplary implementation of a computer system for performing componentized data storage. As shown in  FIG. 1 , computer system  102  is utilized in computing environment  100 , and includes hardware processor  104 , and system memory  106  having data componentization unit  120  and databases  112 ,  114 ,  116 , and  118  stored therein. In addition, data componentization unit  120  is shown to include data resolution module  122  and data archiving module  124 . 
     As further shown in  FIG. 1 , communication environment  100  also includes communication network  130  interactively linking computer system  102  with backup databases  132 ,  134   a , and  134   b , as well as client system  140 , via network communication links  126 . Also shown in  FIG. 1  are data files  150   a ,  150   b , and  150   c  residing on client system  140 , and user  160  of client system  140 . Each of data files  150   a ,  150   b , and  150   c , is shown to include multiple data types. For example, data file  150   a  includes data types  152   a ,  154   a ,  156   a , and  158   a , which may correspond respectively to text, images, tables, and metadata, for example. Moreover, data file  150   b  includes data types  152   b ,  156   b , and  158   b , which may analogously correspond respectively to text, tables, and metadata, while data file  150   c  includes data types  152   c ,  154   c , and  156   c , which may analogously correspond respectively to text, images, and tables. 
     It is noted that although  FIG. 1  depicts data componentization unit  120  and databases  112 ,  114 ,  116 , and  118  as being mutually co-located in system memory  106 , that representation is merely provided as an aid to conceptual clarity. More generally, computer system  102  may include one or more computing platforms, such as computer servers for example, which may be co-located, or may form an interactively linked but distributed system, such as a cloud based system, for instance. As a result, hardware processor  104  and system memory  106  may correspond to distributed processor and memory resources within computer system  102 . Thus, it is to be understood that data componentization unit  120  and one or more of databases  112 ,  114 ,  116 , and  118  may be stored remotely from one another within the distributed memory resources of computer system  102 . 
     According to the implementation shown by  FIG. 1 , system user  160  may utilize client system  140  to interact with computer system  102  over communication network  130 . In one such implementation, computer system  102  may correspond to one or more web servers, accessible over a packet network such as the Internet, for example. Alternatively, computer system  102  may correspond to one or more computer servers supporting a local area network (LAN), or included in another type of limited distribution network. Although client system  140  is shown as a personal computer (PC) in  FIG. 1 , that representation is also provided merely as an example. In other implementations, client system  140  may be any other suitable mobile or stationary computing device or system. 
     Referring to  FIG. 2 ,  FIG. 2  shows a more detailed exemplary implementation of client system  240 , which may itself be configured to perform componentized data storage. Computing environment  200  in  FIG. 2  includes client system  240  interactively connected to computer system  202  over network communication link  226 . As shown in  FIG. 2 , computer system  202  includes hardware processor  204 , and system memory  206  storing data componentization unit  220   a  including data resolution module  222   a  and data archiving module  224   a , as well as databases  212   a ,  214   a ,  216   a , and  218   a . As further shown in  FIG. 2 , client system  240  includes client hardware processor  244 , and client system memory  246  storing data componentization unit  220   b  including data resolution module  222   b  and data archiving module  224   b , as well as databases  212   b ,  214   b ,  216   b , and  218   b.    
     Network communication link  226 , and computer system  202  including hardware processor  204  and system memory  206  correspond in general to network communication links  126 , and computer system  102  including hardware processor  104  and system memory  106 , in  FIG. 1 . In addition, data componentization unit  220   a  including data resolution module  222   a  and data archiving module  224   a , in  FIG. 2 , corresponds to data componentization unit  120  including data resolution module  122  and data archiving module  124 , in  FIG. 1 . In other words, data componentization unit  220   a , data resolution module  222   a , and data archiving module  224   a  may share any of the characteristics attributed to corresponding data componentization unit  120 , data resolution module  122 , and data archiving module  124  in the present application. Moreover, databases  212   a ,  214   a ,  216   a , and  218   a  correspond respectively in general to databases  112 ,  114 ,  116 , and  118 , in  FIG. 1 , and may share any of the characteristics attributed to those corresponding features in the present application. 
     Client system  240  corresponds in general to client system  140 , in  FIG. 1 . Moreover, data componentization unit  220   b  including data resolution module  222   b  and data archiving module  224   b  corresponds to data componentization unit  120 / 220   a  including data resolution module  122 / 222   a  and data archiving module  124 / 224   a . As a result, data componentization unit  220   b , data resolution module  222   b , and data archiving module  224   b  may share any of the characteristics attributed to corresponding data componentization unit  120 / 220   a , data resolution module  122 / 222   a , and data archiving module  124 / 224   a  in the present application. In addition, databases  212   b ,  214   b ,  216   b , and  218   b  correspond respectively in general to databases  112 / 212   a ,  114 / 214   a ,  116 / 216   a , and  118 / 218   a  and may share any of the characteristics attributed to those corresponding features in the present application. 
     According to the exemplary implementation shown in  FIG. 2 , data componentization unit  220   b  including data resolution module  222   b  and data archiving module  224   b , as well as databases  212   b ,  214   b ,  216   b , and  218   b  are located in client system memory  246 , having been received from computer system  202  via network communication link  226 . In one implementation, network communication link  226  corresponds to transfer of data componentization unit  220   b  and databases  212   b ,  214   b ,  216   b , and  218   b  over a packet network, for example. Once transferred, for instance by being downloaded over network communication link  226 , data componentization unit  220   b  and databases  212   b ,  214   b ,  216   b , and  218   b  may be persistently stored in client system memory  246  and may be executed locally on client system  240  by client hardware processor  244 . 
     Client hardware processor  244  may be the central processing unit (CPU) for client system  240 , for example, in which role client hardware processor  244  runs the operating system for client system  240  and executes data componentization unit  220   b . In the exemplary implementation of  FIG. 2 , a user of client system  240 , such as system user  160 , in  FIG. 1 , can utilize data componentization unit  210   b  on client system  240  to generate componentized data for selective storage on one or more of databases  212   b ,  214   b ,  216   b , and  218   b.    
       FIGS. 1 and 2  will now be further described by reference to  FIG. 3 ,  FIG. 4 , and  FIG. 5 .  FIG. 3  presents flowchart  370  describing an exemplary method for use by a computer system for performing componentized data storage.  FIG. 4  shows a more detailed example of the operation of a data componentization unit corresponding to data componentization unit  120 / 220   a / 220   b , in  FIG. 1 / 2 .  FIG. 5  shows an exemplary database and database entry utilized for componentized data storage, according to one implementation. With respect to the method outlined in  FIG. 3 , it is noted that certain details and features have been left out of flowchart  370  in order not to obscure the discussion of the inventive features in the present application. 
     Referring to  FIG. 3  in combination with  FIGS. 1 and 2 , flowchart  370  begins with receiving a data file including multiple data types (action  372 ). Hardware processor  104 / 204 / 244  of system  102 / 202 / 240  may be configured to execute data componentization unit  120 / 220   a / 220   b  to receive any of data files  150   a ,  150   b ,  150   c , for example. 
     Diagram  400 , in  FIG. 4 , shows data componentization unit  420  including data resolution module  422  and data archiving module  424 , and receiving data file  450   a  including data types  452   a ,  454   a ,  456   a , and  458   a . Data componentization unit  420  corresponds in general to data componentization unit  120 / 220   a / 220   b  in  FIG. 1 / 2 , and may share any of the characteristics attributed to that corresponding feature in the present application. Moreover, data file  450   a  and data types  452   a ,  454   a ,  456   a , and  458   a  correspond respectively in general to data file  150   a  and data types  152   a ,  154   a ,  156   a , and  158   a , and may share any of the characteristics attributed to those corresponding features in the present application. Also shown in  FIG. 4  are database entries  482   a ,  484   a ,  486   a ,  488   a  generated by data componentization unit  120 / 220   a / 220   b / 420 , and which are further described below. 
     As shown in  FIG. 4 , data file  450   a  may include data types  452   a ,  454   a ,  456   a , and  458   a  in the form of text data  452   a , images data  454   a , tables data  456   a , and metadata  458   a . According to one implementation, for example, hardware processor  104 / 204 / 244  may execute data componentization unit  120 / 220   a / 220   b / 420  to receive data file  150   a / 450   a  including text data  152   a / 452   a , images data  154   a / 454   a , tables data  156   a / 456   a , and metadata  158   a / 458   a . In addition, hardware processor  104 / 204 / 244  may be further configured to execute data componentization unit  120 / 220   a / 220   b / 420  to parse data file  150   a / 450   a  and to identify the different data types stored as text data  152   a / 452   a , images data  154   a / 454   a , tables data  156   a / 456   a , and metadata  158   a / 458   a.    
     Flowchart  370  continues with transforming data file  150   a / 450   a  into data components corresponding respectively to data types  152   a / 452   a ,  154   a / 454   a ,  156   a / 456   a , and  158   a / 458   a  (action  374 ). Hardware processor  104 / 204 / 244  may be configured to execute data componentization unit  120 / 220   a / 220   b / 420  to transform data file  150   a / 450   a  containing data types  152   a / 452   a ,  154   a / 454   a ,  156   a / 456   a , and  158   a / 458   a  into data components corresponding respectively to each data type. For example, data componentization unit  120 / 220   a / 220   b / 420 , when executed by hardware processor  104 / 204 / 244 , can utilize data resolution module  422  to transform data file  150   a / 450   a  into four data components. Those four data components would include a first data component corresponding to text data  152   a / 452   a , a second data component corresponding to images data  154   a / 254   a , a third data component corresponding to tables data  156   a / 456   a , and a fourth data component corresponding to metadata  158   a / 458   a.    
     Flowchart  370  continues with generating database entries  482   a ,  484   a ,  486   a , and  488   a  each including one of the data components (action  376 ). Hardware processor  104 / 204 / 244  may be configured to execute data componentization unit  120 / 220   a / 220   b / 420  to generate database entries  482   a ,  484   a ,  486   a , and  488   a  each including one of the data components corresponding respectively to data types  152   a / 452   a ,  154   a / 454   a ,  156   a / 456   a , and  158   a / 458   a . For example, data componentization unit  120 / 220   a / 220   b / 420 , when executed by hardware processor  104 / 204 / 244 , can utilize data archiving module  424  to generate database entries  482   a ,  484   a ,  486   a , and  488   a.    
     As shown in  FIG. 4 , according to the present specific example, four database entries are generated. Those four database entries are text database entry  482   a  including the first data component corresponding to text data  152   a / 452   a , images database entry  484   a  including the second data component corresponding to images data  154   a / 454   a , tables database entry  486   a  including the third data component corresponding to tables data  156   a / 456   a , and metadata database entry  488   a  including the fourth data component corresponding to metadata  158   a / 458   a.    
     Flowchart  370  can conclude with storing each of database entries  482   a ,  484   a ,  486   a , and  488   a  in one of databases  112 / 212   a / 212   b ,  114 / 214   a / 214   b ,  116 / 216   a / 216   b , or  118 / 218   a / 218   b  based on the data type corresponding to the data component each database entry contains (action  378 ). Hardware processor  104 / 204 / 244  may be configured to execute data componentization unit  120 / 220   a / 220   b / 420  to store each of database entries  482   a ,  484   a ,  486   a , and  488   a . For example, and as shown in  FIG. 4 , text database entry  482   a  is directed to database  112 / 212   a / 212   b  for storage, while each of images database entry  484   a , tables database entry  486   a , and metadata database entry  488   a  are directed to different databases based on the data type corresponding to the data component each database entry contains. 
     Alternatively, or in addition, hardware processor  104 / 204 / 244  may be configured to execute data componentization unit  120 / 220   a / 220   b / 420  to perform differential backup of data stored in any or all of databases  112 / 212   a / 212   b ,  114 / 214   a / 214   b ,  116 / 216   a / 216   b , and  118 / 218   a / 218   b . For example, referring to  FIG. 4  in combination with  FIG. 1 , text database entry  482   a  may be directed to backup text database  132 , which is depicted as an external database, remote from system  102 / 202 / 240 , but accessible via communication network  130 . Moreover, in some implementations, it may be advantageous or desirable to replicate the differential backups on multiple remote backup databases. For example, images database entry  484   a  may be directed to each of backup images databases  134   a  and  134   b.    
     It is noted that in addition to enabling differential and distributed backup of data, based on data type, the present inventive principles can also be utilized to provide location based storage, based on data type. Thus, search requests for text data may be directed exclusively to backup text database  132 , while search requests for images data may be directed to either of backup images databases  134   a  or  134   b . It is further noted that although  FIG. 1  and  FIG. 4  explicitly depict differential backup of text data and images data, in other implementations, differential backup and remote storage of data may be performed analogously for tables database entry  486   a  and metadata database entry  488   a . As a result, during periods of intensive searching or heavy post-processing of data corresponding to database entries  482   a ,  482   b ,  482   c , and  482   d , communications traffic can be advantageously distributed across the resources of communication network  130 . 
     Referring to  FIG. 5 ,  FIG. 5  shows exemplary database  514  having database entries  584   a  and  584   c  stored therein. Database  514  corresponds in general to database  114 / 214   a / 214   b  in  FIGS. 1 / 2 , and may share any of the characteristics attributed to that corresponding feature in the present application. In addition, database entry  584   a  corresponds in general to images database entry  484   a , in  FIG. 4 , and may share any of the characteristics attributed to that corresponding feature in the present application. 
     It is noted that, according to the present exemplary implementation, database  514  is an images database for storing database entries that include respective data components corresponding to images data  154   a / 454   a  and  154   c . It is further noted that database entry  584   c , which is shown in less detail than database entry  584   a , may be generated by data componentization unit  120 / 220   a / 220   b / 420  according to the method outlined in flowchart  370  upon receipt of data file  150   c , and may include features analogous to those shown and described by reference to database entry  584   a . Moreover, database entries  482   a ,  486   a , and  488   a , in  FIG. 4 , also correspond in general to database entry  584   a , and may include features analogous to those shown and described by reference to database entry  584   a , while differing substantially only based on the data type to which their respective data components correspond. 
     As shown in  FIG. 5 , database entry  584   a  includes data file information  590   a  and data component  594   a . According to the present exemplary implementation, data component  594   a  is one of the data components into which data file  150   a / 450   a  is transformed by data componentization unit  120 / 220   a / 220   b / 420 , using data resolution module  122 / 222   a / 222   b / 422 , in action  374  of flowchart  370 . Thus, data component  594   a  includes data  554   a  (hereinafter “images data  554   a ”) corresponding to images data  154   a / 454   a  of data file  150   a / 450   a . In addition to images data  554   a , and as also shown in  FIG. 5 , data component  594   a  may include formatting details, such as formatting instructions, for images data  554   a.    
     Data file information  590   a  accompanies data component  594   a  in database entry  584   a , and serves to identify data file  150   a / 450   a  from which images data  154   a / 454   a / 554   a  originates. Moreover, in some implementations, data file information  590   a  may also include additional information, such as the geometric position of images data  154   a / 454   a / 554   a  within data file  150   a / 450   a.    
     Although not included in flowchart  370 , in some implementations, the present method for performing componentized data storage may further include performing post-processing of database entry  584   a  to produce additional one or more post-processed database entries. For example, images data  154   a / 454   a / 554   a  may include descriptive text embedded with its images. Post-processing of database entry  584   a  may include extracting the descriptive text from the images in images data  154   a / 454   a / 554   a  and generating database entries for storing the post-processed data components in different databases based on the data type they contain. As a result, the post-processed images of images data  154   a / 454   a / 554   a  may be stored in database  114 / 214   a / 214   b / 514 , while the descriptive text data extracted from images data  154   a / 454   a / 554   a  during post-processing of data component  594   a  may be stored in database  112 / 212   a / 212   b.    
     As another specific example of post-processing, in some implementations, post-processing of a database entry including text data may include performing optical character recognition (OCR) on the text data. Alternatively, or in addition, post-processing of text data may include an aggregation on the text data, enabling recognition of an alphanumeric text entry in multiple formats. For example, the numerical expression “16” appearing in text data could be aggregated with alternative expression for the same number, such as the numerical expressions “12+4”, “2×8”, and the like. In those implementations, a search through text data for the numerical expression “16” would return text databases entries containing any expression of the same number. 
     Thus, the present application describes systems and methods for performing componentized data storage. According to implementations of the present inventive concepts, a data file including multiple data types is transformed into data components corresponding respectively to the multiple data types. Those data components, in turn, are used to generate database entries that are saved in databases segregated by data type, where the database entries can be searched, accessed, and modified. Consequently, the componentized data storage solution disclosed in the present application can increase the efficiency and effectiveness with which large-scale content searching, post-processing, and indexing of data is performed. 
     From the above description it is manifest that various techniques can be used for implementing the concepts described in the present application without departing from the scope of those concepts. Moreover, while the concepts have been described with specific reference to certain implementations, a person of ordinary skill in the art would recognize that changes can be made in form and detail without departing from the scope of those concepts. As such, the described implementations are to be considered in all respects as illustrative and not restrictive. It should also be understood that the present application is not limited to the particular implementations described herein, but many rearrangements, modifications, and substitutions are possible without departing from the scope of the present disclosure.