CN109656926A - 数据库的管理方法 - Google Patents
数据库的管理方法 Download PDFInfo
- Publication number
- CN109656926A CN109656926A CN201811583041.2A CN201811583041A CN109656926A CN 109656926 A CN109656926 A CN 109656926A CN 201811583041 A CN201811583041 A CN 201811583041A CN 109656926 A CN109656926 A CN 109656926A
- Authority
- CN
- China
- Prior art keywords
- data
- memory
- storage cell
- hash
- management method
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据库的管理方法,包括用于存储数据的数据存储单元以及用于管理数据的数据库管理单元,其中,数据存储单元用于接收来自外部应用的数据记录存储请求并将所述数据记录存储请求中所包含的待存储数据记录以哈希结构的方式存储到由内存分配管理单元所分配的内存空间中,数据库管理单元与所述数据存储单元连接,并根据数据存储单元中的内存空间的地址对数据存储单元进行控制。本发明提可在大数据量、高频度写入的情况下,依然保障高效的服务质量。
Description
技术领域
本发明涉及数据库技术领域,具体涉及一种数据库的管理方法。
背景技术
近年来,随着NoSql的兴起,涌现了各种KV型的存储引擎。有针对缓存的,也有针对持久化的,在持久化领域中具有代表性的要属LevelDB了。LevelDB是Google开发的高性能KV存储引擎,其灵感源自于Google的BigTable。
尽管LevelDB在小数据量的场景下,已经可以发挥非常不错的性能,然而大数据量(上百G)、高频度写入的情况下,LevelDB在读、写、合并、数据清理、重启恢复等多方面都暴露了其不足之处。如何在大数据量、高频度写入的情况下,依然保障高效的服务质量,是目前亟需解决的技术问题。
发明内容
本发明要解决的技术问题是提供一种数据库的管理方法,可在大数据量、高频度写入的情况下,依然保障高效的服务质量。
为了解决上述技术问题,本发明提供了一种数据库的管理方法,其特征在于:包括用于存储数据的数据存储单元以及用于管理数据的数据库管理单元;
其中,所述数据存储单元用于接收来自外部应用的数据记录存储请求并将所述数据记录存储请求中所包含的待存储数据记录以哈希结构的方式存储到由内存分配管理单元所分配的内存空间中;
数据查询单元,所述数据查询单元用于接收来自外部应用的数据记录查询请求,并基于所述数据记录查询请求执行查询操作,随之将查询结果传送回所述外部应用;
所述内存分配管理单元,所述内存分配管理单元用于根据来自所述数据存储单元的内存分配指令分配内存空间,并将所分配的内存空间的地址传送回所述数据存储单元;
所述数据库管理单元与所述数据存储单元连接,并根据数据存储单元中的内存空间的地址对数据存储单元进行控制。
在其中一个实施例中,:所述数据存储单元被配置为存储第一数据,所述第一数据包括相应的键和值,先将第一数据写入数据存储单元的内部存储器的内存表,其中,写入所述内存表中的数据按照键的大小有序存储;
在所述内存表的大小超过预定阈值时,将所述内存表转化为只读内存表,并将所述数据存储单元中的后续数据写入新的内存表;
将所述只读内存表中的数据写入外部存取器中,得到一次存储数据;以及合并两个或更多个一级存储数据,以得到二级存储数据。
在其中一个实施例中,以第一命名规则指定所述一级存储数据的主文件名;以及以第二命名规则指定所述二级存储文件的主文件名,所述第一命名规则与所述第二命名规则不同,以便基于主文件名区分存储文件是一级存储文件还是二级存储文件。
在其中一个实施例中,所述内存表由一个哈希表组成,所述哈希表包括一个或多个哈希桶,每个哈希桶对应一个跳表,所述内存表中的每条数据构成所述跳表的一个元素,其中,所述跳表中的元素的顺序是按照键的大小有序排列的。
在其中一个实施例中,当接收到所述数据记录存储请求后,所述数据存储单元基于所述数据记录存储请求中所包含的待存储的数据记录的大小构造内存分配指令,随之将所述内存分配指令传送到内存池管理单元,其中,所述内存分配指令包含待分配的内存空间的大小。
在其中一个实施例中,所述小块内存空间是小于2M的内存空间,并且同一个内存簇中的所有内存块的大小均相同,而所有内存簇中的每个内存桶的大小均为2M。
在其中一个实施例中,不同内存簇中的内存块的大小依次按照增长因子呈倍数增长。
在其中一个实施例中,所述哈希结构包括哈希数组和使用情况链表。
在其中一个实施例中,在接收到所述数据记录查询请求后,所述数据查询单元以如下方式执行查询操作:
(1)计算待查询的数据记录的哈希值;
(2)访问以所述哈希值作为数组下标的所述哈希数组中对应的数组单元,并随之遍历该数组单元中的入口指针所指向的数据记录链表以查找出目标数据记录,并将查询结果传送回所述外部应用;
(3)将所述使用情况链表中与所访问的数组单元相对应的节点移动至所述使用情况链表的尾部。
在其中一个实施例中,在所述哈希数组被插入新的数组单元时,所述数据存储单元创建与所插入的新的数组单元相对应的节点并将与所插入的新的数组单元相对应的节点直接放至所述使用情况链表的尾部。
本发明的有益效果:
本发明提供了一种数据库的管理方法,可在大数据量、高频度写入的情况下,依然保障高效的服务质量。
附图说明
图1是根据本发明的实施例的数据库的管理方法的示意结构图;
图2是示出了本发明的数据库存储单元的结构示意图;
图3是示出了内部存储器和外部存储器之间的数据存储流程图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步说明,以使本领域的技术人员可以更好地理解本发明并能予以实施,但所举实施例不作为对本发明的限定。
请参考图1-3的本发明的数据库的管理方法的一较佳实施方法,本发明所公开的数据库的管理方法包括用于存储数据的数据存储单元1以及用于管理数据的数据库管理单元2。其中,所述数据存储单元1用于接收来自外部应用的数据记录存储请求并将所述数据记录存储请求中所包含的待存储数据记录以哈希结构的方式存储到由内存分配管理单元3所分配的内存空间中,并且,所述内存分配管理单元3用于根据来自所述数据存储单元1的内存分配指令分配内存空间,并将所分配的内存空间的地址传送回所述数据存储单元1。其中,所述数据库管理单元2与所述数据存储单元1连接,并根据数据存储单元1中的内存空间的地址对数据存储单元1进行控制。
进一步的,本发明的数据库的管理方法还包括数据查询单元4,所述数据查询单元4用于接收来自外部应用的数据记录查询请求,并基于所述数据记录查询请求执行查询操作,随之将查询结果传送回所述外部应用。
进一步的,所述数据存储单元1被配置为存储第一数据,所述第一数据包括相应的键和值,先将第一数据写入数据存储单元的内部存储器11的内存表,其中,写入所述内存表中的数据按照键的大小有序存储;
在所述内存表的大小超过预定阈值时,将所述内存表转化为只读内存表,并将所述数据存储单元1中的后续数据写入新的内存表;
将所述只读内存表中的数据写入外部存取器12中,得到一次存储数据;以及合并两个或更多个一级存储数据,以得到二级存储数据。
其中,图3是示出了内部存储器11和外部存储器12之间相配合以实现数据存储的流程图。
首先在步骤S110,可以由内部存储器11将需要存储的多条数据写入外部存储器12中的日志文件。其中,每条数据包括相对应的键和值,此处可以按照数据到来的时间顺序依次写入日志文件。
然后可以执行步骤S120,由外部存储器12将日志文件中的数据写入内部存储器11中的内存表。其中,写入内存表中的数据可以按照键的大小有序存储。例如,内存表中存储的数据可以采用跳表结构,以使得内存表中存储的数据按照键的大小有序排列。作为本发明的一个优选实施例,内存表可以由一个哈希表组成,此处的哈希表可以包括一个或多个哈希桶,每个哈希桶对应一个跳表,内存表中的每条数据构成跳表的一个元素,其中,跳表中的元素的顺序是按照键的大小有序排列的。
由此,在跳表前嵌入一个哈希表,这样一方面可以降低锁粒度,对于并发读写操作,如果键不相同,则可在各自的哈希桶所对应的跳表中进行快速的查找插入。另一方面,在扩大内存表的大小的同时,不至于扩大跳表的大小,这可以降低跳表随着数据量变大而变成线性查找的概率,从而提高整体的查找效率。
在写入内存表的数据逐渐增多,以至于内存表的大小超过预定阈值时,内部存储器11可以将内存表转化为只读内存表(步骤S130),此时日志文件中未写入内部存储器11的数据可以写入新的内存表中。顾名思义,只读内存表只可以读取,不可以写入。
需要说明的是,外部存储器12中的日志文件和内部存储器11中的内存表可以是一一对应的,即对于一条key-Value数据来说,可以将其写入日志文件,然后再从日志文件写入内存表,在内存表的大小超过预定阈值需要转换为只读内存表时,新到来的数据可以写入新的日志文件,新的日志文件中的数据可以写入新的内存表。
在内存表转化为只读内存表后,可以执行步骤S140,可以由内部存储器110将只读内存表中的数据写入外部存储器120,以得到第一级存储文件。外部存储器120可以执行步骤S150,对存储在其内的两个或更多个第一级存储文件进行合并,以得到第二级存储文件。
另外,外部存储器12可以以第一命名规则指定第一级存储文件的主文件名,并可以以第二命名规则指定第二级存储文件的主文件名,此处第一命名规则与第二命名规则不同,以便基于主文件名区分存储文件是第一级存储文件还是第二级存储文件。例如,可以在第一级存储文件的主文件名后加上“_0”,在第二级存储文件的主文件名后加上“_1”来区分。即可以以xxx_0.hdb,xxx_1.hdb分别命名第一级存储文件和第二级存储文件。
进一步的,以第一命名规则指定所述一级存储数据的主文件名;以及以第二命名规则指定所述二级存储文件的主文件名,所述第一命名规则与所述第二命名规则不同,以便基于主文件名区分存储文件是一级存储文件还是二级存储文件。
进一步的,所述内存表由一个哈希表组成,所述哈希表包括一个或多个哈希桶,每个哈希桶对应一个跳表,所述内存表中的每条数据构成所述跳表的一个元素,其中,所述跳表中的元素的顺序是按照键的大小有序排列的。
进一步的,当接收到所述数据记录存储请求后,所述数据存储单元基于所述数据记录存储请求中所包含的待存储的数据记录的大小构造内存分配指令,随之将所述内存分配指令传送到内存池管理单元,其中,所述内存分配指令包含待分配的内存空间的大小。
进一步的,所述小块内存空间是小于2M的内存空间,并且同一个内存簇中的所有内存块的大小均相同,而所有内存簇中的每个内存桶的大小均为2M。
进一步的,不同内存簇中的内存块的大小依次按照增长因子呈倍数增长。
进一步的,所述哈希结构包括哈希数组和使用情况链表。
进一步的,在接收到所述数据记录查询请求后,所述数据查询单元4以如下方式执行查询操作:
(1)计算待查询的数据记录的哈希值;
(2)访问以所述哈希值作为数组下标的所述哈希数组中对应的数组单元,并随之遍历该数组单元中的入口指针所指向的数据记录链表以查找出目标数据记录,并将查询结果传送回所述外部应用;
(3)将所述使用情况链表中与所访问的数组单元相对应的节点移动至所述使用情况链表的尾部。
进一步的,在所述哈希数组被插入新的数组单元时,所述数据存储单元创建与所插入的新的数组单元相对应的节点并将与所插入的新的数组单元相对应的节点直接放至所述使用情况链表的尾部。
综上所述,本发明提供了一种数据库的管理方法,可在大数据量、高频度写入的情况下,依然保障高效的服务质量。
以上所述实施例仅是为充分说明本发明而所举的较佳的实施例,本发明的保护范围不限于此。本技术领域的技术人员在本发明基础上所作的等同替代或变换,均在本发明的保护范围之内。本发明的保护范围以权利要求书为准。
Claims (10)
1.一种数据库的管理方法,其特征在于:包括用于存储数据的数据存储单元以及用于管理数据的数据库管理单元;
其中,所述数据存储单元用于接收来自外部应用的数据记录存储请求并将所述数据记录存储请求中所包含的待存储数据记录以哈希结构的方式存储到由内存分配管理单元所分配的内存空间中;
数据查询单元,所述数据查询单元用于接收来自外部应用的数据记录查询请求,并基于所述数据记录查询请求执行查询操作,随之将查询结果传送回所述外部应用;
所述内存分配管理单元,所述内存分配管理单元用于根据来自所述数据存储单元的内存分配指令分配内存空间,并将所分配的内存空间的地址传送回所述数据存储单元;
所述数据库管理单元与所述数据存储单元连接,并根据数据存储单元中的内存空间的地址对数据存储单元进行控制。
2.根据权利要求1所述的数据库的管理方法,其特征在于:所述数据存储单元被配置为存储第一数据,所述第一数据包括相应的键和值,先将第一数据写入数据存储单元的内部存储器的内存表,其中,写入所述内存表中的数据按照键的大小有序存储;
在所述内存表的大小超过预定阈值时,将所述内存表转化为只读内存表,并将所述数据存储单元中的后续数据写入新的内存表;
将所述只读内存表中的数据写入外部存取器中,得到一次存储数据;以及合并两个或更多个一级存储数据,以得到二级存储数据。
3.根据权利要求2所述的数据库的管理方法,其特征在于,以第一命名规则指定所述一级存储数据的主文件名;以及以第二命名规则指定所述二级存储文件的主文件名,所述第一命名规则与所述第二命名规则不同,以便基于主文件名区分存储文件是一级存储文件还是二级存储文件。
4.根据权利要求2所述的数据库的管理方法,其特征在于,所述内存表由一个哈希表组成,所述哈希表包括一个或多个哈希桶,每个哈希桶对应一个跳表,所述内存表中的每条数据构成所述跳表的一个元素,其中,所述跳表中的元素的顺序是按照键的大小有序排列的。
5.根据权利要求1所述的数据库的管理方法,其特征在于,当接收到所述数据记录存储请求后,所述数据存储单元基于所述数据记录存储请求中所包含的待存储的数据记录的大小构造内存分配指令,随之将所述内存分配指令传送到内存池管理单元,其中,所述内存分配指令包含待分配的内存空间的大小。
6.根据权利要求5所述的数据库的管理方法,其特征在于,所述小块内存空间是小于2M的内存空间,并且同一个内存簇中的所有内存块的大小均相同,而所有内存簇中的每个内存桶的大小均为2M。
7.根据权利要求6所述的数据库的管理方法,其特征在于,不同内存簇中的内存块的大小依次按照增长因子呈倍数增长。
8.根据权利要求1所述的数据库的管理方法,其特征在于,所述哈希结构包括哈希数组和使用情况链表。
9.根据权利要求8所述的数据库的管理方法,其特征在于,在接收到所述数据记录查询请求后,所述数据查询单元以如下方式执行查询操作:
(1)计算待查询的数据记录的哈希值;
(2)访问以所述哈希值作为数组下标的所述哈希数组中对应的数组单元,并随之遍历该数组单元中的入口指针所指向的数据记录链表以查找出目标数据记录,并将查询结果传送回所述外部应用;
(3)将所述使用情况链表中与所访问的数组单元相对应的节点移动至所述使用情况链表的尾部。
10.根据权利要求8所述的数据库的管理方法,其特征在于,在所述哈希数组被插入新的数组单元时,所述数据存储单元创建与所插入的新的数组单元相对应的节点并将与所插入的新的数组单元相对应的节点直接放至所述使用情况链表的尾部。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811583041.2A CN109656926A (zh) | 2018-12-24 | 2018-12-24 | 数据库的管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811583041.2A CN109656926A (zh) | 2018-12-24 | 2018-12-24 | 数据库的管理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109656926A true CN109656926A (zh) | 2019-04-19 |
Family
ID=66115038
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811583041.2A Pending CN109656926A (zh) | 2018-12-24 | 2018-12-24 | 数据库的管理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109656926A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114866413A (zh) * | 2021-01-18 | 2022-08-05 | 网宿科技股份有限公司 | 一种动态配置变量的方法及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030084308A1 (en) * | 2001-10-03 | 2003-05-01 | Van Rijnswou Sander Matthijs | Memory encryption |
CN1940922A (zh) * | 2005-09-30 | 2007-04-04 | 腾讯科技(深圳)有限公司 | 一种提高搜索信息速度的方法及系统 |
CN103678161A (zh) * | 2012-09-06 | 2014-03-26 | 中兴通讯股份有限公司 | 内存管理方法及装置 |
CN104731799A (zh) * | 2013-12-20 | 2015-06-24 | 中国银联股份有限公司 | 内存数据库管理装置 |
CN108319602A (zh) * | 2017-01-17 | 2018-07-24 | 广州市动景计算机科技有限公司 | 数据库管理方法及数据库系统 |
-
2018
- 2018-12-24 CN CN201811583041.2A patent/CN109656926A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030084308A1 (en) * | 2001-10-03 | 2003-05-01 | Van Rijnswou Sander Matthijs | Memory encryption |
CN1940922A (zh) * | 2005-09-30 | 2007-04-04 | 腾讯科技(深圳)有限公司 | 一种提高搜索信息速度的方法及系统 |
CN103678161A (zh) * | 2012-09-06 | 2014-03-26 | 中兴通讯股份有限公司 | 内存管理方法及装置 |
CN104731799A (zh) * | 2013-12-20 | 2015-06-24 | 中国银联股份有限公司 | 内存数据库管理装置 |
CN108319602A (zh) * | 2017-01-17 | 2018-07-24 | 广州市动景计算机科技有限公司 | 数据库管理方法及数据库系统 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114866413A (zh) * | 2021-01-18 | 2022-08-05 | 网宿科技股份有限公司 | 一种动态配置变量的方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105320775B (zh) | 数据的存取方法和装置 | |
CN109299113B (zh) | 具有存储感知的混合索引的范围查询方法 | |
CN103473239B (zh) | 一种非关系型数据库数据更新方法和装置 | |
CN105975587B (zh) | 一种高性能的内存数据库索引组织与访问方法 | |
US7610468B2 (en) | Modified buddy system memory allocation | |
US7890541B2 (en) | Partition by growth table space | |
CN103106286B (zh) | 元数据的管理方法和装置 | |
CN104850572A (zh) | HBase非主键索引构建与查询方法及其系统 | |
CN104731799B (zh) | 内存数据库管理装置 | |
CN106682215B (zh) | 一种数据处理方法和管理节点 | |
CN113377868B (zh) | 一种基于分布式kv数据库的离线存储系统 | |
CN110109886B (zh) | 分布式文件系统的文件存储方法及分布式文件系统 | |
CN103593436A (zh) | 文件合并方法和装置 | |
CN103019953A (zh) | 一种元数据的构建系统及其方法 | |
CN104035925B (zh) | 数据存储方法、装置和存储系统 | |
US20240104059A1 (en) | Method for Service Processing and System, Device, and Medium | |
CN108446308A (zh) | 可扩展分布式数据库的系统和方法 | |
CN106960011A (zh) | 分布式文件系统元数据管理系统及方法 | |
CN112947860A (zh) | 一种分布式数据副本的分级存储与调度方法 | |
CN109828966A (zh) | 渐进式重哈希方法、装置、计算机设备及存储介质 | |
CN114116612B (zh) | 一种基于b+树索引归档文件的存取方法 | |
CN109634933A (zh) | 数据处理的方法、装置及系统 | |
CN109325022A (zh) | 一种数据处理方法和装置 | |
CN109656926A (zh) | 数据库的管理方法 | |
KR20090007926A (ko) | 플래시 메모리에 저장된 데이터의 인덱스 정보 관리 장치및 방법 |
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: 20190419 |