存储业务数据的方法、装置及数据库节点制造方法及图纸

技术编号:12383223 阅读:80 留言:0更新日期:2015-11-25 14:37
本公开是关于一种存储业务数据的方法、装置及数据库节点,用以提高用户定位的准确性。所述方法包括:检测是否需要对数据库节点所在的数据库集群进行扩容;如果检测到需要对所述数据库集群进行扩容,确定所述数据库集群需要扩容的数据库节点的数量;根据所述需要扩容的数据库节点的数量、所述数据库节点的第一编号与需要存储的业务数据的第二编号确定是否需要存储所述业务数据。本公开技术方案可以避免新生的业务数据存储到同一个数据库节点,缓解数据库节点由于存储新生的业务数据引起的“热点”问题,避免针对最新创建的数据库节点设计缓存系统,大大简化了数据库集群的复杂度,并且更有利于数据库集群的后期维护。

【技术实现步骤摘要】

本公开涉及互联网
,尤其涉及一种存储业务数据的方法、装置及数据库节点
技术介绍
数据库分片(sharding)是将原来单一数据库的记录按照一定的规则进行切分,把数据分散到多台数据库节点上存储,从而突破单机限制,使数据库系统能以可扩容的方式应对不断上涨的海量数据,由于分片对上层应用来说是透明的,因此多个物理上分布的数据库节点在逻辑上依然是一个数据库。相关技术中对数据库进行分片时,根据增量区间对数据进行分库,例如,每够I千万条业务数据存储在新的数据库节点上,由于新生的业务数据的读写频率远远高于旧有的数据,因此会带来“热点”问题,也即,可能会有较多(例如,80% )的访问操作都落在了最新的数据库节点上,为了解决“热点”问题,需要针对最新创建的数据库节点设计缓存系统,缓存系统会增加数据库系统的复杂度,不利于数据库的后期维护。
技术实现思路
为克服相关技术中存在的问题,本公开实施例提供一种存储业务数据的方法、装置及数据库节点,用以缓解数据库节点由于存储新生的业务数据引起的“热点”问题。根据本公开实施例的第一方面,提供一种存储业务数据的方法,包括:检测是否需要对数据库节点所在的数据库集群进行扩容;如果检测到需要对所述数据库集群进行扩容,确定所述数据库集群需要扩容的数据库节点的数量;根据所述需要扩容的数据库节点的数量、所述数据库节点的第一编号与需要存储的业务数据的第二编号确定是否需要存储所述业务数据。在一实施例中,所述检测是否需要对数据库节点所在的数据库集群进行扩容,可包括:确定数据库节点当前已存储的业务数据的存储空间是否大于第一预设阈值;如果所述当前已存储的业务数据的存储空间大于所述第一预设阈值,确定需要对所述数据库节点所在的数据库集群进行扩容。在一实施例中,所述检测是否需要对数据库节点所在的数据库集群进行扩容,可包括:确定数据库节点当前已存储的业务数据的存储空间与所述数据库节点的总存储空间;如果所述当前已存储的业务数据的存储空间与所述总存储空间的比值大于所述第二预设阈值,确定需要对所述数据库节点所在的数据库集群进行扩容。在一实施例中,所述确定所述数据库集群需要扩容的数据库节点的数量,可包括:向所述数据库集群对应的服务器客户端发送对所述数据库集群进行扩容的提醒;接收来自所述服务器客户端根据所述提醒返回的所述数据库集群需要扩容的数据库节点的数量。在一实施例中,所述根据所述需要扩容的数据库节点的数量、所述数据库节点的第一编号与需要存储的业务数据的第二编号确定是否需要存储所述业务数据,可包括:根据所述需要扩容的数据库节点的数量确定所述数据库集群中的扩容后的数据库节点的总数量;确定所述需要存储的业务数据的第二编号相对于所述总数量的余数;根据所述余数和所述第一编号确定是否需要存储所述业务数据。 在一实施例中,所述方法还可包括:在对所述数据库集群扩容后,确定所述数据库节点中已存储的冗余数据;将所述冗余数据删除。在一实施例中,所述确定所述数据库节点中已存储的冗余数据,可包括:确定所述数据库节点相对应的拷贝的数据库节点的第三编号;确定所述已存储的业务数据的第四编号相对于所述总数量的余数;将所述余数与所述拷贝的数据库节点的第三编号相同的业务数据作为冗余数据。根据本公开实施例的第二方面,提供一种存储业务数据的装置,包括:检测模块,被配置为检测是否需要对数据库节点所在的数据库集群进行扩容;第一确定模块,被配置为如果所述检测模块检测到需要对所述数据库集群进行扩容,确定所述数据库集群需要扩容的数据库节点的数量;第二确定模块,被配置为根据所述第一确定模块确定的所述需要扩容的数据库节点的数量、所述数据库节点的第一编号与需要存储的业务数据的第二编号确定是否需要存储所述业务数据。在一实施例中,所述检测模块可包括:第一确定子模块,被配置为确定数据库节点当前已存储的业务数据的存储空间是否大于第一预设阈值;第二确定子模块,被配置为如果所述第一确定子模块确定所述当前已存储的业务数据的存储空间大于所述第一预设阈值,确定需要对所述数据库节点所在的数据库集群进行扩容。在一实施例中,所述检测模块可包括:第三确定子模块,被配置为确定数据库节点当前已存储的业务数据的存储空间与所述数据库节点的总存储空间;第四确定子模块,被配置为如果所述第三确定子模块确定所述当前已存储的业务数据的存储空间与所述总存储空间的比值大于所述第二预设阈值,确定需要对所述数据库节点所在的数据库集群进行扩容。在一实施例中,所述第一确定模块可包括:发送子模块,被配置为向所述数据库集群对应的服务器客户端发送对所述数据库集群进行扩容的提醒;接收子模块,被配置为接收来自所述服务器客户端根据所述所述发送子模块发送的所述提醒返回的所述数据库集群需要扩容的数据库节点的数量。 在一实施例中,所述第二确定模块可包括:第五确定子模块,被配置为根据所述需要扩容的数据库节点的数量确定所述数据库集群中的扩容后的数据库节点的总数量;第六确定子模块,被配置为确定所述需要存储的业务数据的第二编号相对于所述第五确定子模块确定的所述总数量的余数;第七确定子模块,被配置为根据所述第六确定子模块确定的所述余数和所述第一编号确定是否需要存储所述业务数据。在一实施例中,所述装置还可包括:第三确定模块,被配置为在对所述数据库集群扩容后,确定所述数据库节点中已存储的冗余数据;删除模块,被配置为将所述第三确定模块确定的所述冗余数据删除。在一实施例中,所述第三确定模块可包括:第八确定子模块,被配置为确定所述数据库节点相对应的拷贝的数据库节点的第三编号;第九确定子模块,被配置为确定所述已存储的业务数据的第四编号相对于所述总数量的余数;第十确定子模块,被配置为将所述第九确定子模块确定的所述余数与所述第八确定子模块确定的所述拷贝的数据库节点的第三编号相同的业务数据作为冗余数据。根据本公开实施例的第三方面,提供一种数据库节点,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为:检测是否需要对所述数据库节点所在的数据库集群进行扩容;如果检测到需要对所述数据库集群进行扩容,确定所述数据库集群需要扩容的数据库节点的数量;根据所述需要扩容的数据库节点的数量、所述数据库节点的第一编号与需要存储的业务数据的第二编号确定是否需要存储所述业务数据。本公开的实施例提供的技术方案可以包括以下有益效果:在检测到需要对数据库集群进行扩容时,根据需要扩容的数据库节点的数量、数据库节点的第一编号与需要存储的业务数据的第二编号确定是否需要存储业务数据,从而可以避免新生的业务数据存储到同一个数据库节点,缓解数据库节点由于存储新生的业务数据引起的“热点”问题,避免针对最新创建的数据库节点设计缓存系统,大大简化了数据库集群的复杂度,并且更有利于数据库集群的后期维护。应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。【附图说明】此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本专利技术的实施例,并与说明书一起用于解释本专利技术的原理。图1A是根据一示例性实施例示出的存储业务数据的方法的流程图。图1B是根据一示例性实施例示出的存储业务数据的方法的场景图。图1C是根据一示例性实施例示出的数据库节点的扩容场景图本文档来自技高网...

【技术保护点】
一种存储业务数据的方法,其特征在于,所述方法包括:检测是否需要对数据库节点所在的数据库集群进行扩容;如果检测到需要对所述数据库集群进行扩容,确定所述数据库集群需要扩容的数据库节点的数量;根据所述需要扩容的数据库节点的数量、所述数据库节点的第一编号与需要存储的业务数据的第二编号确定是否需要存储所述业务数据。

【技术特征摘要】

【专利技术属性】
技术研发人员:沈建荣谭国斌窦锦帅
申请(专利权)人:小米科技有限责任公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1