CN106294421A - 一种数据写入、读取方法及装置 - Google Patents

一种数据写入、读取方法及装置 Download PDF

Info

Publication number
CN106294421A
CN106294421A CN201510272393.6A CN201510272393A CN106294421A CN 106294421 A CN106294421 A CN 106294421A CN 201510272393 A CN201510272393 A CN 201510272393A CN 106294421 A CN106294421 A CN 106294421A
Authority
CN
China
Prior art keywords
data
rule
point
write
mark
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.)
Granted
Application number
CN201510272393.6A
Other languages
English (en)
Other versions
CN106294421B (zh
Inventor
李宁
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced New Technologies Co Ltd
Advantageous New Technologies Co Ltd
Original Assignee
Alibaba Group Holding Ltd
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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201510272393.6A priority Critical patent/CN106294421B/zh
Publication of CN106294421A publication Critical patent/CN106294421A/zh
Application granted granted Critical
Publication of CN106294421B publication Critical patent/CN106294421B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2219Large Object storage; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/215Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请实施例公开了一种数据写入、读取方法及装置,所述数据写入方法包括:接收携带有待写入数据及该待写入数据的第一标识的数据写入请求;基于第一数据库的当前待写入数据的写入规则,确定与所述第一标识对应的存储位置信息;确定包含所述第一标识及所述存储位置信息的第二标识,并建立所述待写入数据到所述第二标识的映射关系;依据所述存储位置信息进行路由,并按照所述路由的结果将所述待写入数据写入所述第一数据库。本申请实施例在数据库需要扩容时无需采取数据迁移方式,从而降低数据库维护的难度及成本。

Description

一种数据写入、读取方法及装置
技术领域
本申请涉及数据库技术领域,特别涉及一种数据写入、读取方法及装置。
背景技术
数据库是数据以一种能够持久保存,并且可以被操作的方式来存储的数据集合。随着业务的增长,当需要存储的数据到达一定数量级时,使用单个数据库进行数据的存储管理,会出现容量瓶颈、性能瓶颈等问题。例如:某电商网站有几亿的用户,若将所有用户的数据均存储到一个数据库中,则会造成该数据库无法承受这么大的数据量。
数据库的分库分表方法正是为了应对以上问题而产生的。数据库的分库分表方法利用一定的分库分表规则将原本存储于一个库上的数据分块存储到多个库上,将原本存储于一个表上的数据分块存储到多个表上。如图1所示,将一个数据库切分成两个子库:part0DB、part1DB,再将每个子库切分成两个数据表:Table0、Table1。
对于某个待写入的数据,根据上述分库分表规则来确定该数据应该写入的存储位置(即写入哪个子库下的哪个数据表中),相应地,数据读取过程也是按照上述分库分表规则预先确定所需读取的数据的存储位置。例如:某数据库切分成2个子库(编号为00、01),每个子库又切分成2个数据表(编号为00、01),该数据库的分库分表规则是对数据的id进行取模。若某个待写入的数据的id是“123111”,则通过对该数据的id作取模运算,可以得到该数据应该写入编号为“01”的子库下的编号为“01”的数据表中。
在上述数据库的使用过程中,当已有的数据库规模不能满足日益增长的数据量时,则需要通过对原有的数据库进行扩容的方式来满足需求。现有技术中,在数据库扩容过程中,需要采取新的分库分表规则来将新的数据写入该数据库中,并采取以上新的分库分表规则相应地从该数据库中读取数据。以上情况会导致原先按照旧的分库分表规则被写入上述数据库中的数据无法通过该新的分库分表规则被读取到。为此,现有技术一般需将原先按照旧的分库分表规则被写入上述数据库中的数据全部迁移,并按照新的分库分表规则进行重新存储。
参照图1、图2所示,例如,某个数据库原先切分成2个子库part0DB、part1DB,旧的分库规则是:id%2,旧的数据是按照上述分库规则id%2被存放到子库part0DB、part1DB中。但是随着业务的发展,该数据库需要扩容成4个子库,即需要在原先2个子库part0DB、part1DB的基础上增加2个子库part2DB、part3DB,则此时需要采取新的分库规则id%4来将新的数据写入到上述4个子库中。对于扩容后的数据库而言,由于该数据库中存放的旧数据和新数据分别按照两种不同的分库规则被写入,这一情况便导致在数据读取的过程中,无法确定某个待读取的数据是按照何种写入规则被写入的,从而造成数据无法读取。为解决上述问题,现有技术一般通过将原先按照旧的分库规则id%2存储的旧数据进行迁移,并将迁移出的旧数据按照新的分库规则id%4来写入到上述数据库中。
在实现本申请的过程中,发明人发现现有技术至少存在以下问题:
在数据库扩容时所采取的数据迁移动作无疑是费时费力的,增加了数据库维护的难度,且该过程需要暂停数据库的使用,给业务运营带来影响。
发明内容
本申请实施例的目的是提供一种数据写入、读取方法及装置,以解决现有技术存在的在数据库扩容时所采取的数据迁移动作费时费力的问题。
为解决上述技术问题,本申请实施例提供的数据写入、读取方法及装置是这样实现的:
一种数据写入方法,包括:
接收携带有待写入数据及该待写入数据的第一标识的数据写入请求;
基于第一数据库的当前待写入数据的写入规则,确定与所述第一标识对应的存储位置信息;
确定包含所述第一标识及所述存储位置信息的第二标识,并建立所述待写入数据到所述第二标识的映射关系;
依据所述存储位置信息进行路由,并按照所述路由的结果将所述待写入数据写入所述第一数据库。
一种数据写入方法,包括:
接收携带有待写入数据及该待写入数据的第一标识的数据写入请求;
基于与第一数据库的第二存储空间对应的第二写入规则,确定与所述第一标识对应的存储位置信息;其中,所述第二存储空间是在第一数据库中的第一存储空间的基础上增加的;
确定包含所述第一标识及所述存储位置信息的第二标识,并建立所述待写入数据到所述第二标识的映射关系;
依据所述存储位置信息进行路由,并按照所述路由的结果将所述待写入数据写入所述第一数据库的第二存储空间。
一种数据写入方法,包括:
接收携带有待写入数据及该待写入数据的第一标识的数据写入请求;
根据第一数据库的第二存储空间所存储的数据量,从与所述第二存储空间对应的第二写入规则、与所述第一数据库的全部存储空间对应的第三写入规则中选取一个写入规则;其中,所述第二存储空间是在第一数据库中的第一存储空间的基础上增加的;
基于选取的写入规则,确定与所述第一标识对应的存储位置信息;
确定包含所述第一标识及所述存储位置信息的第二标识,并建立所述待写入数据到所述第二标识的映射关系;
依据所述存储位置信息进行路由,并按照所述路由的结果将所述待写入数据写入所述第一数据库。
一种数据读取方法,包括:
接收携带有待读取数据的数据读取请求;
获取与所述待读取数据对应的第二标识;
提取所述第二标识中包含的根据第一数据库的当前待读取数据的写入规则来确定的存储位置信息;
依据所述存储位置信息进行路由,并按照所述路由的结果从所述第一数据库中读取所述待读取数据。
一种数据写入装置,包括:
请求接收模块,用于接收携带有待写入数据及该待写入数据的第一标识的数据写入请求;
信息确定模块,用于基于第一数据库的当前待写入数据的写入规则,确定与所述第一标识对应的存储位置信息;
标识生成模块,用于确定包含所述第一标识及所述存储位置信息的第二标识,并建立所述待写入数据到所述第二标识的映射关系;
数据写入模块,用于依据所述存储位置信息进行路由,并按照所述路由的结果将所述待写入数据写入所述第一数据库。
一种数据写入装置,包括:
请求接收模块,用于接收携带有待写入数据及该待写入数据的第一标识的数据写入请求;
信息确定模块,用于基于与第一数据库的第二存储空间对应的第二写入规则,确定与所述第一标识对应的存储位置信息;其中,所述第二存储空间是在第一数据库中的第一存储空间的基础上增加的;
标识生成模块,用于确定包含所述第一标识及所述存储位置信息的第二标识,并建立所述待写入数据到所述第二标识的映射关系;
数据写入模块,用于依据所述存储位置信息进行路由,并按照所述路由的结果将所述待写入数据写入所述第一数据库的第二存储空间。
一种数据写入装置,包括:
请求接收模块,用于接收携带有待写入数据及该待写入数据的第一标识的数据写入请求;
规则选取模块,用于根据第一数据库的第二存储空间所存储的数据量,从与所述第二存储空间对应的第二写入规则、与所述第一数据库的全部存储空间对应的第三写入规则中选取一个写入规则;其中,所述第二存储空间是在第一数据库中的第一存储空间的基础上增加的;
信息确定模块,用于基于选取的写入规则,确定与所述第一标识对应的存储位置信息;
标识生成模块,用于确定包含所述第一标识及所述存储位置信息的第二标识,并建立所述待写入数据到所述第二标识的映射关系;
数据写入模块,用于依据所述存储位置信息进行路由,并按照所述路由的结果将所述待写入数据写入所述第一数据库。
一种数据读取装置,包括:
请求接收模块,用于接收携带有待读取数据的数据读取请求;
标识获取模块,用于获取与所述待读取数据对应的第二标识;
信息提取模块,用于提取所述第二标识中包含的根据第一数据库的当前待读取数据的写入规则来确定的存储位置信息;
数据读取模块,用于依据所述存储位置信息进行路由,并按照所述路由的结果从所述第一数据库中读取所述待读取数据。
由以上本申请实施例提供的技术方案可见,本申请实施例在写入所述待写入数据的过程中,根据相应的写入规则确定与待写入数据的第一标识对应的存储位置信息,并根据该存储位置信息及上述第一标识,得到一个与待写入数据关联的第二标识。因为该第二标识中直接包含待写入数据的存储位置信息,从而使得数据读取过程可以无需根据上述待写入数据在写入过程所采取的写入规则来计算待读取数据的存储位置信息,也就是说,无论数据库的写入规则是否变更,都无需变更该数据库的读取规则,即读取规则始终是依据上述第二标识来确定待读取数据的存储位置信息。基于上述原因,本申请实施例在数据库需要扩容时无需采取数据迁移方式,从而降低数据库维护的难度及成本。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术中扩容前的数据库的数据结构示意图;
图2为现有技术中扩容后的数据库的数据结构示意图;
图3为本申请第一实施例中数据写入方法的流程图;
图4为本申请第一实施例的第一数据库的数据结构示意图;
图5为本申请第二实施例中数据写入方法的流程图;
图6为本申请第二实施例的第一数据库的数据结构示意图;
图7为本申请第三实施例中数据写入方法的流程图;
图8为本申请实施例中数据读取方法的流程图;
图9为本申请一实施例中数据写入装置的模块示意图;
图10为本申请另一实施例中数据写入装置的模块示意图;
图11为本申请一实施例中数据读取装置的模块示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
本申请实施例中所述及的数据库可以是物理上构建在一起的若干存储单元,也可以是物理上分离的若干存储单元的集合。所述方法的执行主体可以是数据库服务器。
图3为本申请第一实施例中数据写入方法的流程图。本实施例中,上述数据写入方法包括:
S101:接收携带有待写入数据及该待写入数据的第一标识的数据写入请求。
数据库服务器可以通过接收终端发送的某个待写入数据的数据写入请求,来触发将该待写入数据写入到数据库的存储单元中的动作。所述终端可以是电脑、手机等。当然,所述数据写入请求也可以是来自于其他服务器。
每个待写入数据均对应一个预设的唯一第一标识id。在业务的发展过程中,根据数据量的大小,相应地给每个待写入数据分配一个第一标识id。如:某个网站有100万个注册用户,则相应地为这100万个注册用户分别分配0000001-1000000的第一标识id。在数据库写入及读取过程中,每个数据均会携带业务系统为其预先分配的第一标识id。
S102:基于第一数据库的当前待写入数据的写入规则,确定与第一标识对应的存储位置信息。
本申请实施例中,所述写入规则包括分库规则和分表规则,所述存储位置信息包括分库信息和分表信息,则上述步骤S102具体包括:基于第一数据库的当前待写入数据的分库规则,确定与第一标识对应的分库信息;基于第一数据库的当前待写入数据的分表规则,确定与第一标识对应的分表信息。
第一数据库是上述数据库服务器执行数据写入操作的目标数据库。根据第一数据库所需存储的数据量,将上述第一数据库切分成多个子库,每个子库又切分成多个数据表,例如:假设上述第一数据库所需存储数据量达到了108个,将第一数据库切分成100个子库,子库的编号可以是000-099,将每个子库切分成10个数据表,数据表的编号可以是00-09,则最终每个子库需要存放106个数据,每个数据表需要存放105个数据。
基于上述预先切分的数据库,依据相应的分库分表规则(即写入规则)来确定某个待写入数据应该写入上述第一数据库中的存储位置,也就是应该写入第一数据库中哪个子库下的哪个数据表中,上述存储位置通过存储位置信息来表征。具体地,本申请实施例中,分库分表规则包括分库规则和分表规则,相应地存储位置信息也包括分库信息(子库的编号)和分表信息(子库下某个数据表的编号)。
值得一提的是,若上述第一数据库只是切分成若干个子库,而并没有将各个子库切分成多个数据表(即每个子库只包含一张数据表),那么上述分库分表规则可能只是分库规则,相应地,上述存储位置信息也只是分库信息。
具体地,上述确定与第一标识id对应的分库信息的步骤包括:
将第一标识id对第一数据库的子库数量进行取模,并将取模的结果确定为分库信息。
上述确定与第一标识id对应的分表信息的步骤包括:
将第一标识id对第一数据库中每个子库下的数据表数量进行取模,并将取模的结果确定为分表信息。
假设a是上述第一数据库所切分的子库数量,b是第一数据库中的每个子库下所切分的数据表数量,则上述分库规则是:id%a,上述分表规则是:id%b。举例而言,若第一数据库切分成100个子库,则分库规则可以是id%100,若每个子库切分成10个数据表,则分表信息可以是id%10。假设待写入数据的第一标识id是:2920303010202030112,则通过分库规则id%100计算得到与该id对应的分库信息是:012;通过分表规则id%10计算得到与该id对应的分表信息是:02。
当然,在申请其他实施例中,分库规则和分表规则均可以是id%100,将id%100所得到的余数值确定为分库信息,将id%100所得到的商值的末位、或商值的末两位(具体根据数据表的数量来确定)确定为分表信息。据此,若待写入数据的第一标识id是:2920303010202030112,则通过分库规则id%100计算得到与该id对应的分库信息(余数值)是:012;通过分表规则id%100计算得到与该id对应的分表信息(商值的末位)是:01。
上述分库规则或分表规则也可以是其他规则,例如:根据待写入数据的id中的某个字段的数值来确定相应的分库信息或分表信息,例如:若待写入数据的第一标识id中的末三位的数值是001,则分入编号为001的子库中;若待写入数据的第一标识id中末位的数值是002,则分入编号为002的子库中;等等。
参照图4所示,其为本申请第一实施例中第一数据的数据结构示意图。上述第一数据库40包括扩容前的第一存储空间41和扩容后所增加的第二存储空间42,假设第一存储空间41被切分成100个子库:{part0DB、part1DB、……、part99DB},编号是000-099,每个子库被切分成10个数据表:{Table0、Table1、……、Table9},编号是00-09。假设第二存储空间42也被切分成100个子库:{part100DB、part101DB、……、part199DB},编号是100-199,每个子库被切分成10个数据表:{Table0、Table1、……、Table9},编号是00-09。
在数据库扩容前后,上述第一数据库40的写入规则是不一样的。例如,扩容之前,可以按照扩容前的写入规则(分库规则id%100,分表信息id%10)来计算各个待写入数据的存储位置信息,而在扩容之后,为了平衡数据库中的数据量,需要按照扩容后的写入规则(分库规则id%200,分表信息id%10)来计算接下来需要写入的数据的存储位置信息。基于此,在接收到待写入数据的数据写入请求之后,会判断当前数据写入请求所处的阶段是扩容前还是扩容后,来确定相应的写入规则。
S103:确定包含第一标识及存储位置信息的第二标识,并建立待写入数据到第二标识的映射关系。
基于上述步骤S102所得到的存储位置信息(分库信息和分表信息),可以确定一个与待写入数据关联的第二标识。本实施例中,可以通过在上述第一标识id中的某个特定位置插入上述计算得到的分库信息和分表信息,来得到与该待写入数据相关联的第二标识,该第二标识是下述数据读取过程的路由依据。
继续参照图4,假设待写入数据100的第一标识(id)是:344567890199,因为该待写入数据100是写入到第一存储空间41内的数据(扩容前),则通过扩容前的写入规则(分库规则id%100,分表信息id%10)计算得到与该id对应的分库信息是:099,分表信息是:09。若将上述分库信息及分表信息插入到上述id的前5位,即前1-3位是分库信息,前4-5位是分表信息,则最终得到该待写入数据100的第二标识是:09909344567890199。同理,假设另一个待写入数据200的第一标识(id)是:13933310899,并且该待写入数据200是写入到第二存储空间42内的数据(扩容后),则通过扩容后的写入规则(分库规则id%200,分表信息id%10)计算得到与该id对应的分库信息是:099,分表信息是:09,则最终得到该待写入数据200的第二标识是:0990913933310899。当然,分库信息和分表信息可以插入到上述id的其他位置,需要预先约定好即可。此外,上述分库信息和分表信息也可以分开插入到所述第一标识id中的两个不同位置。
S104:依据上述存储位置信息进行路由,并按照路由的结果将待写入数据写入第一数据库。
路由是查找到与上述写入请求相应的子库、及子库下的数据表的过程。也就是说,在得到分库信息和分表信息后,即可以路由得到数据写入操作的路径,并基于该路径将待写入数据写入到相应的子库下的指定数据表中。由于路由为本技术领域内的公知技术,故在此不作赘述。
基于以上实施例的方法,数据写入操作是按照上述第二标识包含的存储位置信息来进行的,在数据写入操作完成后,在服务器需要从相应的数据库中读取数据时,需要根据待读取的数据所关联的第二标识中包含的存储位置信息,可以确定该待读取的数据被预先存放的位置。例如:某个数据的第二标识是:012022920303010202030112,则从该第二标识既可以确定该数据被写入到上述第一数据库中的编号为“012”的子库下的编号为“02”的数据表中了,从而完成该数据的读取操作。相较于现有技术,通过以上方案,无论写入规则(分库分表规则)作怎样的变更,其读取规则始终不需要作改变,比如:写入规则由id%100变更为id%200,其读取规则始终是按照每个数据所关联的第二标识中的分库信息及分表信息来确定数据存放的位置。正是因为上述方案,本申请实施例在第一数据库扩容时,无需将原先按照旧的写入规则写入到上述第一数据库中的旧数据,全部作迁移并按照新的写入规则重新写入到上述扩容后的第一数据库中,从而解决了在数据库扩容时所采取的数据迁移动作费时费力的问题,降低数据库维护的难度及成本。
图5为本申请第二实施例中数据写入方法的流程图。本实施例中,上述数据写入方法包括:
S201:接收携带有待写入数据及该待写入数据的第一标识id的数据写入请求。
S202:基于与第一数据库的第二存储空间对应的第二写入规则,确定与所述第一标识对应的存储位置信息;其中,所述第二存储空间是在第一数据库中的第一存储空间的基础上增加的。
参图6所示,其为本申请第二实施例中第一数据库的数据结构示意图。本实施例中,因为数据库扩容的需求,原先的第一数据库40只包含第一存储空间41,假设该第一存储空间41预先被切分成若干个子库,并且每个子库也预先切分成若干个数据表。随着业务的发展,在上述第一存储空间41的存储容量不足或者存储的数据量达到一定数量级,需要进行数据库扩容时,该第一数据库40在原先的第一存储空间41的基础上增加了第二存储空间42,根据实际情况,该第二存储空间42也根据分库分表规则,切分成若干个子库,每个子库也预先切分成若干个数据表。举例而言,假设第一存储空间41被切分成100个子库:{part0DB、part1DB、……、part99DB},子库的编号可以是000-099,并将每个子库切分成10个数据表:{Table0、Table1、……、Table9},数据表的编号可以是00-09;假设第二存储空间42也是被切分成100个子库:{part100DB、part101DB、……、part199DB},子库的编号可以是100-199,并将每个子库切分成10个数据表:{Table0、Table1、……、Table9},数据表的编号也可以是00-09。
由于原先的第一存储空间41中已经存放一定数据量的数据,而增加的第二存储空间42中还是空的或者只是存放了少量的数据量。一般地,第二存储空间42被增加到第一数据库40中后,第一存储空间41并不是完全不能写入数据,然而为了实现两个存储空间的数据量的均衡,本申请实施例将随后需要写入的数据优先地存放到增加的第二存储空间42中。具体地,第一存储空间41对应配置有第一写入规则,该第一写入规则确保数据可以被写入到第一存储空间41下的某个子库内的某数据表中。第二存储空间42对应配置有第二写入规则,该第二写入规则确保数据可以被写入到第二存储空间42下的某个子库内的某数据表中。
本实施例中,上述步骤S202之前,所述方法还包括:
根据与第一存储空间41对应的第一写入规则、及第二存储空间42包含的子库数量和每个子库下的数据表数量,来确定与第二存储空间42对应的第二写入规则。
具体地,所述第一写入规则包括第一分库规则和第一分表规则,所述第二写入规则包括第二分库规则和第二分表规则;则确定与第二存储空间42对应的第二写入规则的步骤包括:
将第一分库规则与第二存储空间42包含的子库数量相加,得到第二分库规则;其中,第一分库规则是将第一标识对第一存储空间41的子库数量进行取模。
确定第二分表规则为将第一标识对第二存储空间42中每个子库下的数据表数量进行取模。
参图6所示,举例而言,如果第一存储空间41的第一写入规则是:第一分库规则id%100,第一分表规则id%10,则基于上述规则确定过程,第二写入规则可以是:第二分库规则id%100+100,第二分表规则id%10。则,如果待写入数据100的第一标识id是344567890199,并且该数据是第一数据库在扩容前需要被写入到第一存储空间41中的,则按照以上第一写入规则,得到该待写入数据100的分库信息是099,分表信息是09。同理,如果另一个待写入数据200的第一标识id是:13933310899,并且该数据是上述第一数据在扩容后需要被写入到第二存储空间42中的,则按照以上第二写入规则,得到该待写入数据200的分库信息是199,分表信息是09。
关于第二写入规则的确定方式,本申请并不限于上述情况。例如,通过判断待写入数据的第一标识id是否大于某个数值来决定应该写入第一存储空间还是第二存储空间,如待写入数据的第一标识id:10000001>10000000,则将该待写入数据写入第二存储空间,否则,将该待写入数据写入第一存储空间。
S203:确定包含第一标识及存储位置信息的第二标识,并建立待写入数据到第二标识的映射关系。
存储位置信息包括分库信息和分表信息,与上述第一实施例的内容类似,可以通过在上述第一标识id中的某个特定位置插入上述计算得到的分库信息和分表信息,来得到与该待写入数据相关联的第二标识,该第二标识是下述数据读取过程的路由依据。
S204:依据所述存储位置信息进行路由,并按照所述路由的结果将所述待写入数据写入所述第一数据库的第二存储空间。
与上述第一实施例的内容类似,路由是查找到与上述写入请求相应的子库、及子库下的数据表的过程。也就是说,在得到分库信息和分表信息后,既可以路由得到数据写入操作的路径,并基于该路径将待写入数据写入到相应的子库下的指定数据表中。
本申请实施例在写入所述待写入数据的过程中,根据相应的写入规则确定与待写入数据的第一标识对应的存储位置信息,并根据该存储位置信息及上述第一标识,得到一个与待写入数据关联的第二标识。因为该第二标识中直接包含待写入数据的存储位置信息,从而使得数据读取过程可以无需根据上述待写入数据在写入过程所采取的写入规则来计算待读取数据的存储位置信息,也就是说,无论数据库的写入规则是否变更,都无需变更该数据库的读取规则,即读取规则始终是依据上述第二标识来确定待读取数据的存储位置信息。基于上述原因,本申请实施例在数据库需要扩容时无需采取数据迁移方式,从而降低数据库维护的难度及成本。
图7为本申请第三实施例中数据写入方法的流程图。本实施例中,所述数据写入方法,包括:
S301:接收携带有待写入数据及该待写入数据的第一标识id的数据写入请求。
S302:根据第一数据库的第二存储空间所存储的数据量,从与第二存储空间对应的第二写入规则、和与第一数据库的全部存储空间对应的第三写入规则中选取一个写入规则;其中,所述第二存储空间是在第一数据库中的第一存储空间的基础上增加的。
继续参上述图6所示,本实施例是基于上述第二实施例的内容衍生出来的。上述全部存储空间的定义是第一数据库40中原先的第一存储空间41和增加的第二存储空间42之和。因为在实际运用过程中,为了实现数据库中每个子库、每个数据表中的数据量的平衡,在增加的第二存储空间42中所存储的数据量达到一定的级别,也就是说,第二存储空间42中的数据量与原先存放在第一存储空间41内的数据量相差无几时,则需要改变该第一数据库40的写入规则。
首先介绍各个写入规则的确定过程。本申请实施例中,第一写入规则是与第一存储空间41对应的,该第一写入规则可以包括第一分库规则和第一分表规则,所述第二写入规则可以包括第二分库规则和第二分表规则,所述第三写入规则可以包括第三分库规则和第三分表规则。在上述步骤S302之前,所述方法还包括:
a)根据与第一存储空间41对应的第一写入规则、及第二存储空间42包含的子库数量和每个子库下的数据表数量,确定与第二存储空间42对应的第二写入规则。
本申请实施例中,上述步骤a具体包括:
将第一分库规则与所述第二存储空间42包含的子库数量相加,得到所述第二分库规则;其中,所述第一分库规则是将所述第一标识对所述第一存储空间41的子库数量进行取模。
确定所述第二分表规则为将所述第一标识对所述第二存储空间42中每个子库下的数据表数量进行取模。
例如,假设第一存储空间41包含100个子库,每个子库包含10个数据表;假设第二存储空间42包含100个子库,每个子库包含10个数据表。则第一分库规则可以是id%100,第一分表规则可以是id%10,第二分库规则可以是id%100+100,第二分表规则可以是id%10。
b)根据所述第一数据库40包含的子库数量、每个子库下的数据表数量,确定与全部存储空间对应的第三写入规则。
本申请实施例中,上述步骤b具体包括:
确定第三分库规则为将第一标识id对全部存储空间的子库数量进行取模。
确定第三分表规则为将第一标识id对全部存储空间中每个子库下的数据表数量进行取模。
如前所述,假设第一存储空间包含100个子库,每个子库包含10个数据表;假设第二存储空间包含100个子库,每个子库包含10个数据表。则全部存储空间包括200个子库,每个子库包含10个数据表,则第三分库规则可以是id%200,第三分表规则可以是id%10。当然,若存在各个子库所切分的数据表的数量不一致的情况,则根据所需切分的子库下的数据表数量,相应地调整所述第三分表规则即可。
为了实现各个子库、各个数据库的数据平衡,上述步骤S302具体包括:
确定第二存储空间42所存储的数据量与第一存储空间41所存储的数据量的差值。
判断所述差值是否小于预设阈值;若是,则选取与全部存储空间对应的第三写入规则;若否,则选取与第二存储空间42对应的第二写入规则。
继续沿用上述例子,假设第一存储空间41中的每个子库的数据量大致是105个,每个数据表的数据量大致103,若设定预设阈值是100,则起初还是依据第二分库规则id%100+100和第二分表规则id%10来将数据写入到第二存储空间42中,并时刻获悉第二存储空间42中各个子库的数据量m及各个子库下的数据表的数据量n,计算获得的差值是|m-105|或|n-103|。若上述差值|m-105|或|n-103|大于100,则表明第二存储空间42的数据量还未达到与第一存储空间41的数据量接近的状态,仍需按照第二写入规则进入数据写入动作;反之,若上述差值|m-105|或|n-103|小于100,则表明第二存储空间42的数据量已经达到与第一存储空间41的数据量接近的状态,需采取第三写入规则(第三分库规则是id%200,第三分表规则是id%10)来将待写入数据均分地写入到第一数据库40中。当然,本申请其他实施例中,也可以通过判断第二存储空间42中的数据量是否到达某个预设值(如:105),来判定需要选取哪一种写入规则。
S303:基于选取的写入规则,确定与所述第一标识对应的存储位置信息。
例如,第一标识id是593029459025,所选取的写入规则是:第二分库规则id%100+100和第二分表规则id%10,则存储位置信息中的分库信息是125,存储位置信息中的分表信息是05。
S304:确定包含所述第一标识及所述存储位置信息的第二标识,并建立所述待写入数据到所述第二标识的映射关系。
S305:依据所述存储位置信息进行路由,并按照所述路由的结果将所述待写入数据写入所述第一数据库。
上述步骤S304和步骤S305均与上述第一、第二实施例类似,可参照以上内容,在此不再赘述。
本实施例在数据库需要扩容时无需通过数据迁移方式,从而降低数据库维护的难度及成本。此外,本实施例还可以动态平衡第一存储空间和第二存储空间的数据量,以确保上述第一数据库的查询效率达到最佳。
图8为本申请实施例中数据读取方法的流程图。本申请实施例中,基于上述数据写入方法的数据读取方法,包括:
S401:接收携带有待读取数据的数据读取请求。
S402:获取与所述待读取数据对应的第二标识。
S403:提取所述第二标识中包含的根据第一数据库的当前待读取数据的写入规则来确定的存储位置信息。
S404:依据所述存储位置信息进行路由,并按照所述路由的结果从所述第一数据库中读取所述待读取数据。
基于该实施例中,在数据读取过程中,读取规则是依据在写入过程中生成的第二标识来确定该待读取数据的存储位置,所以无论在扩容时变更怎样的写入规则,均无需变更数据的读取规则,从而可以避免在数据库扩容时所作的数据迁移动作,降低数据库维护难度及成本,提高查询效率。
接下来介绍本申请实施例所提供的数据写入、读取装置。
图9为本申请一实施例中数据写入装置的模块示意图。本实施例中,所述数据写入装置,包括:
请求接收模块11,用于接收携带有待写入数据及该待写入数据的第一标识的数据写入请求;
信息确定模块12,用于基于第一数据库的当前待读取数据的写入规则,确定与所述第一标识对应的存储位置信息;
标识生成模块13,用于确定包含所述第一标识及所述存储位置信息的第二标识,并建立所述待写入数据到所述第二标识的映射关系;
数据写入模块14,用于依据所述存储位置信息进行路由,并按照所述路由的结果将所述待写入数据写入所述第一数据库。
本申请实施例中,所述写入规则包括分库规则和分表规则,所述存储位置信息包括分库信息和分表信息,所述信息确定模块12包括:
分库信息确定单元,用于基于第一数据库的当前待读取数据的分库规则,确定与所述第一标识对应的分库信息;
分表信息确定单元,用于基于第一数据库的当前待读取数据的分表规则,确定与所述第一标识对应的分表信息。
本申请实施例中,所述分库信息确定单元用于:
将所述第一标识对所述第一数据库的子库数量进行取模,并将所述取模的结果确定为所述分库信息;
所述分表信息确定单元用于:
将所述第一标识对所述第一数据库中每个子库下的数据表数量进行取模,并将所述取模的结果确定为所述分表信息。
本申请另一实施例中,所述数据写入装置包括:
请求接收模块11,用于接收携带有待写入数据及该待写入数据的第一标识的数据写入请求;
信息确定模块12,用于基于与第一数据库的第二存储空间对应的第二写入规则,确定与所述第一标识对应的存储位置信息;其中,所述第二存储空间是在第一数据库中的第一存储空间的基础上增加的;
标识生成模块13,用于确定包含所述第一标识及所述存储位置信息的第二标识,并建立所述待写入数据到所述第二标识的映射关系;
数据写入模块14,用于依据所述存储位置信息进行路由,并按照所述路由的结果将所述待写入数据写入所述第一数据库的第二存储空间。
本申请实施例中,所述装置还包括:
规则确定模块,用于根据与第一存储空间对应的第一写入规则、及第二存储空间包含的子库数量和每个子库下的数据表数量,确定与第二存储空间对应的第二写入规则。
本申请实施例中,所述第一写入规则包括第一分库规则和第一分表规则,所述第二写入规则包括第二分库规则和第二分表规则;则,所述规则确定模块包括:
分库规则确定单元,用于将第一分库规则与所述第二存储空间包含的子库数量相加,得到所述第二分库规则;其中,所述第一分库规则是将所述第一标识对所述第一存储空间的子库数量进行取模;
分表规则确定单元,用于确定所述第二分表规则为将所述第一标识对所述第二存储空间中每个子库下的数据表数量进行取模。
图10为本申请又一实施例中数据写入装置的模块示意图。本实施例中,该数据写入装置,包括:
请求接收模块11,用于接收携带有待写入数据及该待写入数据的第一标识的数据写入请求;
规则选取模块15,用于根据第一数据库的第二存储空间所存储的数据量,从与所述第二存储空间对应的第二写入规则、与所述第一数据库的全部存储空间对应的第三写入规则中选取一个写入规则;其中,所述第二存储空间是在第一数据库中的第一存储空间的基础上增加的;
信息确定模块12,用于基于选取的写入规则,确定与所述第一标识对应的存储位置信息;
标识生成模块13,用于确定包含所述第一标识及所述存储位置信息的第二标识,并建立所述待写入数据到所述第二标识的映射关系;
数据写入模块14,用于依据所述存储位置信息进行路由,并按照所述路由的结果将所述待写入数据写入所述第一数据库。
本申请实施例中,所述规则选取模块15包括:
差值确定单元,用于确定第二存储空间所存储的数据量与第一存储空间所存储的数据量的差值;
判断单元,用于判断所述差值是否小于预设阈值;
若是,则选取与全部存储空间对应的第三写入规则;
若否,则选取与第二存储空间对应的第二写入规则。
本申请实施例中,所述装置还包括:
第二规则确定单元,用于根据与第一存储空间对应的第一写入规则、及第二存储空间包含的子库数量和每个子库下的数据表数量,确定与第二存储空间对应的第二写入规则;
第三规则确定单元,用于根据所述第一数据库包含的子库数量、每个子库下的数据表数量,确定与全部存储空间对应的第三写入规则。
本申请实施例中,所述第一写入规则包括第一分库规则和第一分表规则,所述第二写入规则包括第二分库规则和第二分表规则,所述第三写入规则包括第三分库规则和第三分表规则;则,
所述第二规则确定单元用于:
将第一分库规则与所述第二存储空间包含的子库数量相加,得到所述第二分库规则;其中,所述第一分库规则是将所述第一标识对所述第一存储空间的子库数量进行取模;
确定所述第二分表规则为将所述第一标识对所述第二存储空间中每个子库下的数据表数量进行取模;
所述第三规则确定单元用于:
确定所述第三分库规则为将所述第一标识对所述全部存储空间的子库数量进行取模;
确定所述第三分表规则为将所述第一标识对所述全部存储空间中每个子库下的数据表数量进行取模。
图11为本申请一实施例中数据读取装置的模块示意图。本实施例中,所述数据读取装置,包括:
请求接收模块21,用于接收携带有待读取数据的数据读取请求;
标识获取模块22,用于获取与所述待读取数据对应的第二标识;
信息提取模块23,用于提取所述第二标识中包含的根据第一数据库的当前待读取数据的写入规则来确定的存储位置信息;
数据读取模块24,用于依据所述存储位置信息进行路由,并按照所述路由的结果从所述第一数据库中读取所述待读取数据。
基于以上内容,本申请实施例的数据写入装置在写入所述待写入数据的过程中,根据相应的写入规则确定与待写入数据的第一标识对应的存储位置信息,并根据该存储位置信息及上述第一标识,得到一个与待写入数据关联的第二标识。因为该第二标识中直接包含待写入数据的存储位置信息,从而使得数据读取装置可以无需根据上述待写入数据在写入过程所采取的写入规则来计算待读取数据的存储位置信息,也就是说,无论数据库的写入规则是否变更,都无需变更该数据库的读取规则,即读取规则始终是依据上述第二标识来确定待读取数据的存储位置信息。基于上述原因,本申请实施例在数据库需要扩容时无需采取数据迁移方式,从而降低数据库维护的难度及成本。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (22)

1.一种数据写入方法,其特征在于,包括:
接收携带有待写入数据及该待写入数据的第一标识的数据写入请求;
基于第一数据库的当前待写入数据的写入规则,确定与所述第一标识对应的存储位置信息;
确定包含所述第一标识及所述存储位置信息的第二标识,并建立所述待写入数据到所述第二标识的映射关系;
依据所述存储位置信息进行路由,并按照所述路由的结果将所述待写入数据写入所述第一数据库。
2.如权利要求1所述的方法,其特征在于,所述写入规则包括分库规则和分表规则,所述存储位置信息包括分库信息和分表信息,所述基于第一数据库的当前待写入数据的写入规则,确定与所述第一标识对应的存储位置信息,包括:
基于第一数据库的当前待写入数据的分库规则,确定与所述第一标识对应的分库信息;
基于第一数据库的当前待写入数据的分表规则,确定与所述第一标识对应的分表信息。
3.如权利要求2所述的方法,其特征在于,所述基于第一数据库的当前待写入数据的分库规则,确定与所述第一标识对应的分库信息,包括:
将所述第一标识对所述第一数据库的子库数量进行取模,并将所述取模的结果确定为所述分库信息;
所述基于第一数据库的当前待写入数据的分表规则,确定与所述第一标识对应的分表信息,包括:
将所述第一标识对所述第一数据库中每个子库下的数据表数量进行取模,并将所述取模的结果确定为所述分表信息。
4.一种数据写入方法,其特征在于,包括:
接收携带有待写入数据及该待写入数据的第一标识的数据写入请求;
基于与第一数据库的第二存储空间对应的第二写入规则,确定与所述第一标识对应的存储位置信息;其中,所述第二存储空间是在第一数据库中的第一存储空间的基础上增加的;
确定包含所述第一标识及所述存储位置信息的第二标识,并建立所述待写入数据到所述第二标识的映射关系;
依据所述存储位置信息进行路由,并按照所述路由的结果将所述待写入数据写入所述第一数据库的第二存储空间。
5.如权利要求4所述的方法,其特征在于,所述基于与第一数据库的第二存储空间对应的第二写入规则,确定与所述第一标识对应的存储位置信息之前,所述方法还包括:
根据与第一存储空间对应的第一写入规则、及第二存储空间包含的子库数量和每个子库下的数据表数量,确定与第二存储空间对应的第二写入规则。
6.如权利要求5所述的方法,其特征在于,所述第一写入规则包括第一分库规则和第一分表规则,所述第二写入规则包括第二分库规则和第二分表规则;则,所述确定与第二存储空间对应的第二写入规则,包括:
将第一分库规则与所述第二存储空间包含的子库数量相加,得到所述第二分库规则;其中,所述第一分库规则是将所述第一标识对所述第一存储空间的子库数量进行取模;
确定所述第二分表规则为将所述第一标识对所述第二存储空间中每个子库下的数据表数量进行取模。
7.一种数据写入方法,其特征在于,包括:
接收携带有待写入数据及该待写入数据的第一标识的数据写入请求;
根据第一数据库的第二存储空间所存储的数据量,从与所述第二存储空间对应的第二写入规则、与所述第一数据库的全部存储空间对应的第三写入规则中选取一个写入规则;其中,所述第二存储空间是在第一数据库中的第一存储空间的基础上增加的;
基于选取的写入规则,确定与所述第一标识对应的存储位置信息;
确定包含所述第一标识及所述存储位置信息的第二标识,并建立所述待写入数据到所述第二标识的映射关系;
依据所述存储位置信息进行路由,并按照所述路由的结果将所述待写入数据写入所述第一数据库。
8.如权利要求7所述的方法,其特征在于,所述根据第一数据库的第二存储空间所存储的数据量,从与所述第二存储空间对应的第二写入规则、与所述第一数据库的全部存储空间对应的第三写入规则中选取一个写入规则,包括:
确定第二存储空间所存储的数据量与第一存储空间所存储的数据量的差值;
判断所述差值是否小于预设阈值;
若是,则选取与全部存储空间对应的第三写入规则;
若否,则选取与第二存储空间对应的第二写入规则。
9.如权利要求7所述的方法,其特征在于,所述根据第一数据库的第二存储空间所存储的数据量,从与所述第二存储空间对应的第二写入规则、与所述第一数据库的全部存储空间对应的第三写入规则中选取一个写入规则之前,所述方法还包括:
根据与第一存储空间对应的第一写入规则、及第二存储空间包含的子库数量和每个子库下的数据表数量,确定与第二存储空间对应的第二写入规则;
根据所述第一数据库包含的子库数量、每个子库下的数据表数量,确定与全部存储空间对应的第三写入规则。
10.如权利要求9所述的方法,其特征在于,所述第一写入规则包括第一分库规则和第一分表规则,所述第二写入规则包括第二分库规则和第二分表规则,所述第三写入规则包括第三分库规则和第三分表规则;则,
所述确定与第二存储空间对应的第二写入规则,包括:
将第一分库规则与所述第二存储空间包含的子库数量相加,得到所述第二分库规则;其中,所述第一分库规则是将所述第一标识对所述第一存储空间的子库数量进行取模;
确定所述第二分表规则为将所述第一标识对所述第二存储空间中每个子库下的数据表数量进行取模;
所述确定与全部存储空间对应的第三写入规则,包括:
确定所述第三分库规则为将所述第一标识对所述全部存储空间的子库数量进行取模;
确定所述第三分表规则为将所述第一标识对所述全部存储空间中每个子库下的数据表数量进行取模。
11.一种数据读取方法,其特征在于,包括:
接收携带有待读取数据的数据读取请求;
获取与所述待读取数据对应的第二标识;
提取所述第二标识中包含的根据第一数据库的当前待读取数据的写入规则来确定的存储位置信息;
依据所述存储位置信息进行路由,并按照所述路由的结果从所述第一数据库中读取所述待读取数据。
12.一种数据写入装置,其特征在于,包括:
请求接收模块,用于接收携带有待写入数据及该待写入数据的第一标识的数据写入请求;
信息确定模块,用于基于第一数据库的当前待写入数据的写入规则,确定与所述第一标识对应的存储位置信息;
标识生成模块,用于确定包含所述第一标识及所述存储位置信息的第二标识,并建立所述待写入数据到所述第二标识的映射关系;
数据写入模块,用于依据所述存储位置信息进行路由,并按照所述路由的结果将所述待写入数据写入所述第一数据库。
13.如权利要求12所述的装置,其特征在于,所述写入规则包括分库规则和分表规则,所述存储位置信息包括分库信息和分表信息,所述信息确定模块包括:
分库信息确定单元,用于基于第一数据库的当前待写入数据的分库规则,确定与所述第一标识对应的分库信息;
分表信息确定单元,用于基于第一数据库的当前待写入数据的分表规则,确定与所述第一标识对应的分表信息。
14.如权利要求13所述的装置,其特征在于,所述分库信息确定单元用于:
将所述第一标识对所述第一数据库的子库数量进行取模,并将所述取模的结果确定为所述分库信息;
所述分表信息确定单元用于:
将所述第一标识对所述第一数据库中每个子库下的数据表数量进行取模,并将所述取模的结果确定为所述分表信息。
15.一种数据写入装置,其特征在于,包括:
请求接收模块,用于接收携带有待写入数据及该待写入数据的第一标识的数据写入请求;
信息确定模块,用于基于与第一数据库的第二存储空间对应的第二写入规则,确定与所述第一标识对应的存储位置信息;其中,所述第二存储空间是在第一数据库中的第一存储空间的基础上增加的;
标识生成模块,用于确定包含所述第一标识及所述存储位置信息的第二标识,并建立所述待写入数据到所述第二标识的映射关系;
数据写入模块,用于依据所述存储位置信息进行路由,并按照所述路由的结果将所述待写入数据写入所述第一数据库的第二存储空间。
16.如权利要求15所述的装置,其特征在于,所述装置还包括:
规则确定模块,用于根据与第一存储空间对应的第一写入规则、及第二存储空间包含的子库数量和每个子库下的数据表数量,确定与第二存储空间对应的第二写入规则。
17.如权利要求16所述的装置,其特征在于,所述第一写入规则包括第一分库规则和第一分表规则,所述第二写入规则包括第二分库规则和第二分表规则;则,所述规则确定模块包括:
分库规则确定单元,用于将第一分库规则与所述第二存储空间包含的子库数量相加,得到所述第二分库规则;其中,所述第一分库规则是将所述第一标识对所述第一存储空间的子库数量进行取模;
分表规则确定单元,用于确定所述第二分表规则为将所述第一标识对所述第二存储空间中每个子库下的数据表数量进行取模。
18.一种数据写入装置,其特征在于,包括:
请求接收模块,用于接收携带有待写入数据及该待写入数据的第一标识的数据写入请求;
规则选取模块,用于根据第一数据库的第二存储空间所存储的数据量,从与所述第二存储空间对应的第二写入规则、与所述第一数据库的全部存储空间对应的第三写入规则中选取一个写入规则;其中,所述第二存储空间是在第一数据库中的第一存储空间的基础上增加的;
信息确定模块,用于基于选取的写入规则,确定与所述第一标识对应的存储位置信息;
标识生成模块,用于确定包含所述第一标识及所述存储位置信息的第二标识,并建立所述待写入数据到所述第二标识的映射关系;
数据写入模块,用于依据所述存储位置信息进行路由,并按照所述路由的结果将所述待写入数据写入所述第一数据库。
19.如权利要求18所述的装置,其特征在于,所述规则选取模块包括:
差值确定单元,用于确定第二存储空间所存储的数据量与第一存储空间所存储的数据量的差值;
判断单元,用于判断所述差值是否小于预设阈值;
若是,则选取与全部存储空间对应的第三写入规则;
若否,则选取与第二存储空间对应的第二写入规则。
20.如权利要求18所述的装置,其特征在于,所述装置还包括:
第二规则确定单元,用于根据与第一存储空间对应的第一写入规则、及第二存储空间包含的子库数量和每个子库下的数据表数量,确定与第二存储空间对应的第二写入规则;
第三规则确定单元,用于根据所述第一数据库包含的子库数量、每个子库下的数据表数量,确定与全部存储空间对应的第三写入规则。
21.如权利要求20所述的装置,其特征在于,所述第一写入规则包括第一分库规则和第一分表规则,所述第二写入规则包括第二分库规则和第二分表规则,所述第三写入规则包括第三分库规则和第三分表规则;则,
所述第二规则确定单元用于:
将第一分库规则与所述第二存储空间包含的子库数量相加,得到所述第二分库规则;其中,所述第一分库规则是将所述第一标识对所述第一存储空间的子库数量进行取模;
确定所述第二分表规则为将所述第一标识对所述第二存储空间中每个子库下的数据表数量进行取模;
所述第三规则确定单元用于:
确定所述第三分库规则为将所述第一标识对所述全部存储空间的子库数量进行取模;
确定所述第三分表规则为将所述第一标识对所述全部存储空间中每个子库下的数据表数量进行取模。
22.一种数据读取装置,其特征在于,包括:
请求接收模块,用于接收携带有待读取数据的数据读取请求;
标识获取模块,用于获取与所述待读取数据对应的第二标识;
信息提取模块,用于提取所述第二标识中包含的根据第一数据库的当前待读取数据的写入规则来确定的存储位置信息;
数据读取模块,用于依据所述存储位置信息进行路由,并按照所述路由的结果从所述第一数据库中读取所述待读取数据。
CN201510272393.6A 2015-05-25 2015-05-25 一种数据写入、读取方法及装置 Active CN106294421B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510272393.6A CN106294421B (zh) 2015-05-25 2015-05-25 一种数据写入、读取方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510272393.6A CN106294421B (zh) 2015-05-25 2015-05-25 一种数据写入、读取方法及装置

Publications (2)

Publication Number Publication Date
CN106294421A true CN106294421A (zh) 2017-01-04
CN106294421B CN106294421B (zh) 2020-02-04

Family

ID=57635044

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510272393.6A Active CN106294421B (zh) 2015-05-25 2015-05-25 一种数据写入、读取方法及装置

Country Status (1)

Country Link
CN (1) CN106294421B (zh)

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106897409A (zh) * 2017-02-16 2017-06-27 北京致远互联软件股份有限公司 数据分库存储方法及装置
CN108399262A (zh) * 2018-03-14 2018-08-14 北京思特奇信息技术股份有限公司 一种数据库扩容方法及系统
CN108733787A (zh) * 2018-05-11 2018-11-02 中国平安人寿保险股份有限公司 数据库操作方法、装置、电子设备及存储介质
WO2018214905A1 (zh) * 2017-05-26 2018-11-29 贵州白山云科技有限公司 一种数据存储的方法、装置、介质及设备
CN110175808A (zh) * 2019-04-17 2019-08-27 广州精选速购网络科技有限公司 一种订单管理、查询方法、装置、设备及介质
CN110457324A (zh) * 2019-08-09 2019-11-15 泰康保险集团股份有限公司 数据存储方法和装置
CN110750513A (zh) * 2019-09-17 2020-02-04 福建天泉教育科技有限公司 数据库动态扩容的方法、存储介质
CN110858194A (zh) * 2018-08-16 2020-03-03 北京京东尚科信息技术有限公司 一种数据库扩容的方法和装置
CN110928490A (zh) * 2019-10-28 2020-03-27 中国科学院上海微系统与信息技术研究所 一种数据的存储方法和装置
WO2020103679A1 (zh) * 2018-11-21 2020-05-28 华为技术有限公司 一种数据存储方法及装置
CN111797102A (zh) * 2020-07-06 2020-10-20 亿度慧达教育科技(北京)有限公司 数据写入方法、装置和电子设备
CN111813772A (zh) * 2019-04-12 2020-10-23 阿里巴巴集团控股有限公司 数据处理方法以及装置
CN111858765A (zh) * 2020-07-24 2020-10-30 中国工商银行股份有限公司 应用于数据库扩容场景的数据处理方法、装置及系统
CN112395294A (zh) * 2020-11-27 2021-02-23 浪潮云信息技术股份公司 一种数据库数据管理方法及系统、数据库

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009048509A (ja) * 2007-08-22 2009-03-05 Fujitsu Microelectronics Ltd マルチテクスチャマッピング装置、およびマルチテクスチャデータのメモリ格納方法
CN101419600A (zh) * 2007-10-22 2009-04-29 深圳市亚贝电气技术有限公司 基于面向对象文件系统的数据副本映射方法及装置
CN102541997A (zh) * 2011-11-23 2012-07-04 苏州阔地网络科技有限公司 一种自动分库的数据库执行方法及系统
CN102821138A (zh) * 2012-07-09 2012-12-12 广州鼎鼎信息科技有限公司 一种适用于云存储系统的元数据分布式存储方法
CN103176750A (zh) * 2013-02-27 2013-06-26 武汉虹旭信息技术有限责任公司 基于交错时间分区的移动互联网数据存储系统及其方法
CN103488644A (zh) * 2012-06-12 2014-01-01 联想(北京)有限公司 进行数据存储的方法及数据库系统
CN103577440A (zh) * 2012-07-27 2014-02-12 阿里巴巴集团控股有限公司 一种非关系型数据库中的数据处理方法和装置
CN103714097A (zh) * 2012-10-09 2014-04-09 阿里巴巴集团控股有限公司 一种访问数据库的方法和装置
CN104615785A (zh) * 2015-03-04 2015-05-13 浪潮集团有限公司 一种基于TYKY cNosql数据库的数据存储方法及装置

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009048509A (ja) * 2007-08-22 2009-03-05 Fujitsu Microelectronics Ltd マルチテクスチャマッピング装置、およびマルチテクスチャデータのメモリ格納方法
CN101419600A (zh) * 2007-10-22 2009-04-29 深圳市亚贝电气技术有限公司 基于面向对象文件系统的数据副本映射方法及装置
CN102541997A (zh) * 2011-11-23 2012-07-04 苏州阔地网络科技有限公司 一种自动分库的数据库执行方法及系统
CN103488644A (zh) * 2012-06-12 2014-01-01 联想(北京)有限公司 进行数据存储的方法及数据库系统
CN102821138A (zh) * 2012-07-09 2012-12-12 广州鼎鼎信息科技有限公司 一种适用于云存储系统的元数据分布式存储方法
CN103577440A (zh) * 2012-07-27 2014-02-12 阿里巴巴集团控股有限公司 一种非关系型数据库中的数据处理方法和装置
CN103714097A (zh) * 2012-10-09 2014-04-09 阿里巴巴集团控股有限公司 一种访问数据库的方法和装置
CN103176750A (zh) * 2013-02-27 2013-06-26 武汉虹旭信息技术有限责任公司 基于交错时间分区的移动互联网数据存储系统及其方法
CN104615785A (zh) * 2015-03-04 2015-05-13 浪潮集团有限公司 一种基于TYKY cNosql数据库的数据存储方法及装置

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106897409A (zh) * 2017-02-16 2017-06-27 北京致远互联软件股份有限公司 数据分库存储方法及装置
WO2018214905A1 (zh) * 2017-05-26 2018-11-29 贵州白山云科技有限公司 一种数据存储的方法、装置、介质及设备
CN108399262A (zh) * 2018-03-14 2018-08-14 北京思特奇信息技术股份有限公司 一种数据库扩容方法及系统
CN108733787A (zh) * 2018-05-11 2018-11-02 中国平安人寿保险股份有限公司 数据库操作方法、装置、电子设备及存储介质
CN110858194A (zh) * 2018-08-16 2020-03-03 北京京东尚科信息技术有限公司 一种数据库扩容的方法和装置
CN111208934A (zh) * 2018-11-21 2020-05-29 华为技术有限公司 一种数据存储方法及装置
US11550486B2 (en) 2018-11-21 2023-01-10 Huawei Technologies Co., Ltd. Data storage method and apparatus
WO2020103679A1 (zh) * 2018-11-21 2020-05-28 华为技术有限公司 一种数据存储方法及装置
CN111813772B (zh) * 2019-04-12 2024-05-07 阿里巴巴集团控股有限公司 数据处理方法以及装置
CN111813772A (zh) * 2019-04-12 2020-10-23 阿里巴巴集团控股有限公司 数据处理方法以及装置
CN110175808A (zh) * 2019-04-17 2019-08-27 广州精选速购网络科技有限公司 一种订单管理、查询方法、装置、设备及介质
CN110457324A (zh) * 2019-08-09 2019-11-15 泰康保险集团股份有限公司 数据存储方法和装置
CN110750513A (zh) * 2019-09-17 2020-02-04 福建天泉教育科技有限公司 数据库动态扩容的方法、存储介质
CN110928490A (zh) * 2019-10-28 2020-03-27 中国科学院上海微系统与信息技术研究所 一种数据的存储方法和装置
CN110928490B (zh) * 2019-10-28 2021-08-17 中国科学院上海微系统与信息技术研究所 一种数据的存储方法和装置
CN111797102A (zh) * 2020-07-06 2020-10-20 亿度慧达教育科技(北京)有限公司 数据写入方法、装置和电子设备
CN111858765A (zh) * 2020-07-24 2020-10-30 中国工商银行股份有限公司 应用于数据库扩容场景的数据处理方法、装置及系统
CN112395294A (zh) * 2020-11-27 2021-02-23 浪潮云信息技术股份公司 一种数据库数据管理方法及系统、数据库

Also Published As

Publication number Publication date
CN106294421B (zh) 2020-02-04

Similar Documents

Publication Publication Date Title
CN106294421A (zh) 一种数据写入、读取方法及装置
CN102725753B (zh) 优化数据访问的方法及装置、优化数据存储的方法及装置
CN103488791B (zh) 数据访问方法、系统及数据仓库
CN106407207B (zh) 一种实时新增数据更新方法和装置
CN106844510A (zh) 一种分布式数据库集群的数据迁移方法和装置
CN108074031A (zh) 订单组分配方法及装置
CN106294352B (zh) 一种文件处理方法、装置和文件系统
CN103714097A (zh) 一种访问数据库的方法和装置
CN107404481B (zh) 用户信息识别方法及装置
CN106874320A (zh) 分布式流式数据处理的方法和装置
CN104298541A (zh) 云存储系统的数据分布算法及其装置
CN103049516B (zh) 一种数据处理方法及装置
CN109582452A (zh) 一种容器调度方法、调度装置及电子设备
CN114281793A (zh) 数据校验方法、装置和系统
CN106844288A (zh) 一种随机字符串生成方法及装置
CN106547870A (zh) 数据库的分表方法及装置
CN112100185A (zh) 区块链数据平衡负载的索引系统及方法
CN105302838A (zh) 分类方法、查找方法和设备
CN108920105A (zh) 基于社区结构的图数据分布式存储方法及装置
CN108267760A (zh) 定位数据的获取方法、装置、计算机设备和可读存储介质
CN105224541B (zh) 数据的唯一性控制方法、信息存储方法及装置
CN105630419A (zh) 一种资源池的分区视图发送方法及管理节点
CN106550006A (zh) 云服务器资源分配方法和装置
CN104346234B (zh) 一种内存访问的方法、设备及系统
CN106570029A (zh) 分布式关系型数据库的数据处理方法及系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20200921

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman, British Islands

Patentee after: Innovative advanced technology Co.,Ltd.

Address before: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman, British Islands

Patentee before: Advanced innovation technology Co.,Ltd.

Effective date of registration: 20200921

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman, British Islands

Patentee after: Advanced innovation technology Co.,Ltd.

Address before: A four-storey 847 mailbox in Grand Cayman Capital Building, British Cayman Islands

Patentee before: Alibaba Group Holding Ltd.

TR01 Transfer of patent right