CN108052582A - 一种访问数据库的方法和装置 - Google Patents
一种访问数据库的方法和装置 Download PDFInfo
- Publication number
- CN108052582A CN108052582A CN201711302980.0A CN201711302980A CN108052582A CN 108052582 A CN108052582 A CN 108052582A CN 201711302980 A CN201711302980 A CN 201711302980A CN 108052582 A CN108052582 A CN 108052582A
- Authority
- CN
- China
- Prior art keywords
- address
- write
- data block
- ssd
- read
- Prior art date
- Legal status (The legal status 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 status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供了一种访问数据库的方法和装置,涉及IT领域,能够解决通过文件系统访问数据库时所导致的数据库性能下降的问题。该方案包括:网络设备获取待读写的数据块的第一地址和待读写的数据块的第二地址;网络设备根据第一地址确定待读写的数据块对应的目标哈希桶;根据第二地址遍历目标哈希桶中的表项;若网络设备确定目标哈希桶中存在与第二地址匹配的表项,网络设备根据第一地址和第二地址确定待读写的数据块在第一类SSD中对应的第一扇区的LBA;网络设备读取第一扇区的LBA中的数据。本申请实施例可以应用于网络加速和重复数据删除领域。
Description
技术领域
本申请涉及信息技术(Information Technology,IT)领域,尤其涉及一种访问数据库的方法和装置。
背景技术
随着互联网技术的发展,服务器和网络设备之间交互的数据量越来越大,交互数据的次数也越来越频繁,从而产生了大容量的数据库。
现有的大容量的数据库通常以文件系统存储数据,文件系统可以通过数据库文件管理存储设备(例如,固态硬盘(Solid State Drives,SSD))上存储的数据。当某个应用的线程需要对SSD上的数据进行读写操作时,可以通过相应的数据库文件获取所需的数据。
但是,当应用的线程通过数据库文件获取所需的数据时,需要将该数据库文件锁定,导致其他线程无法访问该数据库文件,即无法进行多核并发,导致数据库的性能下降。
发明内容
本申请的实施例提供一种访问数据库的方法和装置,能够解决通过文件系统访问数据库时所导致的数据库性能下降的问题。
为达到上述目的,本申请的实施例采用如下技术方案:
第一方面,本申请实施例提供一种访问数据库的方法,数据库包括计算机内存储器部分和SSD部分,计算机内存储器部分包括至少一个哈希桶,SSD部分包括第一类SSD,第一类SSD中的每个SSD包括至少一个扇区;该方法包括:
网络设备获取待读写的数据块的第一地址和待读写的数据块的第二地址,第一地址用于指示待读写的数据块对应的目标哈希桶,第二地址用于匹配目标哈希桶中的表项;
网络设备根据第一地址确定待读写的数据块对应的目标哈希桶;
根据第二地址遍历目标哈希桶中的表项;
若网络设备确定目标哈希桶中存在与第二地址匹配的表项,网络设备根据第一地址和第二地址确定待读写的数据块在第一类SSD中对应的第一扇区的逻辑区块地址(Logical Block Address,LBA);
网络设备读取第一扇区的LBA中的数据。
第二方面,本申请实施例提供一种网络设备,应用于访问数据库的场景中,数据库包括计算机内存储器部分和固态硬盘SSD部分,计算机内存储器部分包括至少一个哈希桶,SSD部分包括第一类SSD,第一类SSD中的每个SSD包括至少一个扇区;该网络设备包括:
获取单元,用于获取待读写的数据块的第一地址和待读写的数据块的第二地址,第一地址用于指示待读写的数据块对应的目标哈希桶,第二地址用于匹配目标哈希桶中的表项;
处理单元,用于根据第一地址确定待读写的数据块对应的目标哈希桶;
处理单元,还用于根据第二地址遍历目标哈希桶中的表项;
处理单元,还用于若确定目标哈希桶中存在与第二地址匹配的表项,根据第一地址和第二地址确定待读写的数据块在第一类SSD中对应的第一扇区的LBA;
处理单元,还用于读取第一扇区的LBA中的数据。
相比现有技术,以数据库文件索引SSD中的数据,当应用的线程通过数据库文件获取所需的数据时,需要将该数据库文件锁定,导致其他线程无法访问该数据库文件,无法进行多核并发,导致数据库的性能下降。本申请实施例可以将数据库的计算机内存储器部分作为数据库的SSD部分的索引,即可以通过计算机内存储器部分包括的哈希桶对SSD部分进行寻址,例如,根据待读写数据块的第一地址和第二地址获取待读写数据块在第一类SSD中对应的第一扇区的逻辑区块地址LBA。其中,第一地址用于指示待读写的数据块对应的目标哈希桶,第二地址用于匹配目标哈希桶中的表项。而后,网络设备可以读取第一扇区的LBA中的数据。本申请实施例提供的访问数据库的方法可以实现多核并发,当然,本申请实施例不限于此,从而能够解决通过文件系统访问数据库时所导致的数据库性能下降的问题。
附图说明
图1为本申请实施例提供的一种数据库的结构示意图;
图2为本申请实施例提供的一种访问数据库的方法流程示意图;
图3为本申请实施例提供的一种网络设备的结构示意图。
具体实施方式
下面结合附图对本申请实施例提供的访问数据库的方法和装置进行详细描述。
为了下述各实施例的描述清楚简洁,首先给出相关概念或技术的简要介绍:
数据块:可以是一组或几组按顺序连续排列在一起的记录,是SSD与输入设备或输出设备之间进行传输的数据单位。
扇区:可以是SSD上的地址存储单位。每个扇区可以包括512字节,每个扇区可以对应一个LBA。LBA可以包括首地址和偏移地址。首地址是在SSD中的扇区分组后,每组扇区的公共地址,偏移地址是每组扇区中某一扇区的地址相对于首地址的偏移量。
信息摘要算法5(Message Digest Algorithm 5,MD5):是计算机广泛使用的杂凑算法(又可以译为摘要算法或哈希算法)之一。任意长度的数据块根据MD5算法得出的MD5值的长度都是固定的。MD5值类似身份标识(Identity,ID),用来指示数据块的唯一性,也就是说,不同的数据根据MD5算法算出的MD5值是不同的。MD5值共计16字节。
哈希桶(Bucket):可以用于解决数据存储地址发生冲突的问题。为了避免将不同的数据块映射到同一个扇区的LBA上,可以建立多个哈希桶。哈希桶可以包括预设数量的表项(Entry),能够处理预设次数的冲突。例如但不限于,每个哈希桶中可以包括16个或32个表项。
本申请的说明书和权利要求书及上述附图中的术语“第一”和“第二”等是用于区别不同对象,而不是用于限定特定顺序。例如,第一扇区和第二扇区仅仅是为了区分不同的扇区,并不对其先后顺序进行限定。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系;在公式中,字符“/”,表示前后关联对象是一种“相除”的关系。
需要说明的是,本申请实施例中,“的(英文:of)”,“相应的(英文:corresponding,relevant)”和“对应的(英文:corresponding)”有时可以混用,应当指出的是,在不强调其区别时,其所要表达的含义是一致的。
本申请实施例的架构如图1所示,数据库包括计算机内存储器部分和SSD部分,SSD部分可以用于存储数据块,计算机内存储器部分可以包括至少一个哈希桶,哈希桶可以用于索引SSD部分的索引存储的数据块,也就是说,可以通过哈希桶对SSD部分进行寻址。需要说明的是,本申请中的SSD可以为其他的存储介质,例如高速存储介质,本申请不做限定。本申请实施例可以应用于网络加速和重复数据删除领域,但本申请不限于此。
本申请实施例提供一种访问数据库的方法,以基于SSD的数据库为例进行说明,如图2所示,包括:
201、网络设备确定数据库的结构。
数据库的结构可以包括计算机内存储器部分和SSD部分。其中,计算机内存储器部分包括至少一个哈希桶,SSD部分可以包括第一类SSD,第一类SSD可以包括多个SSD,其中每个SSD可以包括至少一个扇区。
网络设备确定第一类SSD的过程可以包括:网络设备根据需求设定数据库的容量和数据块的大小,并根据数据库的容量和数据块的大小确定第一类SSD包括的SSD的个数,以及每个SSD包括的扇区的个数。其中,需求可以包括用户需求或网络需求,本申请不做限定。
其中,数据库的容量即数据库包括的全部数据块的大小,例如但不限于为128G,256G,512G或1T等。数据块的大小例如但不限于为200字节,300字节或400字节等。扇区的大小可以为512字节。每个数据块可以对应一个或多个扇区,即每个数据块可以存储在SSD的一个扇区或多个扇区上。
举例来说,假设数据库可以存储1G个数据块,每个数据块的大小为300字节,每个数据块存储在SSD的一个扇区上,则数据库的容量为300G,且数据库的SSD部分可以包括1G个扇区。若每个扇区的大小为512字节,则数据库的SSD部分的大小为512G。
网络设备确定哈希桶的过程可以包括:网络设备获取数据库中每个数据块的MD5值。可以理解的是,不同的数据块的MD5值是不同的。对于每个数据块,网络设备可以根据第一预设规则将该数据块对应的MD5值中的部分比特位确定为该数据块的第一地址。数据块的第一地址即数据块的首地址。其中,第一预设规则可以为将MD5值的前n位比特、后n位比特或中间n位比特作为第一地址。其中,n取决于数据库的容量和/或数据块的大小。
需要说明的是,对于至少两个数据块来说,其中的部分数据块的第一地址可以是相同的。例如,假设有3个数据块,分别为数据块A、数据块B和数据块C。数据块A的MD5值为1010101010,数据块B的MD5值为1010101011,数据块C的MD5值为1110101010。若取数据块的MD5值的前8位比特为第一地址,则数据块A的第一地址为10101010,数据块B的第一地址为10101010,数据块C的第一地址为11101010,可见,数据块A的第一地址和数据块B的第一地址是相同的。
进一步的,网络设备可以根据第一地址相同的数据块的个数确定哈希桶的深度,哈希桶的深度即哈希桶可以包括的表项的个数,哈希桶可以包括至少一个表项。哈希桶中的每个表项可以对应一个数据块。哈希桶可以包括的表项的个数例如但不限于16个或32个。本申请实施例中,表项可以为数据块的第二地址,数据块的第二地址即数据块的偏移地址。网络设备可以根据第二预设规则确定每个数据块的第二地址。第二预设规则可以包括:对于每个数据块,该数据块的第二地址包括的比特位为该数据块对应的MD5值中除数据块的第一地址之外的部分或全部比特位。例如,假设数据块的MD5值包括12位比特,如果数据块的第一地址包括该数据块的MD5值中的前8位比特,那么数据块的第二地址可以包括该数据块的MD5值中的后4位比特或后3位比特等。需要说明的是,同一个哈希桶中的每个数据块对应的第二地址是不同的。
下面以每个SSD包括16m个扇区,每个哈希桶包括16个表项为例对数据库的计算机内存储器部分进行说明。哈希桶的存储形式可以为位图文件(Bitmap)。假设每个扇区可以存储一个数据块,则16m个扇区可以存储16m个数据块,16m个数据块可以对应16m个第一地址和第二地址。其中,m为正整数。如表1所示,假设16m个第一地址中存在m组相同的第一地址,例如,第0组、第1组、第2组、......、第m组。每组第一地址对应16个不同的第二地址(即xKey),例如,xKey0、xKey1、xKey2、......、xKey(16*m-1);则数据库的计算机内存储器部分存在m个哈希桶,每个哈希桶中可以存在16个表项,表项可以为xKey。
表1
0 | xKey0 | xKey1 | ... | xKey15 |
1 | xKey0 | xKey1 | ... | xKey15 |
2 | xKey0 | xKey1 | ... | xKey15 |
... | ... | ... | ... | ... |
m | xKey0 | xKey1 | ... | xKey15 |
其中,每组第一地址中的每个xKey对应SSD中的一个扇区。
如表2所示,为一个SSD上的数据块存储情况。可以根据第一地址对应的编号(例如0、1、2、......、m)确定数据块在SSD对应的扇区的首地址,该首地址可以对应多个扇区。进一步的,可以根据数据块的MD5值在该首地址对应的多个扇区中确定数据块对应的扇区。另外,可以根据数据块的MD5值对数据块进行校验。
表2
0 | 数据块1的MD5值 | 数据块1 |
0 | 数据块2的MD5值 | 数据块2 |
0 | 数据块3的MD5值 | 数据块3 |
... | ... | ... |
0 | 数据块16的MD5值 | 数据块16 |
1 | 数据块17的MD5值 | 数据块17 |
1 | 数据块18的MD5值 | 数据块18 |
1 | 数据块19的MD5值 | 数据块19 |
... | ... | ... |
1 | 数据块32的MD5值 | 数据块32 |
... | ... | ... |
m | 数据块(16m+1)的MD5值 | 数据块(16m+1) |
m | 数据块(16m+2)的MD5值 | 数据块(16m+2) |
m | 数据块(16m+3)的MD5值 | 数据块(16m+3) |
... | ... | ... |
m | 数据块17m的MD5值 | 数据块17m |
在一种可能的设计中,当且网络设备确定目标哈希桶中不存在与待读写的数据块的第二地址匹配的表项时,指示更新目标哈希桶,将第二地址写入目标哈希桶。更新指示用于指示更新哈希桶的表项。举例来说,如表3所示,哈希桶可以包括更新指示,待读写的数据块的第一地址与第0组第一地址相同,网络设备可以根据更新指示确定最早存入的数据块的第二地址,根据最早存入的数据块的第一地址和第二地址删除该数据块,并将新的数据块写入所删除的数据块对应的扇区。而后,可以将更新指示指向最早存入的数据块的下一个数据块。其中,可以根据数据块的时间信息确定数据块的存入时间,本申请对此不作限定。
示例性的,假设第0组第一地址中的xKey0对应的数据块为最早存入的数据块,第0组第一地址中的更新指示可以指向xKey0,当需要存入的新的数据块的第一地址与第0组第一地址相同时,可以根据更新指示删除xKey0对应的数据块,将新的数据块写入所删除的数据块对应的扇区,并将xKey0修改为新的数据块的第二地址。进一步的,可以将更新指示指向xKey1。
表3
0 | 更新指示 | xKey0 | xKey1 | ... | xKey15 |
1 | 更新指示 | xKey16 | xKey17 | ... | xKey15 |
2 | 更新指示 | ... | xKey15 | ||
... | 更新指示 | ... | |||
m | 更新指示 | ... | xKey15 |
需要说明的是,上述以数据块的SSD部分包括一个SSD,计算机内存储器部分包括的m个哈希桶索引一个SSD上的扇区为例进行说明,实际中,本申请中的数据库可以包括多个SSD,计算机内存储器部分包括的哈希桶可以索引多个SSD上的扇区,本申请不做限定。
当读取数据库中的数据时,图2中的过程还包括步骤202-205:
202、网络设备获取待读写数据块的第一地址和待读写数据块的第二地址。
在一种可能的设计中,网络设备可以接收其他设备发送的待读写数据块的MD5值,根据MD5值和第一预设规则获取待读写数据块的第一地址,根据MD5值、第二预设规则以及待读写数据块的第一地址获取待读写数据块的第二地址。
203、网络设备根据待读写数据块的第一地址确定待读写数据块对应的目标哈希桶。
举例来说,参考表2所示,假设待读写数据块的第一地址与第0组第一地址相同,则可以确定目标哈希桶为第0个哈希桶。
204、网络设备遍历目标哈希桶中的表项。
其中,目标哈希桶中包括至少一个表项。若网络设备确定目标哈希桶中存在与第二地址匹配的表项,网络设备根据第一地址和第二地址获取待读写数据块在第一类SSD中对应的第一扇区的LBA。
举例来说,当第一地址包括20位比特位,第二地址包括4位比特位时,LBA=(ADD&&0xfffff0+xkey)/I。其中,ADD即第一地址,xkey即第二地址,I为数据库包括的SSD的个数。
根据步骤203中的举例,网络设备可以遍历第0个哈希桶中的表项。若网络设备确定第0个哈希桶中存在与第二地址匹配的表项(即网络设备确定第0个哈希桶中存在与第二地址相同的表项,但本申请不限于此),网络设备可以根据第一地址和第二地址确定待读写数据块对应的第一扇区的LBA。
205、网络设备读取第一扇区的LBA中的待读写数据块。
网络设备读取LBA中的待读写数据块的过程可以参考现有技术,本申请不做赘述。
当向数据库写入新的数据时,图2中的过程还包括步骤206-209:
206、网络设备获取待读写数据块的第一地址和待读写数据块的第二地址。
在一种可能的设计中,网络设备可以根据待读写数据块计算待读写数据块的MD5值,根据MD5值和第一预设规则获取待读写数据块的第一地址,根据MD5值、第二预设规则以及待读写数据块的第一地址获取待读写数据块的第二地址。
207、网络设备根据待读写数据块的第一地址确定待读写数据块对应的目标哈希桶。
具体过程可以参考步骤203。
208、网络设备确定目标哈希桶中不存在与待读写数据块的第二地址匹配的表项。
需要说明的是,目标哈希桶中不存在与待读写数据块的第二地址匹配的表项包括两种情况。举例来说,第一种情况可以为:目标哈希桶的深度为16,即可以包括16个表项,但目标哈希桶中仅包括了10个表项。此时,若确定目标哈希桶中不存在与待读写数据块的第二地址匹配的表项,可以直接将待读写数据块的第二地址写入目标哈希桶。第二种情况可以为:目标哈希桶的深度为16,且目标哈希桶中已包括了16个表项。此时,若确定目标哈希桶中不存在与待读写数据块的第二地址匹配的表项,可以根据目标哈希桶的更新指示删除对应的数据块,并将所删除的数据块对应的第二地址修改为新的数据块的第二地址。进一步的,可以将更新指示指向下一个数据块。
209、网络设备根据待读写数据块的第一地址和第二地址获取待读写数据块在第一类SSD中对应的第二扇区的LBA,将待读写数据块写入第二扇区的LBA。
举例来说,当第一地址包括20位比特位,第二地址包括4位比特位时,LBA=(ADD&&0xfffff0+xkey)/I。其中,ADD即第一地址,xkey即第二地址,I为数据库包括的SSD的个数。
网络设备将待读写数据块写入LBA的过程可以参考现有技术,本申请不做赘述。
在一种可能的设计中,SSD部分还包括第二类SSD,第二类SSD为冗余SSD,当第一类SSD中的部分或全部SSD无法进行读操作和/或写操作时,图2中的过程还包括步骤210:
210、网络设备根据待读写数据块的第一地址和第二地址对冗余SSD进行读操作和/或写操作。
举例来说,假设第一类SSD包括4个SSD,其中一个SSD为故障SSD,无法进行读写操作,网络设备可以将故障SSD上的数据块存储到冗余SSD上,并将故障SSD的LBA映射到冗余SSD。由此,当网络设备需要读取故障SSD上的数据时,可以从冗余SSD上读取相应的数据;或者当网络设备需要向故障SSD写入数据时,可以向冗余SSD上写入相应的数据,能够提高系统可靠性,适用于高性能的广域网加速场景。
相比现有技术,以数据库文件索引SSD中的数据,当应用的线程通过数据库文件获取所需的数据时,需要将该数据库文件锁定,导致其他线程无法访问该数据库文件,无法进行多核并发,导致数据库的性能下降。本申请实施例可以将数据库的计算机内存储器部分作为数据库的SSD部分的索引,即可以通过计算机内存储器部分包括的哈希桶对SSD部分进行寻址,例如,根据待读写数据块的第一地址和第二地址获取待读写数据块在第一类SSD中对应的第一扇区的逻辑区块地址LBA。其中,第一地址用于指示待读写的数据块对应的目标哈希桶,第二地址用于匹配目标哈希桶中的表项。而后,网络设备可以读取第一扇区的LBA中的数据。本申请实施例提供的访问数据库的方法可以实现多核并发,当然,本申请实施例不限于此,从而能够解决通过文件系统访问数据库时所导致的数据库性能下降的问题。
本申请实施例提供一种网络设备,网络设备上的数据库包括计算机内存储器部分和固态硬盘SSD部分,计算机内存储器部分包括至少一个哈希桶,SSD部分包括第一类SSD,第一类SSD中的每个SSD包括至少一个扇区;网络设备包括:获取单元301和处理单元302,其中:
获取单元301,用于获取待读写的数据块的第一地址和待读写的数据块的第二地址,第一地址用于指示待读写的数据块对应的目标哈希桶,第二地址用于匹配目标哈希桶中的表项;
处理单元302,用于根据第一地址确定待读写的数据块对应的目标哈希桶;
处理单元302,还用于根据第二地址遍历目标哈希桶中的表项,目标哈希桶中包括至少一个表项;
处理单元302,还用于若确定目标哈希桶中存在与第二地址匹配的表项,根据第一地址和第二地址确定待读写的数据块在第一类SSD中对应的第一扇区的逻辑区块地址LBA;
处理单元302,还用于读取第一扇区的LBA中的数据。
处理单元302,还用于:若确定目标哈希桶中不存在与第二地址匹配的表项;根据第一地址和第二地址确定待读写数据块在第一类SSD中对应的第二扇区的LBA;将待读写数据块写入第二扇区的LBA。
处理单元302还用于:根据更新指示将第二地址写入目标哈希桶。
其中,第一地址包括待读写数据块的MD5值中第一部分的比特位;第二地址包括待读写数据块的MD5值中第二部分的比特位,第一部分的比特位与第二部分的比特位不同。
需要说明的是,SSD部分还包括第二类SSD,第二类SSD为冗余SSD,当待读写数据块对应的第一类SSD无法进行读操作和/或写操作时,处理单元302还用于:根据待读写数据块的第一地址和第二地址对冗余SSD进行读操作和/或写操作。
本申请实施例可以将数据库的计算机内存储器部分作为数据库的SSD部分的索引,即可以通过计算机内存储器部分包括的哈希桶对SSD部分进行寻址,例如,根据待读写数据块的第一地址和第二地址获取待读写数据块在第一类SSD中对应的第一扇区的逻辑区块地址LBA。其中,第一地址用于指示待读写的数据块对应的目标哈希桶,第二地址用于匹配目标哈希桶中的表项。而后,网络设备可以读取第一扇区的LBA中的数据。本申请实施例提供的访问数据库的方法可以实现多核并发,当然,本申请实施例不限于此,能够解决通过文件系统访问数据库时所导致的数据库性能下降的问题。
需要说明的是,在具体实现过程中,上述如图2所示的访问数据库的方法所执行的各步骤均可以通过硬件形式的处理器执行存储器中存储的软件形式的计算机执行指令实现,为避免重复,此处不再赘述。而上述访问数据库的方法所执行的动作所对应的程序均可以以软件形式存储于该访问数据库的方法实施的存储器中,以便于处理器调用执行以上各个模块对应的操作。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的方法和装置,可以通过其它的方式实现。例如,以上所描述的实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理包括,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (11)
1.一种访问数据库的方法,其特征在于,所述数据库包括计算机内存储器部分和固态硬盘SSD部分,所述计算机内存储器部分包括至少一个哈希桶,所述SSD部分包括第一类SSD,所述第一类SSD中的每个SSD包括至少一个扇区;所述方法包括:
网络设备获取待读写的数据块的第一地址和所述待读写的数据块的第二地址,所述第一地址用于指示所述待读写的数据块对应的目标哈希桶,所述第二地址用于匹配所述目标哈希桶中的表项;
所述网络设备根据所述第一地址确定所述待读写的数据块对应的目标哈希桶;
根据所述第二地址遍历所述目标哈希桶中的表项;
若所述网络设备确定所述目标哈希桶中存在与所述第二地址匹配的表项,所述网络设备根据所述第一地址和所述第二地址确定所述待读写的数据块在所述第一类SSD中对应的第一扇区的逻辑区块地址LBA;
所述网络设备读取所述第一扇区的LBA中的数据。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述网络设备确定所述目标哈希桶中不存在与所述第二地址匹配的表项;
所述网络设备根据所述第一地址和所述第二地址确定所述待读写数据块在所述第一类SSD中对应的第二扇区的LBA;
所述网络设备将所述待读写数据块写入所述第二扇区的LBA。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
若所述网络设备确定所述目标哈希桶中不存在与所述第二地址匹配的表项,则指示更新所述目标哈希桶,将所述第二地址写入所述目标哈希桶。
4.根据权利要求1或2所述的方法,其特征在于,所述第一地址包括所述待读写数据块的信息摘要算法MD5值中第一部分的比特位;所述第二地址包括所述待读写数据块的MD5值中第二部分的比特位,所述第一部分的比特位与所述第二部分的比特位不同。
5.根据权利要求1或2所述的方法,其特征在于,所述SSD部分还包括第二类SSD,所述第二类SSD为冗余SSD,当所述待读写数据块对应的第一类SSD无法进行读操作和/或写操作时,所述网络设备根据所述待读写数据块的所述第一地址和所述第二地址对所述冗余SSD进行读操作和/或写操作。
6.一种网络设备,其特征在于,应用于访问数据库的场景中,所述数据库包括计算机内存储器部分和固态硬盘SSD部分,所述计算机内存储器部分包括至少一个哈希桶,所述SSD部分包括第一类SSD,所述第一类SSD中的每个SSD包括至少一个扇区;所述网络设备包括:
获取单元,用于获取待读写的数据块的第一地址和所述待读写的数据块的第二地址,所述第一地址用于指示所述待读写的数据块对应的目标哈希桶,所述第二地址用于匹配所述目标哈希桶中的表项;
处理单元,用于根据所述第一地址确定所述待读写的数据块对应的目标哈希桶;
所述处理单元,还用于根据所述第二地址遍历所述目标哈希桶中的表项;
所述处理单元,还用于若确定所述目标哈希桶中存在与所述第二地址匹配的表项,根据所述第一地址和所述第二地址确定所述待读写的数据块在所述第一类SSD中对应的第一扇区的逻辑区块地址LBA;
所述处理单元,还用于读取所述第一扇区的LBA中的数据。
7.根据权利要求6所述的网络设备,其特征在于,所述处理单元,还用于:
若确定所述目标哈希桶中不存在与所述第二地址匹配的表项;
根据所述第一地址和所述第二地址确定所述待读写数据块在所述第一类SSD中对应的第二扇区的LBA;
将所述待读写数据块写入所述第二扇区的LBA。
8.根据权利要求7所述的网络设备,其特征在于,所述处理单元还用于:
确定所述目标哈希桶中不存在与所述第二地址匹配的表项,则指示更新所述目标哈希桶,将所述第二地址写入所述目标哈希桶。
9.根据权利要求6或7所述的网络设备,其特征在于,所述第一地址包括所述待读写数据块的信息摘要算法MD5值中第一部分的比特位;所述第二地址包括所述待读写数据块的MD5值中第二部分的比特位,所述第一部分的比特位与所述第二部分的比特位不同。
10.根据权利要求6或7所述的网络设备,其特征在于,所述SSD部分还包括第二类SSD,所述第二类SSD为冗余SSD,当所述待读写数据块对应的第一类SSD无法进行读操作和/或写操作时,所述处理单元还用于:
根据所述待读写数据块的所述第一地址和所述第二地址对所述冗余SSD进行读操作和/或写操作。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被所述处理器执行时实现权利要求1-5任一项所述的访问数据库的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711302980.0A CN108052582A (zh) | 2017-12-08 | 2017-12-08 | 一种访问数据库的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711302980.0A CN108052582A (zh) | 2017-12-08 | 2017-12-08 | 一种访问数据库的方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108052582A true CN108052582A (zh) | 2018-05-18 |
Family
ID=62123951
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711302980.0A Pending CN108052582A (zh) | 2017-12-08 | 2017-12-08 | 一种访问数据库的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108052582A (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090106486A1 (en) * | 2007-10-19 | 2009-04-23 | Inha-Industry Partnership Institute | Efficient prefetching and asynchronous writing for flash memory |
US20090327376A1 (en) * | 2008-06-30 | 2009-12-31 | Microsoft Corporation | B-file abstraction for efficiently archiving self-expiring data |
CN102541968A (zh) * | 2010-12-31 | 2012-07-04 | 百度在线网络技术(北京)有限公司 | 一种索引方法 |
CN103678166A (zh) * | 2013-08-16 | 2014-03-26 | 记忆科技(深圳)有限公司 | 一种采用固态硬盘作为计算机高速缓存的实现方法及系统 |
CN104199827A (zh) * | 2014-07-24 | 2014-12-10 | 北京大学 | 基于局部敏感哈希的大规模多媒体数据的高维索引方法 |
CN106033420A (zh) * | 2015-03-11 | 2016-10-19 | 杭州华三通信技术有限公司 | 哈希表的处理方法及装置 |
-
2017
- 2017-12-08 CN CN201711302980.0A patent/CN108052582A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090106486A1 (en) * | 2007-10-19 | 2009-04-23 | Inha-Industry Partnership Institute | Efficient prefetching and asynchronous writing for flash memory |
US20090327376A1 (en) * | 2008-06-30 | 2009-12-31 | Microsoft Corporation | B-file abstraction for efficiently archiving self-expiring data |
CN102541968A (zh) * | 2010-12-31 | 2012-07-04 | 百度在线网络技术(北京)有限公司 | 一种索引方法 |
CN103678166A (zh) * | 2013-08-16 | 2014-03-26 | 记忆科技(深圳)有限公司 | 一种采用固态硬盘作为计算机高速缓存的实现方法及系统 |
CN104199827A (zh) * | 2014-07-24 | 2014-12-10 | 北京大学 | 基于局部敏感哈希的大规模多媒体数据的高维索引方法 |
CN106033420A (zh) * | 2015-03-11 | 2016-10-19 | 杭州华三通信技术有限公司 | 哈希表的处理方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10678654B2 (en) | Systems and methods for data backup using data binning and deduplication | |
US11392571B2 (en) | Key-value storage device and method of operating the same | |
EP3260993A1 (en) | File operation method and device | |
CN109299190B (zh) | 分布式存储系统中处理对象的元数据的方法及装置 | |
US10108359B2 (en) | Method and system for efficient cache buffering in a system having parity arms to enable hardware acceleration | |
CN108628541B (zh) | 一种文件存储的方法、装置及存储系统 | |
US20160203235A1 (en) | Striping of directed graphs and nodes with improved functionality | |
CN110851383B (zh) | 一种管理存储系统的方法及设备 | |
EP3767450A1 (en) | Method for deduplication in storage system, storage system, and controller | |
CN104133775A (zh) | 一种用于管理存储器的方法和装置 | |
CN109445687B (zh) | 一种数据存储方法以及协议服务器 | |
CN109976669B (zh) | 一种边缘存储方法、装置和存储介质 | |
CN105117351A (zh) | 向缓存写入数据的方法及装置 | |
US20190324947A1 (en) | Method, device and computer program product for deleting snapshots | |
US11347414B2 (en) | Using telemetry data from different storage systems to predict response time | |
CN109460406A (zh) | 一种数据处理方法及装置 | |
CN115840731A (zh) | 文件处理方法、计算设备及计算机存储介质 | |
CN112463055B (zh) | 一种优化并使用固态硬盘l2p表的方法、系统、设备及介质 | |
CN112269665B (zh) | 内存的处理方法和装置、电子设备和存储介质 | |
CN104408126B (zh) | 一种数据库的持久化写入方法、装置和系统 | |
US20150212847A1 (en) | Apparatus and method for managing cache of virtual machine image file | |
US11226769B2 (en) | Large-scale storage system and data placement method in large-scale storage system | |
US8504764B2 (en) | Method and apparatus to manage object-based tiers | |
US9842061B2 (en) | Implementing advanced caching | |
CN108052582A (zh) | 一种访问数据库的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180518 |