WO2013044502A1 - 数据管理的方法及装置 - Google Patents

数据管理的方法及装置 Download PDF

Info

Publication number
WO2013044502A1
WO2013044502A1 PCT/CN2011/080446 CN2011080446W WO2013044502A1 WO 2013044502 A1 WO2013044502 A1 WO 2013044502A1 CN 2011080446 W CN2011080446 W CN 2011080446W WO 2013044502 A1 WO2013044502 A1 WO 2013044502A1
Authority
WO
WIPO (PCT)
Prior art keywords
block
index
pool
storage
storage pool
Prior art date
Application number
PCT/CN2011/080446
Other languages
English (en)
French (fr)
Inventor
王道辉
Original Assignee
华为技术有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 华为技术有限公司 filed Critical 华为技术有限公司
Priority to CN201180001900.2A priority Critical patent/CN103140840B/zh
Priority to PCT/CN2011/080446 priority patent/WO2013044502A1/zh
Publication of WO2013044502A1 publication Critical patent/WO2013044502A1/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices

Definitions

  • the present invention relates to the field of data management technologies, and in particular, to a data management method and apparatus.
  • the object of the present invention is to provide a data management method and device, which can effectively manage massive data without disk defragmentation, so that the disk utilization can be greatly improved, and the speed of indexing and reading KV is greatly improved. This provides efficient data storage and management operations.
  • the method logically divides a disk into a plurality of storage pools, and the blocks in the same storage pool are equal in size; an entry index array is set in the memory, and the index index array is used to The information of each storage pool is represented; the key in the key-value pair Key-Value, the pool index of the storage pool divided in the disk, and the block index of the block in the storage pool are formed into a triplet and stored in the memory; The storage location of a certain data record in the disk is located through an entry index array and stored triplet information set in the memory, and the data is read, written, or deleted according to the storage location.
  • FIG. 1 is a schematic flowchart of a data management method according to an embodiment of the present invention.
  • FIG. 2 is another schematic flowchart of a data management method according to an embodiment of the present invention.
  • FIG. 3 is a schematic diagram of a model displayed by the method of the example of the present invention.
  • FIG. 4 is a schematic flowchart of a write operation in a specific example of an embodiment of the present invention.
  • FIG. 5 is a schematic flowchart of a read operation in a specific example of an embodiment of the present invention.
  • FIG. 6 is a schematic flowchart of a deletion operation in a specific example of an embodiment of the present invention.
  • FIG. 7 is a schematic structural diagram of a data management apparatus according to an embodiment of the present invention.
  • FIG. 8 is a schematic structural diagram of another data management apparatus according to an embodiment of the present invention.
  • the embodiment of the invention provides a data management method and device, which can effectively manage massive data without disk defragmentation, so that the disk utilization can be greatly improved, and the speed of indexing and reading KV is greatly improved. This provides efficient data storage and management operations.
  • FIG. 1 is a schematic flowchart of a method according to an embodiment of the present invention, where the method includes:
  • Step 11 Divide the disk into multiple storage pools, and the blocks in the same storage pool are equal in size.
  • the disk when performing data management, the disk is logically divided into multiple storage pools, and the blocks in the same storage pool are equal in size.
  • the disk can be divided into 2048 storage pools, and the size of the blocks in the pool.
  • 512B, 1K, 1.5K, 2K, 2.5K,... 1M that is to say, the divided 2048 storage pools have 512B block pools, 1K block pools, 1.5K block pools, and so on, all of which can be multiples of 512B.
  • Step 12 Set an entry index array in memory, and the entry index array is used to represent information of each storage pool.
  • an entry index array is set in the memory, and the information of each storage pool is represented by the entry index array, and the entry index array includes: a pool index of the storage pool, and a storage pool.
  • the total length of the storage pool is optional.
  • the pool index of the foregoing storage pool is directed to each storage pool.
  • the block bitmap is used to indicate the usage of each block in the storage pool, which is specifically implemented by identifying the idle or occupied identifier of the block bitmap, for example, by using a sequence of 0, 1
  • the identifier is 0 when the initialization is marked as idle, and is 1 if a block is occupied by data.
  • Step 13 When receiving a write operation for the key-value type record of the key-value type, locate the storage location of the data corresponding to the value in the disk by using an entry index array set in the memory, and according to the The storage location performs a write operation of the data.
  • the storage location of a certain data record in the disk can be located through the index index array set in the memory, and the data write operation is performed according to the storage location.
  • a data can be identified by a key value for a record of type Key-Value, and a key of a record is unique throughout the database, and the record can be found according to the key, that is, the data.
  • key-value pairs key1, "hello, world”
  • obtaining an entry index array of the corresponding storage pool set in the memory according to the pool index obtaining block bitmap information of the storage pool from the entry index array, finding a free block in the storage pool, and obtaining the record to be stored.
  • a block index calculating, according to the block index, the size of the block in the storage pool, and the storage pool start position, the storage location of the record in the disk, for example, if the storage pool of the record is stored in the entry index array
  • the method further includes: calculating a starting position of the storage pool corresponding to the pool index, and recording an order of the storage pools in the disk, the entry
  • the index array further includes a total length of the storage pool.
  • the calculation of the starting position of the storage pool corresponding to the pool index includes: adding the sum of the total lengths of all the storage pools arranged before the storage pool corresponding to the pool index The starting position of the storage pool corresponding to the pool index.
  • the storage pool starting position refers to the logical location of each storage pool in the disk file.
  • the starting position of the first storage pool is 0 when the system is initialized, and the starting position of the second storage pool is the first.
  • the storage pool occupies space +1 in the disk file, records the order in which the storage pools are arranged on the disk, and then derives the starting position of all the storage pools, that is, all that precedes the storage pool corresponding to the pool index.
  • the sum of the total lengths of the storage pools plus one is the starting position of the storage pool corresponding to the pool index.
  • the ingress index array does not include the total length of the storage pool, the total size of the storage pool can also be calculated by the number of blocks in the storage pool and the size of the block.
  • the method further includes: modifying a mark of the block bitmap stored in the record to occupy; taking the key of the record, pointing to a pool index and a block index of the record position as one
  • the triplet is stored in the memory, so that the subsequent triplet can quickly locate the location of a certain record and perform corresponding deletion or search operations.
  • the method in the embodiment of the present invention may also perform a read operation.
  • the application reads a key-value pair Key-Value type record
  • the triple file is searched in the memory according to the key of the record, and if not found, Indicates that there is no such record in the database, and the read operation ends; otherwise, a triple file key, a pool index and a block index are found; the starting position of the storage pool in which the record is stored is found according to the pool index, and the block is calculated according to the block index.
  • the offset in the storage pool; the storage location of the record on the disk is obtained based on the calculated offset, and the value of the record is retrieved from the storage location.
  • the method in the embodiment of the present invention may further perform a delete operation.
  • the application deletes a key-value pair Key-Value type record
  • the triple file is searched in the memory according to the key of the record, and if not found,
  • the delete operation ends; otherwise, returns a triple file key, pool index and block index; deletes the triple file from memory, and marks the block bitmap storing the record as free according to the block index.
  • FIG. 2 is another schematic flowchart of a data management method according to an embodiment of the present invention.
  • FIG. 2 includes:
  • Step 21 Divide the disk into multiple storage pools, and the blocks in the same storage pool are equal in size.
  • Step 22 Set an entry index array in the memory, and use the entry index array to represent information of each storage pool.
  • Step 23 A triplet corresponding to the key-value type record is stored in the memory, the triplet includes the Key of the record, and a pool index and a block index of the storage pool storing the record.
  • Step 24 When the application reads or deletes a key-value pair of Key-Value type records, it looks for and obtains the triplet.
  • the application when the application reads or deletes a key-value pair Key-Value type record, it searches for a triple in memory according to the key of the record. If not found, it means that there is no record in the database, read or The delete operation ends; otherwise a triplet key, pool index and block index are found.
  • Step 25 If a read operation is performed, find a starting location of the storage pool in which the record is stored according to the pool index in the triplet, and according to the size of the block in the storage pool and the block in the triplet Indexing calculates an offset of the block in the storage pool; obtaining the storage location recorded in the disk according to the starting position and the offset, and reading the value of the record from the storage location .
  • Step 26 If the deletion operation is performed, the triplet is deleted from the memory, and the block bitmap storing the recorded block is marked as idle according to the pool index and the block index of the triplet.
  • the massive data can be effectively managed without disk defragmentation, the disk utilization can be greatly improved, and the speed of indexing and reading KV is greatly improved, thereby providing efficient data.
  • the elements of the inode index array can pass a structure struct
  • the idx_bpool is used to represent information about a storage pool.
  • the specific information of the elements of the entry index array is shown in the following table:
  • Int idx Pool index pointing to a storage pool BitMap bm Block bitmap, used to indicate the use of blocks in the storage pool: 0 means idle, 1 means occupied. Long len Total length of the storage pool Int blockSize The size of each block in the storage pool
  • Figure 4 shows the flow of the write operation.
  • the value of the value of all operations is rounded up to a multiple of 512B.
  • Step 1 The application writes a (key, value) type record and starts the write operation
  • Step 2 Use the standard library function to get the length of the value, round up to a multiple of 512, and then get the pool index according to the obtained value, that is, find the storage pool to store the record;
  • the maximum memory block is 1M
  • the first memory block stores the first 1M data
  • the second memory block stores the remaining 300B data
  • the remaining space of the storage block can no longer store other data.
  • the pool indexes of multiple storage pools are found.
  • Step 3 According to the bitmap of the storage pool, find the first free block in the pool (that is, find the first location in the bitmap that is idle), and also obtain the block index to be stored in the record.
  • a bitmap is a data structure used to indicate the usage of a block in a storage pool.
  • the implementation may be a sequence of 0, 1 sequences, for example, when the bitmap is initialized, it is all 0, indicating that the state of the block is idle. If a block is occupied by data, it is marked as 1 in the corresponding position of the bitmap; if the data in a block is deleted, it is marked as 0 in the corresponding position of the bitmap. .
  • bitmap 0000 0000 it can indicate the usage of 8 blocks in the storage pool; when the first block and the second block in the pool store data, the corresponding position of the bitmap is set to 1, that is, the bitmap becomes 1100. 0000; When the data of the second block in the pool is deleted, the corresponding position of the bitmap is set to 0, that is, the bitmap becomes 1000 0000.
  • Step 4 Calculate the offset offset of the block in the storage pool based on the block index.
  • the size size of each block in the storage pool is stored in an array of entry indexes set in the memory, and its representation form is a structure struct Idx_bpool, which can be obtained directly; the calculation process is as follows:
  • the block has an offset of 3 * size in the storage pool.
  • the location where the record is stored on disk targetLocation the starting position of the storage pool + 3 * size .
  • the block indexes under each storage pool are obtained separately, and the locations stored on the disk are calculated separately.
  • Step 5 The input and output IO operations are started, and the records are directly stored in the storage pool, and the storage location is the targetLocation calculated in the above step 4;
  • the records are respectively stored in the above locations according to the separately calculated storage locations. For example, if a record of 1M300B is to be stored, it can be stored in 2 free 1M storage blocks. Medium, that is, the first memory block stores the first 1M data, and the second memory block stores the remaining 300B data.
  • Step 6 If the IO fails, it will return false directly.
  • Step 7 If the IO operation is successful, modify the metadata.
  • the process of specifically modifying the metadata is: set the corresponding position in the bitmap to 1, that is, mark the block as the use state; put the key and the pool index pointing to the record position, the block index, as a triple (key, The pool index, block index) is stored in a file; the file is mapped into the memory, through which you can quickly locate the location of a record, and facilitate deletion or lookup operations.
  • Step 8 Return the result of this IO operation, return true if the write is successful, otherwise return false;
  • Step 9 Return the result of the write operation, the write success returns true, otherwise false, the write operation ends.
  • the flow of the write operation is described above.
  • the flow of the read operation and the delete operation are described below.
  • the read operation and the delete operation may occur after or before the write operation.
  • the present invention does not limit this, as shown in FIG. 5 for the read operation.
  • the flow diagram when the application reads a record of a key-value pair (key, value) type, as shown in Figure 5:
  • Step 1 The application reads a (key, value) record and starts the read operation
  • Step 2 Find the key in the triple file. If it is not found, it means that there is no such record in the database, return a NULL, and the read operation ends; otherwise, find a triple (key, Pool index, block index);
  • Step 3 Find the starting location SET_POS of the storage pool according to the pool index; calculate the offset offset of the block in the storage pool according to the block index.
  • the block has an offset of 3 * size in the storage pool.
  • targetLocation SET_POS + 3 * size .
  • Step 4 According to the storage location calculated in step 3, that is, targetLocation, the value is directly taken out from the storage pool;
  • Step 5 If the value operation succeeds, return this record, otherwise return false;
  • Step 6 Return the result of the read operation, successfully return a record, otherwise return false;
  • Figure 6 shows the flow diagram of the delete operation.
  • the application deletes a key-value pair (key, value) record, as shown in Figure 6:
  • Step 1 The application deletes a (key, value) record and starts the delete operation
  • Step 2 According to the key, find the corresponding triple in the triple file. If it is not found, return false, and the delete operation ends; otherwise, return the triple (key, pool index, Block index) and remove this triple from the file.
  • Step 3 According to the pool index, the corresponding structure struct idx_bpool is obtained from the index index array;
  • Step 4 According to the block index, mark the corresponding position in the bitmap as 0, indicating that the block is free and can be used to store a new record;
  • Step 5 Return the result of the delete operation, if it returns true, it returns false otherwise; this delete operation ends.
  • the data management method described in this embodiment can effectively manage massive data without defragmenting the disk, so that the disk utilization can be greatly improved, and the index is greatly improved. And the speed of reading KV, providing efficient data storage and management operations.
  • FIG. 7 is a schematic structural diagram of a device according to an embodiment of the present invention.
  • the device includes:
  • the storage pool dividing unit 71 is configured on the disk to divide the disk into multiple storage pools, and the sizes of the blocks in the same storage pool are equal. For the specific implementation process, refer to the foregoing method embodiment.
  • the storage pool information setting unit 72 is disposed in the memory, and is configured to set an entry index array, and the information of each storage pool is represented by the entry index array.
  • the specific implementation process is as described in the foregoing method embodiment.
  • a data write operation unit 73 configured to: when receiving a write operation for a record of a key value pair key-value type, locate the data corresponding to the value by using an entry index array set in the storage pool information setting unit 72 The storage location in the disk, and the writing operation of the data is performed according to the storage location.
  • the specific implementation process is as described in the foregoing method embodiment.
  • the data write operation module 73 specifically includes:
  • the pool index obtaining module 731 is configured to obtain a pool index of the corresponding storage pool according to the length value of the value when the application writes a record of the key value to the Key-Value type;
  • the block information obtaining module 732 is configured to obtain an entry index array of the corresponding storage pool set in the memory according to the pool index, obtain block bitmap information of the storage pool from the entry index array, and find a free block in the storage pool, and Obtain the block index to be stored in the record;
  • a storage location calculation module 733 configured to calculate, according to the block index, a size of a block in the storage pool, and a storage pool start location, a storage location of the record in the disk;
  • the record storage module 734 is configured to perform a write operation, and store the record of the Key-Value type in the storage location.
  • the embodiment of the present invention further provides another device for data management, as shown in FIG. 8 is a schematic structural diagram of another data management device provided, where the device includes:
  • the storage pool dividing unit 81 is disposed in the disk and is used to divide the disk into multiple storage pools, and the blocks in the same storage pool are equal in size.
  • the storage pool information setting unit 82 is disposed in the memory for setting an entry index array, and the information of each storage pool is represented by the entry index array.
  • the triplet storage unit 83 is disposed in the memory for storing a triplet corresponding to the key-value type record of the key-value type, the triplet including the key of the record, and a storage pool storing the record Pool index and block index.
  • the triplet obtaining module 84 is configured to: when the application reads or deletes the record of the key value pair Key-Value type, searches for a corresponding triplet in the memory according to the key of the record.
  • the data read operation module 85 is configured to find a starting location of the storage pool storing the record according to the pool index in the triplet when performing a read operation, and according to the size of the block in the storage pool and the third
  • the block index in the tuple calculates an offset of the block in the storage pool; the storage location recorded in the disk is obtained according to the starting position and the offset, and the storage location is read from the storage location The value of the record.
  • a data deletion operation module 86 configured to delete the triplet found from the memory when the deletion operation is performed, and store the block position of the recorded block according to the pool index and the block index of the triplet The graph is marked as free.
  • each unit or module included is only divided according to functional logic, but is not limited to the above division, as long as the corresponding function can be implemented;
  • the specific names are also for convenience of distinguishing from each other and are not intended to limit the scope of the present invention.
  • the storage medium may be a read only memory, a magnetic disk or an optical disk or the like.
  • the embodiment of the present invention can effectively manage massive data without disk defragmentation, so that the disk utilization can be greatly improved, and the speed of indexing and reading KV is greatly improved, thereby providing efficient data storage. And management operations.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Abstract

一种数据管理的方法及装置。所述方法将磁盘按逻辑上划分成多个存储池,且同一存储池中的块大小相等;在内存中设置入口索引数组,通过该入口索引数组来表示各个存储池的信息;将键值对Key-Value中的Key,所述磁盘中所划分出的存储池的池索引,以及存储池中块的块索引组成三元组,存放在内存中;通过内存中所设置的入口索引数组和存放的三元组信息来定位某一数据记录在所述磁盘中的存储位置,并根据该存储位置进行该数据的读、写或删除操作。通过该技术方案就能够有效的管理海量数据,而不需要进行磁盘碎片整理,使磁盘利用率可以大幅提高,并大大的提高索引和读取K-V的速度,从而提供高效的数据存储和管理操作。

Description

数据管理的方法及装置
技术领域
本发明涉及数据管理技术领域,尤其涉及一种数据管理的方法及装置。
发明背景
目前,随着计算机技术和网络技术的发展,数据信息量呈几何级数的增长,人类的数据达到前所未有的规模,对这些超大规模数据的存储和管理已经成为业界一大挑战。传统的关系型数据库在管理这种超大规模的数据时,无法提供高效的磁盘读写操作,无法满足良好的扩展性以及高可用性。在这种背景下,各种非关系型数据库,特别是键值对K-V(Key-Value)数据库Store DB的出现很好的解决了上述问题。
现有技术中,Key-Value存储已经成为业界的一种常用存储方式,被应用在越来越多的地方,特别是在云存储中;这些存储引擎有的是附加Append only模式,有的是可直接修改的模式,而这些技术方案都涉及到后台的数据压缩或者碎片整理,都需要进行不规则的全局数据移动来提高磁盘利用率,而在这种压缩或者碎片整理的过程中,都会对数据库的性能造成很大的影响,无法提供高效的磁盘读写操作。
发明内容
本发明的目的是提供一种数据管理的方法及装置,能够有效的管理海量数据,而不需要进行磁盘碎片整理,使磁盘利用率可以大幅提高,并大大的提高索引和读取K-V的速度,从而提供高效的数据存储和管理操作。
由上述所提供的技术方案可以看出,所述方法将磁盘按逻辑上划分成多个存储池,且同一存储池中的块大小相等;在内存中设置入口索引数组,通过该入口索引数组来表示各个存储池的信息;将键值对Key-Value中的Key,所述磁盘中所划分出的存储池的池索引,以及存储池中块的块索引组成三元组,存放在内存中;通过内存中所设置的入口索引数组和存放的三元组信息来定位某一数据记录在所述磁盘中的存储位置,并根据该存储位置进行该数据的读、写或删除操作。通过该技术方案就能够有效的管理海量数据,而不需要进行磁盘碎片整理,使磁盘利用率可以大幅提高,并大大的提高索引和读取K-V的速度,从而提供高效的数据存储和管理操作。
附图简要说明
图1为本发明实施例所述数据管理方法的流程示意图;
图2为本发明实施例所述数据管理方法的另一流程示意图;
图3为本发明实例所述方法所显示的模型示意图;
图4为本发明实施例所举具体实例中写操作的流程示意图;
图5为本发明实施例所举具体实例中读操作的流程示意图;
图6为本发明实施例所举具体实例中删除操作的流程示意图;
图7为本发明实施例所述数据管理装置的结构示意图;
图8为本发明实施例所提供的另一种数据管理装置的结构示意图。
实施本发明的方式
本发明实施方式提供了一种数据管理的方法及装置,能够有效的管理海量数据,而不需要进行磁盘碎片整理,使磁盘利用率可以大幅提高,并大大的提高索引和读取K-V的速度,从而提供高效的数据存储和管理操作。
下面根据附图对本发明实施例进行详细说明,如图1所示为本发明实施例所述方法的流程示意图,所述方法包括:
步骤11:将磁盘划分成多个存储池,且同一存储池中的块大小相等。
在该步骤中,在进行数据管理时,先将磁盘按逻辑上划分成多个存储池,且同一存储池中的块大小相等,例如可以将磁盘划分成2048个存储池,池中块的大小依次为512B, 1K, 1.5K, 2K, 2.5K,… 1M,也就是说所划分出的2048个存储池有512B的块池,有1K的块池,有1.5K的块池,以此类推,均可以为512B的倍数。
步骤12:在内存中设置入口索引数组,所述入口索引数组用来表示各个存储池的信息。
在该步骤中,按照上述步骤11的划分之后,在内存中设置入口索引数组,通过该入口索引数组来表示各个存储池的信息,所述入口索引数组包括:存储池的池索引、存储池中各个块的块位图、存储池的总长度以及存储池中块的大小。其中,存储池的总长度为可选。
上述存储池的池索引指向各个存储池,上述块位图用来表示存储池中各个块的使用情况,具体通过对所述块位图标识空闲或占用来实现,例如可以通过0,1序列来标识,初始化时标识为0表示空闲,若某个块被数据占用时标识为1。
步骤13:当接收到针对键值对key-value类型的记录的写操作时,通过内存中所设置的入口索引数组定位所述value对应的数据在所述磁盘中的存储位置,并根据所述存储位置进行所述数据的写操作。
在该步骤中,经过上述步骤的操作之后,就可以通过内存中所设置的入口索引数组来定位某一数据记录在所述磁盘中的存储位置,并根据该存储位置进行该数据的写操作。
这里,一个数据可以用一个键值对Key-Value类型的记录来标识,一个记录的Key在整个数据库中是唯一的,根据这个Key可以找到该记录,也就是该数据。比如键值对(key1, “hello,world”),通过在数据库中查找key1,就可以找到Value :“hello,world”。
具体来说,当应用程序写一个键值对Key-Value类型的记录时,根据Value的大小获得相应存储池的池索引(举例来说:写一个键值对Key-Value类型的记录,它的value的大小是1000B,磁盘文件若划分为512B,1024B,1.5K……1M,共2048个存储池,则Value的大小向上取整(>=value的512的倍数),1000B 向上取整就为1024B,那么该记录应该被存放到块大小为1024B的存储池中,从而进一步确定该1024B的存储池对应的池索引)。
然后,根据该池索引获得内存中设置的相应存储池的入口索引数组,从该入口索引数组中获得该存储池的块位图信息,找到存储池中的空闲块,并得到该记录要存放的块索引;根据该块索引、存储池中块的大小和存储池起始位置来计算获得该记录在所述磁盘中的存储位置,例如,若在入口索引数组中存放着该记录的存储池的起始位置为200000,根据块索引得到块位图信息,发现第一个空闲的块(假如为第10个,该块索引即为10),则存放该记录的存储位置targetPos = 200000 + 10 * 1024 = 210240,即表示该记录在磁盘中的存储位置,再进行数据写操作,把该记录存储在所述存储位置中。
另外,上述在根据Value的大小获得相应存储池的池索引之后,还包括计算所述池索引对应的存储池的起始位置的过程,在记录各个存储池在磁盘中的排列顺序,所述入口索引数组还包括存储池的总长度,计算所述池索引对应的存储池的起始位置具体包括:将排列在所述池索引对应的存储池之前的所有存储池的总长度之和加1即为所述池索引对应的存储池的起始位置。
上述存储池起始位置指的是每个存储池在磁盘文件中的逻辑位置,在系统启动初始化时第一个存储池的起始位置为0,第二个存储池的起始位置是第一个存储池在磁盘文件中所占空间+1,记录各个存储池在磁盘中的排列顺序,然后依次类推得到所有存储池的起始位置,即将排列在所述池索引对应的存储池之前的所有存储池的总长度之和加1即为所述池索引对应的存储池的起始位置。另一方面,当入口索引数组不包括存储池的总长度时,也可以通过存储池中的块的数量和块的大小计算得到存储池的总大小。
另外,在数据写操作成功后,所述方法还包括:将所述记录所存放的块位图的标记修改为占用;将所述记录的key,指向该记录位置的池索引和块索引作为一个三元组存放在内存中,以方便后继通过该三元组可以快速定位某条记录的位置,进行相应的删除或查找操作。
另外,本发明实施例所述方法还可以进行读操作,当应用程序读一个键值对Key-Value类型的记录时,根据该记录的Key在内存中查找三元组文件,如果没有找到,则表示数据库中无此记录,读操作结束;否则找到一个三元组文件key,池索引和块索引;根据该池索引找到存放该记录的存储池的起始位置,并根据块索引计算出块在该存储池中的偏移量;根据所计算出的偏移量得到该记录在磁盘中的存储位置,并从该存储位置上取出该记录的Value。
另外,本发明实施例所述方法还可以进行删除操作,当应用程序删除一个键值对Key-Value类型的记录时,根据该记录的Key在内存中查找三元组文件,如果没有找到,则删除操作结束;否则返回一个三元组文件key,池索引和块索引;从内存中删除该三元组文件,并根据块索引将存放该记录的块位图标记为空闲。
本发明实施例还提供了另一种数据管理方法,如图2所示为本发明实施例所述数据管理方法的另一流程示意图,图2中包括:
步骤21:将磁盘划分成多个存储池,且同一存储池中的块大小相等。
步骤22:在内存中设置入口索引数组,通过该入口索引数组来表示各个存储池的信息。
步骤23:内存中存储有键值对key-value类型的记录对应的三元组,所述三元组包括所述记录的Key,以及存储所述记录的存储池的池索引和块索引。
步骤24:当应用程序读或删除一个键值对Key-Value类型的记录时,查找并获取三元组。
在该步骤中,当应用程序读或删除一个键值对Key-Value类型的记录时,根据该记录的Key在内存中查找三元组,如果没有找到,则表示数据库中无此记录,读或删除操作结束;否则找到一个三元组key,池索引和块索引。
步骤25:若进行读操作,则根据所述三元组中的池索引找到存放该记录的存储池的起始位置,并根据所述存储池中块的大小和所述三元组中的块索引计算出块在所述存储池中的偏移量;根据所述起始位置和所述偏移量得到所述记录在磁盘中的存储位置,从所述存储位置读取所述记录的Value。
步骤26:若进行删除操作,则从内存中删除该三元组,并根据所述三元组的池索引和块索引将存放所述记录的块的块位图标记为空闲。
通过上述方法实施例的技术方案,就能够有效的管理海量数据,而不需要进行磁盘碎片整理,使磁盘利用率可以大幅提高,并大大的提高索引和读取K-V的速度,从而提供高效的数据存储和管理操作。
下面以具体的实例来对上述技术方案进行详细描述,本实例把磁盘空间按逻辑上划分成多个存储池,同一个池中的块大小是相等的;具体可以把磁盘划分成2048个存储池,池中块的大小依次为512B, 1K, 1.5K, 2K, 2.5K,… 1M;如图3所示为本实例所述方法所显示的模型示意图。
在内存中存放一个入口索引数组,该入口索引数组的元素可以通过一个结构体struct idx_bpool来实现,用来表示某一个存储池的信息,该入口索引数组的元素的具体信息如下表所示:
元素 描述
Int idx 池索引 ,指向一个存储池
BitMap bm 块位图 ,用来表示存储池中块的使用情况:0表示空闲,1表示占用。
long len 存储池的总长度
int blockSize 存储池内每个块的大小
下面以具体的写、读和删除操作来进行描述,如图4所示为写操作的流程示意图,本实例中对所有操作的value的长度向上取整为512B的倍数,在图4中:
当应用程序写一个键值对(key,value)类型的记录时,
步骤1: 应用程序写一个(key,value)类型记录,开始进行写操作;
步骤2: 使用标准库函数得到value的长度,向上取整为512的倍数,然后根据得到的值获得池索引,即找到要存放该记录的存储池;
例如,若最大存储块为1M,要存放一个1M300B的记录,则可将它存放到2个空闲的1M存储块中,即第一个存储块存放前1M数据,第二个存储块存放剩下的300B数据,并且该存储块余下空间不能再存放别的数据。
另外,若需要多个存储池进行存储,则找到多个存储池的池索引。
步骤3:根据该存储池的位图,找到池中第一个空闲的块(即找到位图中第一个为空闲的位置),同时也得到该记录要存放的块索引。
这里,位图是一种数据结构,用来表示存储池中块的使用情况,实现形式可以是一串0,1序列,例如在位图初始化的时候全是0,表示该块的状态是空闲;若某个块被数据占用,就在位图相应位置中标记为1;若某个块中数据被删除,在位图相应位置中标记为0 。
比如一个位图0000 0000,它可以表示存储池中8个块的使用情况;当池中的第一个块和第二个块存储数据后,位图相应位置设置为1,即位图变为1100 0000;当池中第二个块的数据被删除后,位图相应位置设置为0,即位图变为 1000 0000。
步骤4: 根据块索引计算出块在该存储池中的偏移量offset。
其中,存储池中每一个块的大小size都存储在内存中所设置的入口索引数组,其表现形式为结构体struct idx_bpool,从中可以直接获得;计算过程举例如下:
假如块索引为3,则块在存储池中的偏移量为3 * size。
该记录在磁盘中存放的位置targetLocation = 该存储池起始位置 + 3 * size 。
另外,若有多个存储池的池索引,则每个存储池下的块索引都单独获得,并分别计算出在磁盘中存放的位置。
步骤5: 开始进行输入输出IO操作,把记录直接存储在存储池中,存储位置为上述步骤4中所算出的targetLocation;
另外,若需要多个存储池进行存储,则根据分别计算出的存储位置,将记录分别存储在上述位置,例如上述要存放一个1M300B的记录,则可将它存放到2个空闲的1M存储块中,即第一个存储块存放前1M数据,第二个存储块存放剩下的300B数据。
步骤6: 如果本次IO失败,则直接返回false;
步骤7: 如果本次IO操作成功,则修改元数据。
具体修改元数据的过程为:把位图中相应位置置1,即标记该块为使用状态;把key和指向该记录位置的池索引,块索引,作为一个三元组(key, 池索引, 块索引)存放到一个文件中;该文件被映射进内存中,通过它可以快速的定位某条记录的位置,方便删除或者查找等操作。
步骤8:返回本次IO操作的结果,如果写入成功则返回true,否则返回false;
步骤9:返回写操作的结果,写成功返回true,否则false,本次写操作结束。
上面介绍了写操作的流程,下面再介绍读操作和删除操作的流程,读操作和删除操作可以发生在写操作之后或之前,本发明对此不加以限定,如图5所示为读操作的流程示意图,当应用程序读一个键值对(key,value)类型的记录时,如图5所示:
步骤1:应用程序读一个(key,value)记录,开始读操作;
步骤2:在三元组文件中查找这个key,如果没有找到,则表示数据库中无此记录,返回一个NULL,本次读操作结束;否则找到一个三元组(key, 池索引, 块索引);
步骤3:根据池索引找到存放存储池的起始位置SET_POS;根据块索引计算出块在该存储池中的偏移量offset。
其中存储池中每一个块的大小size都存储在结构体struct idx_bpool中,可以直接获得;计算过程举例如下:
假如块索引为3,则块在存储池中的偏移量为3 * size。
该记录在磁盘中存放的位置为targetLocation = SET_POS + 3 * size 。
步骤4:根据步骤3算出的存储位置,即targetLocation,直接从存储池里取出value;
步骤5:如果取value操作成功,则返回这条记录,否则返回false;
步骤6:返回读操作的结果,成功返回一条记录,否则返回false;
如图6所示为删除操作的流程示意图,当应用程序删除一个键值对(key,value)的记录时,如图6所示:
步骤1:应用程序删除一个(key,value)记录,开始删除操作;
步骤2:根据key,在三元组文件里面查找相应的三元组,如果没有找到,则返回false,删除操作结束;否则返回这个三元组(key, 池索引, 块索引),并且从文件中删除这个三元组。
步骤3:根据池索引从入口索引数组里得到相应的结构体struct idx_bpool;
步骤4:根据块索引,把位图里面的相应位置标记为0,表示这个块空闲,可以用来存放新的记录;
步骤5:返回删除操作结果,如果成功返回true,否则返回false;本次删除操作结束。
通过上述的读、写和删除操作的过程可知,本实施例所述的数据管理方法能够有效的管理海量数据,而不需要进行磁盘碎片整理,使磁盘利用率可以大幅提高,并大大的提高索引和读取K-V的速度,从而提供高效的数据存储和管理操作。
本发明实施例还提供了一种数据管理的装置,如图7所示为本发明实施例所述装置的结构示意图,所述装置包括:
存储池划分单元71,设置在磁盘中,用于将磁盘划分成多个存储池,且同一存储池中的块的大小相等;具体实现过程见以上方法实施例所述。
存储池信息设置单元72,设置在内存中,用于设置入口索引数组,通过该入口索引数组来表示各个存储池的信息;具体实现过程见以上方法实施例所述。
数据写操作单元73,用于当接收到针对键值对key-value类型的记录的写操作时,通过所述存储池信息设置单元72中所设置的入口索引数组定位所述value对应的数据在所述磁盘中的存储位置,并根据所述存储位置进行所述数据的写操作,具体实现过程见以上方法实施例所述。
另外,在具体实现过程中,所述数据写操作模块73具体还包括:
池索引获取模块731,用于当应用程序写一个键值对Key-Value类型的记录时,根据Value的长度值获得相应存储池的池索引;
块信息获取模块732,用于根据该池索引获得内存中设置的相应存储池的入口索引数组,从该入口索引数组中获得该存储池的块位图信息,找到存储池中的空闲块,并得到该记录要存放的块索引;
存储位置计算模块733,用于根据该块索引、存储池中块的大小和存储池起始位置来计算获得该记录在所述磁盘中的存储位置;
记录存储模块734,用于进行写操作,把该Key-Value类型的记录存储在所述存储位置中。
本发明实施例还提供了另一种数据管理的装置,如图8所示为所提供的另一种数据管理装置的结构示意图,所述装置包括:
存储池划分单元81,设置在磁盘中,用于将磁盘划分成多个存储池,且同一存储池中的块大小相等。
存储池信息设置单元82,设置在内存中,用于设置入口索引数组,通过该入口索引数组来表示各个存储池的信息。
三元组存储单元83,设置在内存中,用于存储键值对key-value类型的记录对应的三元组,所述三元组包括所述记录的Key,以及存储所述记录的存储池的池索引和块索引。
三元组获取模块84,用于当应用程序读或删除所述键值对Key-Value类型的记录时,根据所述记录的Key在内存中查找对应的三元组。
数据读操作模块85,用于在进行读操作时,根据所述三元组中的池索引找到存放该记录的存储池的起始位置,并根据所述存储池中块的大小和所述三元组中的块索引计算出块在所述存储池中的偏移量;根据所述起始位置和所述偏移量得到所述记录在磁盘中的存储位置,从所述存储位置读取所述记录的Value。
数据删除操作模块86,用于在进行删除操作时,从内存中删除查找到的所述三元组,并根据所述三元组的池索引和块索引将存放所述记录的块的块位图标记为空闲。
值得注意的是,上述装置实施例中,所包括的各个单元或模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
另外,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件完成,相应的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
综上所述,本发明实施例能够有效的管理海量数据,而不需要进行磁盘碎片整理,使磁盘利用率可以大幅提高,并大大的提高索引和读取K-V的速度,从而提供高效的数据存储和管理操作。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明实施例揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

Claims (16)

  1. 一种数据管理的方法,其特征在于,所述方法包括:
    将磁盘划分成多个存储池,且同一存储池中的块的大小相等;
    在内存中设置入口索引数组,所述入口索引数组用来表示各个存储池的信息;
    当接收到针对键值对key-value类型的记录的写操作时,通过内存中所设置的入口索引数组定位所述value对应的数据在所述磁盘中的存储位置,并根据所述存储位置进行所述数据的写操作。
  2. 根据权利要求1所述的方法,其特征在于,所述入口索引数组包括:存储池的池索引、存储池中各个块的块位图以及存储池中块的大小。
  3. 根据权利要求2所述的方法,其特征在于,所述块位图用来表示存储池中各个块的使用情况。
  4. 根据权利要求2所述的方法,其特征在于,所述通过内存中所设置的入口索引数组定位所述value对应的数据在所述磁盘中的存储位置,并根据所述存储位置进行所述数据的写操作,具体包括:
    当将键值对Key-Value类型的记录写入磁盘时,根据Value的大小获得相应存储池的池索引;
    根据所述池索引获得内存中设置的相应存储池的入口索引数组,从所述入口索引数组中获得所述存储池的块位图,根据所述块位图确定用于存储所述记录的空闲块,获取所述空闲块的块索引;
    根据所述块索引、所述存储池中块的大小和存储池的起始位置来计算出所述记录在所述磁盘中的存储位置;
    进行写操作,将所述记录存储在所述存储位置中。
  5. 根据权利要求4所述的方法,其特征在于,在根据Value的大小获得相应存储池的池索引之后,所述方法还包括计算所述池索引对应的存储池的起始位置。
  6. 根据权利要求5所述的方法,其特征在于,记录各个存储池在磁盘中的排列顺序,所述入口索引数组还包括存储池的总长度,
    所述计算所述池索引对应的存储池的起始位置包括:将排列在所述池索引对应的存储池之前的所有存储池的总长度之和加1即为所述池索引对应的存储池的起始位置。
  7. 根据权利要求4所述的方法,其特征在于,在数据写操作成功后,所述方法还包括:
    将存放所述记录的块的块位图标记修改为占用;
    将所述记录的key、指向所述记录位置的池索引和块索引组成三元组存放在内存中。
  8. 根据权利要求7所述的方法,其特征在于,所述方法还包括进行数据的读操作,具体包括:
    当读取键值对Key-Value类型的记录时,根据所述记录的Key在内存中查找对应的三元组;
    根据查找到的所述三元组的池索引获得存放所述记录的存储池的起始位置,并根据所述存储池中块的大小和所述三元组中的块索引计算出块在所述存储池中的偏移量;
    根据所述起始位置和所述偏移量得到所述记录在磁盘中的存储位置,从所述存储位置读取所述记录的Value。
  9. 根据权利要求7所述的方法,其特征在于,所述方法还包括进行数据的删除操作,具体包括:
    当删除键值对Key-Value类型的记录时,根据所述记录的Key在内存中查找对应的三元组;
    从内存中删除该三元组,并根据所述三元组的池索引和块索引将存放所述记录的块的块位图标记为空闲。
  10. 根据权利要求1-7其中之一所述的方法,其特征在于,对所述键值对Key-Value中的value进行写操作之前,将该value的长度向上取整为512字节的倍数。
  11. 一种数据管理的方法,其特征在于,所述方法包括:
    将磁盘划分成多个存储池,且同一存储池中的块大小相等;
    在内存中设置入口索引数组,所述入口索引数组用来表示各个存储池的信息;
    内存中存储有键值对key-value类型的记录对应的三元组,所述三元组包括所述记录的Key,以及存储所述记录的存储池的池索引和块索引;
    当应用程序读或删除所述键值对Key-Value类型的记录时,根据所述记录的Key在内存中查找对应的三元组;
    当进行读操作时,则根据所述三元组中的池索引找到存放该记录的存储池的起始位置,并根据所述存储池中块的大小和所述三元组中的块索引计算出块在所述存储池中的偏移量;根据所述起始位置和所述偏移量得到所述记录在磁盘中的存储位置,从所述存储位置读取所述记录的Value;
    当进行删除操作时,从内存中删除查找到的所述三元组,并根据所述三元组的池索引和块索引将存放所述记录的块的块位图标记为空闲。
  12. 如权利要求11所述的方法,其特征在于,所述入口索引数组包括:存储池的池索引、存储池中各个块的块位图以及存储池中块的大小。
  13. 根据权利要求11所述的方法,其特征在于,所述块位图用来表示存储池中各个块的使用情况。
  14. 一种数据管理的装置,其特征在于,所述装置包括:
    存储池划分单元,设置在磁盘中,用于将磁盘划分成多个存储池,且同一存储池中的块的大小相等;
    存储池信息设置单元,设置在内存中,用于设置入口索引数组,通过该入口索引数组来表示各个存储池的信息;
    数据写操作单元,用于当接收到针对键值对key-value类型的记录的写操作时,通过所述存储池信息设置单元中所设置的入口索引数组定位所述value对应的数据在所述磁盘中的存储位置,并根据所述存储位置进行所述数据的写操作。
  15. 如权利要求14所述的装置,其特征在于,所述数据写操作单元包括:
    池索引获取模块,用于当将键值对Key-Value类型的记录写入磁盘时,根据Value的大小获得相应存储池的池索引;
    块信息获取模块,用于根据所述池索引获得内存中设置的相应存储池的入口索引数组,从所述入口索引数组中获得所述存储池的块位图,根据所述块位图确定用于存储所述记录的空闲块,获取所述空闲块的块索引;
    存储位置计算模块,用于根据所述块索引、所述存储池中块的大小和存储池的起始位置来计算出所述记录在所述磁盘中的存储位置;
    记录存储模块,用于进行写操作,将所述记录存储在所述存储位置中。
  16. 一种数据管理的装置,其特征在于,所述装置包括:
    存储池划分单元,设置在磁盘中,用于将磁盘划分成多个存储池,且同一存储池中的块大小相等;
    存储池信息设置单元,设置在内存中,用于设置入口索引数组,通过该入口索引数组来表示各个存储池的信息;
    三元组存储单元,设置在内存中,用于存储键值对key-value类型的记录对应的三元组,所述三元组包括所述记录的Key,以及存储所述记录的存储池的池索引和块索引;
    三元组获取模块,用于当应用程序读或删除所述键值对Key-Value类型的记录时,根据所述记录的Key在内存中查找对应的三元组;
    数据读操作模块,用于在进行读操作时,根据所述三元组中的池索引找到存放该记录的存储池的起始位置,并根据所述存储池中块的大小和所述三元组中的块索引计算出块在所述存储池中的偏移量;根据所述起始位置和所述偏移量得到所述记录在磁盘中的存储位置,从所述存储位置读取所述记录的Value;
    数据删除操作模块,用于在进行删除操作时,从内存中删除查找到的所述三元组,并根据所述三元组的池索引和块索引将存放所述记录的块的块位图标记为空闲。
PCT/CN2011/080446 2011-09-30 2011-09-30 数据管理的方法及装置 WO2013044502A1 (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201180001900.2A CN103140840B (zh) 2011-09-30 2011-09-30 数据管理的方法及装置
PCT/CN2011/080446 WO2013044502A1 (zh) 2011-09-30 2011-09-30 数据管理的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2011/080446 WO2013044502A1 (zh) 2011-09-30 2011-09-30 数据管理的方法及装置

Publications (1)

Publication Number Publication Date
WO2013044502A1 true WO2013044502A1 (zh) 2013-04-04

Family

ID=47994167

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2011/080446 WO2013044502A1 (zh) 2011-09-30 2011-09-30 数据管理的方法及装置

Country Status (2)

Country Link
CN (1) CN103140840B (zh)
WO (1) WO2013044502A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111897666A (zh) * 2020-08-05 2020-11-06 北京图森未来科技有限公司 用于多进程之间通信的方法、设备及系统
CN113961153A (zh) * 2021-12-21 2022-01-21 杭州趣链科技有限公司 一种索引数据写入磁盘的方法、装置及终端设备

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104182508B (zh) * 2014-08-19 2018-10-30 华为技术有限公司 一种数据处理方法和数据处理装置
CN104360819B (zh) * 2014-09-29 2018-04-27 华为技术有限公司 数据写入方法及装置
CN106294603B (zh) * 2016-07-29 2019-07-23 北京奇虎科技有限公司 文件存储方法及装置
CN106708427B (zh) * 2016-11-17 2019-05-10 华中科技大学 一种适用于键值对数据的存储方法
CN108614734B (zh) * 2016-12-13 2022-08-12 迈普通信技术股份有限公司 安全参数索引管理方法及装置
CN107783732A (zh) * 2017-10-30 2018-03-09 郑州云海信息技术有限公司 一种数据读写方法、系统、设备及计算机存储介质
CN110908996A (zh) * 2018-09-18 2020-03-24 北京京东尚科信息技术有限公司 一种数据处理的方法和装置
CN109933291B (zh) * 2019-03-20 2022-05-06 浪潮商用机器有限公司 一种sram数据的处理方法、装置、设备及存储介质
CN112214468B (zh) * 2020-10-18 2023-01-06 苏州浪潮智能科技有限公司 一种分布式存储系统小文件加速方法、装置、设备及介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030074341A1 (en) * 2001-10-11 2003-04-17 International Business Machines Corporation Method and system for dynamically managing hash pool data structures
CN1432922A (zh) * 2001-12-27 2003-07-30 日本电气株式会社 能够有效使用存储器的存储池管理方法和系统
CN101997918A (zh) * 2010-11-11 2011-03-30 清华大学 异构san环境中的海量存储资源按需分配的实现方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030074341A1 (en) * 2001-10-11 2003-04-17 International Business Machines Corporation Method and system for dynamically managing hash pool data structures
CN1432922A (zh) * 2001-12-27 2003-07-30 日本电气株式会社 能够有效使用存储器的存储池管理方法和系统
CN101997918A (zh) * 2010-11-11 2011-03-30 清华大学 异构san环境中的海量存储资源按需分配的实现方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111897666A (zh) * 2020-08-05 2020-11-06 北京图森未来科技有限公司 用于多进程之间通信的方法、设备及系统
CN111897666B (zh) * 2020-08-05 2024-02-06 北京图森未来科技有限公司 用于多进程之间通信的方法、设备及系统
CN113961153A (zh) * 2021-12-21 2022-01-21 杭州趣链科技有限公司 一种索引数据写入磁盘的方法、装置及终端设备
CN113961153B (zh) * 2021-12-21 2022-11-04 杭州趣链科技有限公司 一种索引数据写入磁盘的方法、装置及终端设备

Also Published As

Publication number Publication date
CN103140840A (zh) 2013-06-05
CN103140840B (zh) 2016-08-03

Similar Documents

Publication Publication Date Title
WO2013044502A1 (zh) 数据管理的方法及装置
WO2018014582A1 (zh) 保单数据处理方法、装置、服务器和存储介质
JP3938594B2 (ja) ファイル名生成装置
WO2020041928A1 (zh) 数据存储方法、系统及终端设备
WO2013075306A1 (zh) 数据访问方法和装置
WO2014189190A1 (ko) 데이터 부재 태깅 기반의 정보 검색 시스템 및 방법
WO2012083754A1 (zh) 处理脏数据的方法及装置
CN109522283B (zh) 一种重复数据删除方法及系统
WO2009033419A1 (fr) Procédé de traitement de mise en antémémoire de données, système et dispositif de mise en antémémoire de données
WO2019029504A1 (zh) 防止误删除文件方法以及移动终端
CN107918612A (zh) 键值存储系统数据结构的实现方法和装置
WO2021107211A1 (ko) 인메모리 데이터베이스 기반의 시계열 데이터 관리시스템
Lee et al. Video indexing: an approach based on moving object and track
WO2015024406A1 (zh) 一种数据文件的管理方法及装置
WO2021179488A1 (zh) 监控数据存储方法、设备、服务器及存储介质
WO2011023121A1 (zh) 一种次级内存的分配方法和装置
WO2018090759A1 (zh) 一种系统启动文件的校验及编译方法
WO2018018990A1 (zh) 环境信息的存储回放方法、存储回放系统及终端
CN112115002A (zh) 从损坏或不可信机械硬盘恢复文件的方法及装置
WO2015056818A1 (en) Counting bloom filter
WO2005066835A1 (fr) Procede d'extraction d'un enregistrement d'une page de donnees d'une base de donnees
CN111897675A (zh) 一种手机端f2fs文件系统的近期删除文件恢复方法
CN108021472B (zh) ReFS文件系统的格式化恢复方法及存储介质
RU2389066C2 (ru) Многомерная база данных и способ управления многомерной базой данных
WO2015163697A1 (ko) Db2 데이터베이스에서 데이터를 복원하는 방법 및 장치

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 201180001900.2

Country of ref document: CN

121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 11873129

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 11873129

Country of ref document: EP

Kind code of ref document: A1