一种存算分离数据库的缓存方法、装置、设备及介质与流程
- 国知局
- 2024-07-31 23:03:12
本发明涉及数据库,具体涉及一种存算分离数据库的缓存方法、装置、设备及介质。
背景技术:
1、随着大数据、云计算和微服务架构的迅猛发展,传统的数据库系统面临着性能、可扩展性和灵活性等方面的挑战。存算分离架构(compute-storage separationarchitecture)应运而生,通过将计算资源和存储资源进行解耦,实现了资源的独立扩展和动态调度。这种架构广泛应用于云数据库服务、分布式数据库系统等领域。
2、元数据(catalog)包括数据库中的表、索引、视图等信息,是数据库系统正常运行和查询优化的关键组成部分。传统的数据库系统通常将元数据与数据存储在同一个实例中。在存算分离架构下,元数据存储在独立的元数据服务器上,计算节点需要通过远程过程(rpc)等方式访问元数据。因此它的管理和访问效率对系统的整体性能至关重要。
3、现有的一些相关技术,例如:(1)amazon aurora:amazon aurora 是aws的一种关系数据库服务,它实现了存算分离架构。aurora通过将存储节点和计算节点分离,利用多个副本和共享存储机制,保证了数据的高可用性和可扩展性。(2)google cloud spanner:google cloud spanner是google的分布式数据库服务,具备全球一致性和高可用性。spanner通过多层次的存储和计算架构,实现了大规模分布式环境下的高性能数据管理。(3)memcached 和 redis:这两种是广泛应用的分布式缓存系统,通过在多个节点上缓存数据来提高数据访问速度和系统可扩展性。(4)mysql innodb:innodb是mysql的存储引擎,通过缓冲池(buffer pool)缓存常用的数据页和索引页,提高数据访问速度。
4、然而现有方法中aurora的元数据管理机制是闭源实现的,并无明确的元数据缓存策略;panner使用专门的目录服务来管理元数据,并通过分布式协议确保元数据的一致性,其对于元数据的缓存不够优化;memcached和redis通常用于应用层缓存,但不专门针对数据库元数据。innodb的缓存机制与数据库实例紧密耦合,难以在存算分离架构下高效工作。
技术实现思路
1、有鉴于此,本技术实施例提供一种存算分离数据库的缓存方法、装置、设备及介质,本技术实施例采用键值对(key-value pair,简称:kv pair)方式进行元数据缓存,实现了存算分离架构下的数据一致性高效缓存,有效提高了元数据的访问效率和系统性能。
2、本技术实施例提供以下技术方案:一种存算分离数据库的缓存方法,包括:
3、将数据库id和元数据表id拼接成一个第一字符串,将所述第一字符串作为该元数据表中每条数据内容的前缀,分别将所述元数据表中每条数据内容的记录号拼接在所述前缀的后面,将拼接后的所述第一字符串和记录号整体作为该条元数据的key值,将该条元数据的数据内容作为与所述key值对应的value值,获得所述元数据表的键值对;其中,所述数据内容的记录号用于表征每条数据内容在元数据表中的唯一标识;
4、将所述元数据表的每个索引表中每条记录对应的索引字段的值进行提取,将提取的该条记录的全部索引字段的值按照设定顺序拼接成一个第二字符串,将所述第二字符串拼接在所述前缀的后面,将拼接后的所述第一字符串和所述第二字符串整体作为该条记录的key值,将该条记录的行号作为与该条记录的key值对应的value值,获得所述元数据表的每个索引表的键值对。
5、根据本技术一种实施例,所述方法还包括:
6、将所述元数据表中的所有数据内容按照不同行号分别切分为不同的页,该页中存储该行元数据的key值对应的数据内容;
7、将所述索引表中的所有记录按照查询给定的起始记录key值截取设定的范围作为一个页,该页中存储若干条记录;
8、将所述元数据表和所述索引表中每个页的缓存页面起始key值进行排序,构成排序索引,通过给定的key值,在所述排序索引中确定对应的页;其中,所述页用于表征存储缓存数据的一个基本单元。
9、根据本技术一种实施例,所述方法还包括:
10、将所述元数据表和所述索引表的物理文件号构成查询表,通过所述查询表对所述元数据表和所述索引表的缓存数据进行索引。
11、根据本技术一种实施例,通过给定的key值,在所述排序索引中确定对应的页,还包括:
12、在所述对应的页中顺序扫描,查询目标数据;若未查询到目标数据,则通过计算节点向元数据服务器发起rpc请求,请求对应页面的元数据,并申请一个共享页面,将获得的对应页面的元数据放入所述共享页面,并将所述共享页面的起始key值插入到对应的所述排序索引中。
13、根据本技术一种实施例,通过给定的key值,在所述排序索引中采用二分查找确定对应的页。
14、根据本技术一种实施例,所述方法还包括:
15、将数据库的元数据和共享数据放入共享内存中进行全局缓存,以供计算节点上所有进程共享该缓存数据;
16、将待修改的元数据在提交前进行局部缓存,以将元数据的修改进行隔离。
17、根据本技术一种实施例,所述方法还包括:
18、当计算节点对元数据进行修改时,在事务边界和命令边界上向元数据服务器发出元数据无效消息,所述元数据服务器中的其它计算节点根据所述元数据无效消息,将缓存中对应的元数据进行清除,重新从所述元数据服务器上获取最新的元数据。
19、本技术还提供一种存算分离数据库的缓存装置,包括:
20、第一键值对生成模块,用于将数据库id和元数据表id拼接成一个第一字符串,将所述第一字符串作为该元数据表中每条数据内容的前缀,分别将所述元数据表中每条数据内容的记录号拼接在所述前缀的后面,将拼接后的所述第一字符串和记录号整体作为该条元数据的key值,将该条元数据的数据内容作为与所述key值对应的value值,获得所述元数据表的键值对;其中,所述数据内容的记录号用于表征每条数据内容在元数据表中的唯一标识;
21、第二键值对生成模块,用于将所述元数据表的每个索引表中每条记录对应的索引字段的值进行提取,将提取的该条记录的全部索引字段的值按照设定顺序拼接成一个第二字符串,将所述第二字符串拼接在所述前缀的后面,将拼接后的所述第一字符串和所述第二字符串整体作为该条记录的key值,将该条记录的行号作为与该条记录的key值对应的value值,获得所述元数据表的每个索引表的键值对。
22、本技术还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述的存算分离数据库的缓存方法。
23、本技术还提供一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述的存算分离数据库的缓存方法的计算机程序。
24、与现有技术相比,本说明书实施例采用的上述至少一个技术方案能够达到的有益效果至少包括:本发明实施例采用键值对方式进行元数据缓存,实现了存算分离架构下的数据一致性高效缓存,有效提高了元数据的访问效率和系统性能。另外,本发明实施例在共享内存中尽最大可能保留有效的元数据,通过多级索引机制加带缓存查询,通过无效消息来保证事务的一致性。使得在存算分离架构下的元数据远程存储成为可能,保证了访问的效率。而元数据集中存储在远程是数据和元数据进一步分离的基础,使多个计算系统共享元数据成为可能,提高了系统的弹性。
本文地址:https://www.jishuxx.com/zhuanli/20240730/195797.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。
下一篇
返回列表