Patent Publication Number: US-10318512-B2

Title: Storing and querying multidimensional data using first and second indicies

Description:
This application is a continuation of U.S. patent application Ser. No. 14/713,635, filed May 15, 2015, which claims priority to Chinese Patent Application No. 201410231415.X, filed May 28, 2014, and all the benefits accruing therefrom under 35 U.S.C. § 119, the contents of which in its entirety are herein incorporated by reference. 
    
    
     BACKGROUND 
     Embodiments of the present invention generally relate to the field of databases, and more specifically, to methods and systems for storing and querying data. 
     Storage and query for data, especially mass data, are of significant importance for database. In recent years, with the development of relevant fields such as science and computation, this issue becomes particularly prominent. As an example, various kinds of satellites may shoot images of one or more areas of the earth or other target object, for various purposes such as scientific research, remote sensing survey, and weather report. Satellite image data has considerable data amount and may be continuously captured and stored within a period of time. Moreover, such data is generally associated with different dimensions. For example, the data of a satellite image at least may be associated with time dimension and spatial dimension. The time dimension may indicate the time or period when the image is captured, while the spatial dimension may indicate the scope of the geographical area included in the image, e.g., limited by latitude coordinate and longitude coordinate. 
     Multi-dimensional data such as satellite image data poses a great challenge to storage and query of data. A larger data amount results in that the data always has to be distributed in a great number of files, which increases maintenance overheads. Moreover, query of such data is always a multi-dimensional query. In other words, a data query request includes a query condition involving multiple different dimensions, which increases the difficulty and complexity of data query. Moreover, such query process always requires a considerable number of input/output (I/O) operations, which inevitably dampens query efficiency and prolongs response delay. 
     A traditional solution for data storage and query cannot perform storage and query effectively. For example, a known file system cannot support an effective multi-dimensional query and cannot guarantee I/O efficiency. A relational database based on a “relation-entity” model cannot effectively store multi-dimensional data. Although a database specific for mass data (e.g., scientific array data) has been proposed, such database can only solve the storage issue of data. Multi-dimensional query of multi-dimensional data is still limited by lower efficiency. 
     In view of the above, there is a need for a solution that can store and query multi-dimensional data more effectively. 
     SUMMARY 
     In one embodiment, a method for storing data, the data at least associated with a first dimension and a second dimension, includes creating a primary index for retrieving a data unit of the data at least based on the first dimension and the second dimension; creating a secondary index for retrieving data blocks in the data unit at least based on the first dimension; and storing the data in association with the primary index and the secondary index. 
     In another embodiment, a method for querying data, the data at least associated with a first dimension and a second dimension, includes receiving a query request for target data, the query request including a first query condition associated with the first dimension and a second query condition associated with the second dimension; retrieving a target data unit including the target data in the data based on the first query condition, the second query condition and a primary index for the data, the primary index created at least based on the first dimension and the second dimension for retrieving data units of the data; and retrieving a target data block including the target data in the target data unit based on the first query condition and a secondary index of the target data unit, as a response to the request, the secondary index created at least based on the first dimension for retrieving data blocks in the data units of the data. 
     In another embodiment, a system for storing data, the data at least associated with a first dimension and a second dimension includes a primary index creating unit configured to create a primary index for retrieving a data unit of the data at least based on the first dimension and the second dimension; a secondary index creating unit configured to create a secondary index for retrieving data blocks in the data unit at least based on the first dimension; and a storage control unit configured to store the data in association with the primary index and the secondary index. 
     In another embodiment, a system for querying data, the data at least associated with a first dimension and a second dimension, includes a query receiving unit configured to receive a query request for target data, the query request including a first query condition associated with the first dimension and a second query condition associated with the second dimension; a primary retrieving unit configured to retrieve a target data unit including the target data in the data based on the first query condition, the second query condition and a primary index for the data, the primary index created at least based on the first dimension and the second dimension for retrieving data units of the data; and a secondary retrieving unit configured to retrieve a target data block including the target data in the target data unit based on the first query condition and a secondary index of the target data unit, as a response to the request, the secondary index created at least based on the first dimension for retrieving data blocks in the data units of the data. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       Through the more detailed description of some embodiments of the present disclosure in the accompanying drawings, the above and other objects, features and advantages of the present disclosure will become more apparent, wherein the same reference generally refers to the same components in the embodiments of the present disclosure. 
         FIG. 1  shows an exemplary computer system/server which is applicable to implement embodiments of the present invention; 
         FIG. 2  shows a schematic diagram of multi-dimensional data on which embodiments of the present invention may be applied; 
         FIG. 3  shows a schematic flow diagram of a method for storing multi-dimensional data according to embodiments of the present invention; 
         FIG. 4  shows a schematic flow diagram of a method for creating a secondary index through iteratively partitioning data according to embodiments of the present invention; 
         FIG. 5  shows a schematic diagram of iterative partition and data storage in creating a secondary index according to embodiments of the present invention; 
         FIG. 6  shows a schematic flow diagram of a method for querying multi-dimensional data according to embodiments of the present invention; 
         FIG. 7  shows a schematic block diagram of a system for storing multi-dimensional data according to embodiments of the present invention; and 
         FIG. 8  shows a schematic block diagram of a system for querying multi-dimensional data according to embodiments of the present invention. 
     
    
    
     Throughout the drawings, same or similar reference numerals are used to represent same or similar elements. 
     DETAILED DESCRIPTION 
     In general, embodiments of the present invention provide a solution for storing and querying multi-dimensional data. 
     In one aspect, embodiments of the present invention provide a technical solution for storing data. One embodiment in this aspect provides a method for storing data, where the data is at least associated with a first dimension and a second dimension. The method comprises: creating a primary index for retrieving a data unit of the data at least based on the first dimension and the second dimension; creating a secondary index for retrieving data blocks in the data unit at least based on the first dimension; and storing the data in association with the primary index and the secondary index. 
     Another embodiment in this aspect provides a system for storing data, where the data is at least associated with a first dimension and a second dimension. The system comprises: a primary index creating unit configured to create a primary index for retrieving a data unit of the data at least based on the first dimension and the second dimension; a secondary index creating unit configured to create a secondary index for retrieving data blocks in the data unit at least based on the first dimension; and a storage control unit configured to store the data in association with the primary index and the secondary index. 
     In another aspect, embodiments of the present invention provide a technical solution for querying data. One embodiment in this aspect provides a method for querying data, where the data is at least associated with a first dimension and a second dimension. The method comprises: receiving a query request for target data, the query request including a first query condition associated with the first dimension and a second query condition associated with the second dimension; retrieving a target data unit including the target data in the data based on the first query condition, the second query condition and a primary index for the data, the primary index created at least based on the first dimension and the second dimension for retrieving data units of the data; and retrieving a target data block including the target data in the target data unit based on the first query condition and a secondary index of the target data unit, as a response to the request, the secondary index created at least based on the first dimension for retrieving data blocks in the data units of the data. 
     Another embodiment in this aspect provides a system for querying data, where the data is at least associated with a first dimension and a second dimension. The system comprises: a query receiving unit configured to receive a query request for target data, the query request including a first query condition associated with the first dimension and a second query condition associated with the second dimension; a primary retrieving unit configured to retrieve a target data unit including the target data in the data based on the first query condition, the second query condition and a primary index for the data, the primary index created at least based on the first dimension and the second dimension for retrieving data units of the data; and a secondary retrieving unit configured to retrieve a target data block including the target data in the target data unit based on the first query condition and a secondary index of the target data unit, as a response to the request, the secondary index created at least based on the first dimension for retrieving data blocks in the data units of the data. 
     It will be understood through the depiction below that according to the embodiments of the present invention, two-tier indexes are created for multi-dimensional data, wherein the primary index is created based on two or more dimensions to retrieve respective data units of the data, while the secondary index is created based on one or more specific dimensions to retrieve respective data blocks in the data unit. Accordingly, when receiving a multi-dimensional query request for data, the retrieval may also be performed in two layers, wherein the primary retrieval first determines a data unit including the target data based on a primary index, and then the secondary retrieval quickly locates a data block including the target data based on the secondary index. In this way, the multi-dimensional retrieval can be efficiently performed. Moreover, by appropriately setting the size of a smallest data block, the I/O efficiency of data access will be significantly enhanced. Other features and advantages of the present invention will become more comprehensible through the description below. 
     Embodiments will be described in more detail with reference to the accompanying drawings, in which the preferable embodiments of the present disclosure have been illustrated. However, the present disclosure can be implemented in various manners, and thus should not be construed to be limited to the embodiments disclosed herein. On the contrary, those embodiments are provided for the thorough and complete understanding of the present disclosure, and completely conveying the scope of the present disclosure to those skilled in the art. 
     Referring now to  FIG. 1 , an exemplary computer system/server  12  which is applicable to implement the embodiments of the present invention is shown. Computer system/server  12  is only illustrative and is not intended to suggest any limitation as to the scope of use or functionality of embodiments of the invention described herein. 
     As shown in  FIG. 1 , computer system/server  12  is shown in the form of a general-purpose computing device. The components of computer system/server  12  may include, but are not limited to, one or more processors or processing units  16 , a system memory  28 , and a bus  18  that couples various system components including system memory  28  to processor  16 . 
     Bus  18  represents one or more of any of several types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, and a processor or local bus using any of a variety of bus architectures. By way of example, and not limitation, such architectures include Industry Standard Architecture (ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA) bus, Video Electronics Standards Association (VESA) local bus, and Peripheral Component Interconnect (PCI) bus. 
     Computer system/server  12  typically includes a variety of computer system readable media. Such media may be any available media that is accessible by computer system/server  12 , and it includes both volatile and non-volatile media, removable and non-removable media. 
     System memory  28  can include computer system readable media in the form of volatile memory, such as random access memory (RAM)  30  and/or cache memory  32 . Computer system/server  12  may further include other removable/non-removable, volatile/non-volatile computer system storage media. By way of example only, storage system  34  can be provided for reading from and writing to a non-removable, non-volatile magnetic media (not shown and typically called a “hard drive”). Although not shown, a magnetic disk drive for reading from and writing to a removable, non-volatile magnetic disk (e.g., a “floppy disk”), and an optical disk drive for reading from or writing to a removable, non-volatile optical disk such as a CD-ROM, DVD-ROM or other optical media can be provided. In such instances, each can be connected to bus  18  by one or more data media interfaces. As will be further depicted and described below, memory  28  may include at least one program product having a set (e.g., at least one) of program modules that are configured to carry out the functions of embodiments of the invention. 
     Program/utility  40 , having a set (at least one) of program modules  42 , may be stored in memory  28  by way of example, and not limitation, as well as an operating system, one or more application programs, other program modules, and program data. Each of the operating system, one or more application programs, other program modules, and program data or some combination thereof, may include an implementation of a networking environment. Program modules  42  generally carry out the functions and/or methodologies of embodiments of the invention as described herein. 
     Computer system/server  12  may also communicate with one or more external devices  14  such as a keyboard, a pointing device, a display  24 , etc.; one or more devices that enable a user to interact with computer system/server  12 ; and/or any devices (e.g., network card, modem, etc.) that enable computer system/server  12  to communicate with one or more other computing devices. Such communication can occur via Input/Output (I/O) interfaces  22 . Still yet, computer system/server  12  can communicate with one or more networks such as a local area network (LAN), a general wide area network (WAN), and/or a public network (e.g., the Internet) via network adapter  20 . As depicted, network adapter  20  communicates with the other components of computer system/server  12  via bus  18 . It should be understood that although not shown, other hardware and/or software components could be used in conjunction with computer system/server  12 . Examples, include, but are not limited to: microcode, device drivers, redundant processing units, external disk drive arrays, RAID systems, tape drives, and data archival storage systems, etc. 
     In the depiction of exemplary embodiments, the term “comprise” and its similar expressions indicate an open inclusion, i.e., “include, but not limited to.” The term “or” indicates “and/or,” unless otherwise defined in the context. The term “based on” indicates “at least in part based on.” The term “one embodiment” or “the embodiment” indicates “at least one embodiment.” 
     Hereinafter, the embodiments of the present invention will be described in detail. According to the embodiments of the present invention, two-layer indexes are created for multi-dimensional data, wherein the primary index is for retrieving respective data units of the data, while the secondary index is used to retrieve respective data blocks in the data unit. Accordingly, upon reception of a multi-dimensional query request for the data, target data may be quickly located and returned in two-layer retrievals based on the two-layer indexes. 
     Generally, embodiments of the present invention are applicable for storing and querying multi-dimensional data. Here, the term “multi-dimensional data” refers to data associated with more than one dimension. Additionally, according to the embodiments of the present invention, the multi-dimensional data is organized by data units. Examples of multi-dimensional data include, but not limited to, satellite image data. In this case, one satellite image is a data unit. The data of each image is at least associated with spatial and time dimensions. For example, in time dimension, the image data may have a timestamp, for indicating the time or period when the image is captured. In spatial dimension, the image data is associated with the geographical area included in the image. In one embodiment, the scope of geographical area, for example, may be represented through latitude and longitude coordinates. Of course, the satellite image data may also be associated with more dimensions. For example, in one embodiment, an additional dimension is a wavelength of light when the image is captured. 
       FIG. 2  shows a schematic diagram of multi-dimensional data according to one exemplary embodiment of the present invention. Only for the sake of discussion, in the example of  FIG. 2 , a data unit is one or more satellite images  200 , which is associated with spatial dimension and time dimension. As shown in  FIG. 2 , X-axis  202  represents latitude, and Y-axis  202  represents longitude. Therefore, the plane X-Y  203  defined by X-axis and Y-axis define the spatial dimension of the data unit  200 . Z-axis  204  represents time, which defines time dimension of the data unit  200 . In the query, what is desired to query by the user may be data in the specific geographical area  205  at time  206 . It should be noted that although the area  205  is shown in a regular shape in  FIG. 2 , it is only schematic. In practice, a to-be-queried target area may be of any shape. 
     Please note that in the depiction infra, some embodiments will be described with reference to a satellite image data at least associated with time dimension and spatial dimension. However, it should be understood that it is only for the purpose of explanation and illustration, not intended to limit the scope of the present invention in any manner. The embodiments of the present invention are suitable for any data associated with more than one dimension. 
     Referring to  FIG. 3 , in which a flow diagram of a method  300  for storing data according to one embodiment of the present invention is presented. At operation S 301 , a primary index for data is created at least based on two dimensions (denoted as first and second dimensions) associated with multi-dimensional data. The primary index will be used to retrieve respective data units of the data. 
     It should be understood that although in the following depiction, the primary index is created based on two dimensions, it is only exemplary. Based on actual application scenarios and needs, the primary dimension for the data may be created based on more dimensions. The scope of the present invention is not limited in this aspect. 
     According to the embodiments of the present invention, the primary index for the data may be created using any appropriate technology. For example, in one embodiment, the primary index may be implemented as an R-tree. As known, R-tree is a spatial index structure, wherein each node may be associated with a range r 1  of the first dimension and a range r 2  of the second dimension. If a node is not a leaf node, the range of the first dimension and the range of the second dimension associated with any one of its sub-nodes fall within r 1  and r 2 , respectively, and so on and so forth. Besides the ranges of the first and second dimensions, the leaf nodes may also store information capable of locating relevant data units. 
     With the satellite image data as an example, suppose the first dimension is a spatial dimension, and the second dimension is a time dimension. Correspondingly, each node in the R-tree may be associated with the range of latitude and longitude as well as the time range. For example, in one embodiment, a node of the R-tree may be associated with a triple &lt;LoR, LaR, t&gt;, wherein LoR represents the latitude range of a geographical area, LaR represents a dimension range of the geographical area, and t represents time range of the captured image. In particular, a leaf node of the R-tree also has information about the storage location of the image, e.g., the primary key value of the image data in the database. 
     It should be understood that implementing the primary index using R-tree is only exemplary, not intended to limit the scope of the present invention in any manner. Any currently known or future developed index structure may be used to implement the primary index. For example, in some other embodiments, a primary index for data may be created using structures such as R+ tree, spatial network, etc. The scope of the present invention is not limited in this aspect. 
     Next, at operation S 302 , for each data unit, a secondary index is created at least based on a specific dimension (e.g., first dimension), for retrieving data blocks in the data unit. For example, when the data unit is a satellite image, the secondary index may be created based on the spatial dimension, so as to retrieve one or more image blocks in the image. 
     It should be understood that although the secondary index is depicted to be created based on one specific dimension infra, it is only exemplary. According to the actual application scenarios and needs, multiple secondary indexes for data units may be created based on multiple dimensions, respectively. The scope of the present invention will not be limited in this aspect. 
     In some embodiments, a secondary index for the data unit may be created by iteratively partitioning the data unit.  FIG. 4  shows a flow diagram of a method  400  for creating a secondary index based on iterative data partitioning according to one embodiment of the present invention. It would be understood that method  400  is an exemplary implementation of the operation S 302  of the method  300 . 
     As shown in  FIG. 4 , at operation S 401 , a data unit is partitioned with respect to a first dimension, to obtain a plurality of data blocks. The partitioning may be performed according to any predefined rule. In particular, in some embodiments, the data unit may be divided equally, such that each data unit resulting from the partitioning has the same data size. For example, for the satellite image, in each iteration, the image may be partitioned into equally sized image blocks in spatial dimension. A specific example in this aspect will be further described in detail infra. 
     Next, at operation S 402 , for any data block obtained through data partitioning, an index item in the secondary index for the data block is created based on a range of the data block in the first dimension. For example, for each image block obtained through image partitioning, the ranges of latitude and longitude of the geographical area corresponding to the image block may be used as the secondary index items of the image block. 
     Then, at operation S 403 , whether a predefined partitioning stop condition is met. If it is determined that the stop condition has not been met (branch “No”), the method  400  returns to operation S 401  to continue to a next round of partitioning with respect to the data in the data unit, and repeating creation (operation S 402 ) of index item and determination (operation S 403 ) of the stop condition. Otherwise, if it is determined at operation S 403  that the stop condition has been met (branch “Yes”), the method  400  proceeds to operation S 404  to create a secondary index for the data unit based on the created index items of respective data blocks. 
     According to the embodiments of the present invention, at operation S 403 , any appropriate partitioning stop condition may be used. For example, in some embodiments, the stop condition may be the numbers of partitioning the data unit. Namely, once the data unit has been iteratively partitioned with respect to the first dimension for predetermined times, the partitioning will stop. Alternatively or additionally, in some embodiments, data size of the data block may be used as a stop condition. For example, in an embodiment of iteratively partitioning the data equally, the data blocks resulting from each partitioning have an identical data size. Based on the comparison between the size of data block and the predetermined threshold, it is determined to continue or stop partitioning the data unit. In one example, the predetermined threshold may be determined based on the block size on the storage medium for storing data. 
     Specifically, in this embodiment, after each iteration, the size of the partitioned data block is compared with the block size of the storage medium. If the size of data block matches the size of storage medium (e.g., equal or approximately equal), the partitioning may stop; otherwise, partitioning the data blocks continues. In this way, the data block resulting from the last partitioning (called “smallest data block”) has a data size matching the size of the storage block. In this way, when the data is stored on the storage medium, each smallest data block is basically stored in one storage block. In this way, I/O efficiency when accessing data can be significantly enhanced. Therefore, the present invention is advantageous. 
     At operation S 404 , the index item created at operation S 402  may be organized using any appropriate index structure, thereby forming a secondary index of the data unit. For example, in some embodiments, a K 2  tree may be used to create a secondary index. For example, for a satellite image, each non-leaf sub-node of the K 2  tree is associated with corresponding ranges of latitude and longitude, and the ranges of latitude and longitude of all sub-nodes of the node fall within the ranges of latitude and longitude of the parent node, and so on and so forth. In particular, a leaf node of the K 2  tree corresponding to the ranges of the latitude and longitude of the smallest image block resulting from the partitioning process, and has information of storage location of the corresponding smallest image block. For example, in one embodiment, the leaf sub-node may have a pointer directed to a storage block that stores a corresponding image block. 
     It should be understood that implementing the secondary index using the K 2  tree is only exemplary, not intended to limit the scope of the present invention in any way. Any currently known or future developed index structure may be used to implement the secondary index. For example, in some embodiments, a KD tree may be used to implement the secondary index. 
       FIG. 5  shows an example of performing method  400  to a satellite image. In this example, the data unit is an image  500  of a specific geographical area captured by satellite, and the secondary index is created with respect to spatial dimension, wherein the spatial dimension is expressed by ranges of latitude and longitude. According to method  400 , the image  500  is equally divided into four parts in each round of partitioning according to the latitude and longitude coordinates. For example, in the first round of partitioning, the image  500  is divided into four image blocks  501 - 504  according to the middle value of its latitude and longitude. The index item of each of the image blocks  501 - 504  is created based on the ranges of latitude and longitude of the image block. 
     In the example shown in  FIG. 5 , the stop condition for data partitioning is that the data size of the image block matches the size of the storage block on the storage medium. If this condition is met, stop data partitioning. Otherwise, continue iteratively partitioning image blocks  501 - 504 . For the sake of clarity,  FIG. 5  only shows four smaller image blocks  5031 - 5034  resulting from a second round of partitioning to the image block  503 . For each of the  5031 - 5034 , an index item is likewise created based on the ranges of the latitude and longitude of its corresponding geographical area. 
     Suppose the stop condition is met after two rounds of partitioning. In other words, the data size of the image blocks  5031 - 5034  matches the size of the storage block. In this case, data partitioning stops. The image blocks  5031 - 5034  are just the smallest data blocks. In particular, in this example, each smallest data block may be stored in a storage block. 
     Referring again to  FIG. 3 , the method  300  proceeds to operation S 303 , where the data is stored in association with the primary index created at operation S 301  and the secondary index created at operation S 302 . For example, in the embodiment in which the primary index is implemented as an R-tree, a leaf node of the R-tree has information of storage location of a corresponding data unit. In the embodiment in which the secondary index is implemented as a K 2 -tree, an index item associated with the smallest data block (i.e., the leaf node in the K 2  tree) has information of the storage location of the smallest data block (e.g., a pointer directed to a corresponding storage block). 
     In order to enhance retrieving efficiency, in some embodiments, data may be stored at least based on a proximity relationship of the data blocks in the first dimension for creating the secondary index. For the sake of discussion, still consider the example of  FIG. 5 , when storing data, based on the proximity relationship of the image block in spatial dimension, data of respective image blocks may be stored continuously in Z-order. For example, in one embodiment, the image blocks  501 - 504  are continuously stored in Z-order. The sub-blocks included in each image block are continuously stored recursively in Z-order. For example, in the image block  503 , sub-blocks  5031 - 5034  are likewise continuously stored in Z-order. 
     In particular, in the example shown in  FIG. 5 , besides the first dimension (space) and the second dimension (time), the image data is also associated with an additional dimension, i.e., wavelength (λ) of the light when the image is captured. Therefore, continuity of the image data in the wavelength dimension may also be considered. Specifically, in one embodiment, image data associated with the same wavelength may be continuously stored. As shown in  FIG. 5 , storage blocks in row  505  are used for storing image data associated with a first wavelength (λ 1 ), and storage blocks in row  506  are used for storing image data associated with a second wavelength (λ 2 ), and so on and so forth. 
     By performing method  200 , the primary index based on multiple dimensions (e.g., first dimension and second dimension) and the primary index for retrieving a data unit are created. Moreover, a secondary index based on a specific dimension (e.g., first dimension) is created for retrieving a data block in the data unit. In this way, the efficiency of multi-dimensional data query can be significantly enhanced.  FIG. 6  shows a flow diagram of a method  600  for querying multi-dimensional data according to one embodiment of the present invention. 
     At operation S 601 , a query request for target data is received. In particular, according to the embodiments of the present invention, the query request may include query conditions associated with different dimensions. For example, the query request at least may include a first query condition associated with a first dimension, and a second query condition associated with a second dimension. 
     With the satellite image data as an example, the first dimension may be a spatial dimension, and the second dimension may be a time dimension. The query request may query data of a satellite image of a specific geographical area captured at a particular time or within a particular time range. Therefore, the first query condition, for example, indicates a range of the geographical area by virtue of latitude and longitude coordinates. Particularly, a to-be-queried geographical area may have a regular shape (e.g., rectangle), or any irregular shape (e.g., “Beijing City”). Meanwhile the second query condition indicates the time or time range when the to-be-queried data. 
     In response to a query request, at operation S 602 , a data unit (called “target data unit”) including to-be-queried target data in the data is retrieved based on a first query condition, a second query condition and a primary index of data. As mentioned above, the primary index is created at least based on a first dimension and a second dimension. By retrieving the primary index, one or more target data units meeting the first query condition and the second query condition may be determined. With satellite image data as an example, the primary index (e.g., R-tree) of the image data may be retrieved using the time range and geographical area range designated in the query request, thereby determining one or more target images including the designated geographical area and captured within the designated time. 
     Then, at operation S 603 , for each target data unit determined at operation S 602 , one or more target data blocks including the target data is retrieved based on the first query condition associated with the first dimension and the second index of the target data unit. For example, in some embodiments, the secondary index of the satellite image is created based on spatial dimension (ranges of latitude and longitude). Correspondingly, an image block including to-be-queried geographical area is retrieved using a query condition about spatial dimension in the query request according to the secondary index, thereby responding to the query request. 
     Similar to the process of creating a secondary index, the process of retrieving a target data block in a target data unit may be implemented through iterative partitioning. Specifically, in some embodiments, iterative partitioning may be performed by a target data unit in a first dimension. For each data block obtained in each partitioning, as mentioned above, the secondary index item associated therewith indicates a range of the data block in the first dimension. Therefore, the range of the first dimension as indicated in the secondary index item may be compared with the query range of the first dimension as designated in the first query condition to determine whether the data block at least in part matches the first query condition. 
     Still with reference to the satellite image as an example, through query the primary index, one or more target images including a to-be-queried geographical area and captured at the designated time or within the designated time range may be obtained at operation S 602 . At operation S 603 , for any target image, it is iteratively partitioned in the spatial dimension. For example, in some embodiments, the image may be iteratively partitioned into four equal parts according to the ranges of latitude and longitude. For each image block resulting from the partition, a corresponding index item in the secondary index (e.g., K 2  tree) saves the range of the geographical area corresponding to the image block. If the range at least in part overlaps with the query range designated in the first query condition, continue partitioning and processing the image block. Otherwise, if the range of the geographical area represented by the image block does not intersect with the query range designated in the first query condition, this image block will be excluded from the subsequent processing. 
     In this way, by iteratively partitioning the target data unit, those smallest data blocks including the to-be-queried data may be finally determined. As mentioned above, the secondary index item (e.g., the leaf node in the K 2  tree) of the smallest data block indicates its storage location (e.g., a pointer directed to the storage block). Therefore, these target data blocks may be accessed and returned as a response to the query request. In particular, as mentioned above, in some embodiments, the size of the smallest data block may match the size of the storage block. Therefore, the I/O access in the smallest data block may be efficiently performed with storage block as a unit. Moreover, in some embodiments, the smallest data blocks may be continuously stored according to its proximity relationship in the first dimension. In this way, when accessing the target data, the I/O access to the storage medium may be performed continuously without a need of frequently jumping between different storage blocks. Therefore, the I/O efficiency can be significantly enhanced and the response time can be significantly reduced. 
       FIG. 7  shows an exemplary block diagram of a system  700  for storing data according to the embodiments of the present invention. The data is at least associated with the first dimension and the second dimension. As shown in the figure, the system comprises: a primary index creating unit  701  configured to create a primary index for retrieving a data unit of the data at least based on the first dimension and the second dimension; a secondary index creating unit  702  configured to create a secondary index for retrieving data blocks in the data unit at least based on the first dimension; and a storage control unit  703  configured to store the data in association with the primary index and the secondary index. 
     In some embodiments, the secondary index creating unit  702  may comprise: a data portioning unit configured to iteratively partition the data unit in the first dimension, till a predetermined stop condition is met; and a secondary index item creating unit configured to create, for a data block obtained by partitioning the data unit, an index item of the data block in the secondary index based on a range of the data block in the first dimension. 
     In some embodiments, the data partitioning unit is configured to iteratively partition the data unit equally in the first dimension. In such an embodiment, the stop condition comprises: a size of a data block obtained by partitioning the data matches a size of a storage block on a storage medium for storing the data. 
     In some embodiments, the storage control unit  703  may be configured to store the data at least based on a proximity relationship of the data blocks in the first dimension. 
       FIG. 8  shows a block diagram of a system  800  for querying data according to one embodiment of the present invention. The data is at least associated with a first dimension and a second dimension. As shown in the figure, the system  800  comprises: a query receiving unit  801  configured to receive a query request for target data, the query request including a first query condition associated with the first dimension and a second query condition associated with the second dimension; a primary retrieving unit  802  configured to retrieve a target data unit including the target data in the data based on the first query condition, the second query condition and a primary index for the data, the primary index created at least based on the first dimension and the second dimension for retrieving data units of the data; and a secondary retrieving unit  803  configured to retrieve a target data block including the target data in the target data unit based on the first query condition and a secondary index of the target data unit, as a response to the request, the secondary index created at least based on the first dimension for retrieving data blocks in the data units of the data. 
     In some embodiments, the secondary retrieving unit  803  may comprise: a target data partitioning unit configured to iteratively partition the target data unit in the first dimension; and a data block comparing unit configured to determine, for a data block obtained by partitioning the target data unit, whether the data block at least in part matches the first query condition based on the first query condition and the secondary index. In some embodiments, the target data partitioning unit is configured to iteratively partition the target data unit equally in the first dimension. 
     It should be noted that for the sake of clarity,  FIGS. 7 and 8  do not show optional units or sub-units included in the systems  700  and  800 . All features and operations as described above are suitable for the systems  700  and  800 , respectively, which are therefore not detailed here. Moreover, partitioning of units or subunits in the systems  700  and  800  is exemplary, rather than limitative, intended to describe its main functions or operations logically. A function of one unit may be implemented by a plurality of other units; on the contrary, a plurality of units may be implemented by one unit. The scope of the present invention is not limited in this aspect. 
     Moreover, the units included in the systems  700  and  800  may be implemented by various manners, including software, hardware, firmware or a random combination thereof. For example, in some embodiments, the apparatus may be implemented by software and/or firmware. Alternatively or additionally, the systems  700  and  800  may be implemented partially or completely based on hardware. for example, one or more units in the systems  700  and  800  may be implemented as an integrated circuit (IC) chip, an application-specific integrated circuit (ASIC), a system on chip (SOC), a field programmable gate array (FPGA), etc. The scope of the present intention is not limited to this aspect. 
     The present invention may be a system, a method, and/or a computer program product. The computer program product may include a computer readable storage medium (or media) having computer readable program instructions thereon for causing a processor to carry out aspects of the present invention. 
     The computer readable storage medium can be a tangible device that can retain and store instructions for use by an instruction execution device. The computer readable storage medium may be, for example, but is not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of the computer readable storage medium includes the following: a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), a static random access memory (SRAM), a portable compact disc read-only memory (CD-ROM), a digital versatile disk (DVD), a memory stick, a floppy disk, a mechanically encoded device such as punch-cards or raised structures in a groove having instructions recorded thereon, and any suitable combination of the foregoing. A computer readable storage medium, as used herein, is not to be construed as being transitory signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission media (e.g., light pulses passing through a fiber-optic cable), or electrical signals transmitted through a wire. 
     Computer readable program instructions described herein can be downloaded to respective computing/processing devices from a computer readable storage medium or to an external computer or external storage device via a network, for example, the Internet, a local area network, a wide area network and/or a wireless network. The network may comprise copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers and/or edge servers. A network adapter card or network interface in each computing/processing device receives computer readable program instructions from the network and forwards the computer readable program instructions for storage in a computer readable storage medium within the respective computing/processing device. 
     Computer readable program instructions for carrying out operations of the present invention may be assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state-setting data, or either source code or object code written in any combination of one or more programming languages, including an object oriented programming language such as Smalltalk, C++ or the like, and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The computer readable program instructions may execute entirely on the user&#39;s computer, partly on the user&#39;s computer, as a stand-alone software package, partly on the user&#39;s computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user&#39;s computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, programmable logic circuitry, field-programmable gate arrays (FPGA), or programmable logic arrays (PLA) may execute the computer readable program instructions by utilizing state information of the computer readable program instructions to personalize the electronic circuitry, in order to perform aspects of the present invention. 
     Aspects of the present invention are described herein with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer readable program instructions. 
     These computer readable program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks. These computer readable program instructions may also be stored in a computer readable storage medium that can direct a computer, a programmable data processing apparatus, and/or other devices to function in a particular manner, such that the computer readable storage medium having instructions stored therein comprises an article of manufacture including instructions which implement aspects of the function/act specified in the flowchart and/or block diagram block or blocks. 
     The computer readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of operations to be performed on the computer, other programmable apparatus or other device to produce a computer implemented process, such that the instructions which execute on the computer, other programmable apparatus, or other device implement the functions/acts specified in the flowchart and/or block diagram block or blocks. 
     The flowchart and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s). It should also be noted that, in some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts, or combinations of special purpose hardware and computer instructions. 
     The descriptions of the various embodiments of the present invention have been presented for purposes of illustration, but are not intended to be exhaustive or limited to the embodiments disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the described embodiments. The terminology used herein was chosen to best explain the principles of the embodiments, the practical application or technical improvement over technologies found in the marketplace, or to enable others of ordinary skill in the art to understand the embodiments disclosed herein.