存储数据和获取数据的方法、装置、设备和存储介质
文献发布时间:2023-06-19 11:35:49
技术领域
本公开涉及人工智能技术领域,尤其涉及智能搜索领域的用于存储和获取数据的方法、装置、设备和计算机可读存储介质。
背景技术
随着计算机技术的发展,很多应用涉及用户之间的交互。例如,用户可以在应用中展现自己的信息以供其他用户浏览。如果其他用户对该用户的内容感兴趣,为了以后继续获取该用户的信息,则该其他用户通常会关注该用户以成为该用户的粉丝。
随着各种应用中用户的增多,用户的粉丝数量也在急剧地增长。由于用户在应用中的呈现的内容不同,不同的用户具有不同的粉丝数量。关于与这些用户和分析有关的大量数据,目前的技术存在存储效率低、查找速度慢等问题。
发明内容
本公开提供了用于存储数据和获取数据的方法、装置、设备以及存储介质。
根据本公开的第一方面,提供了一种用于存储数据的方法。该方法包括响应于接收到指示目标用户与第一用户建立关联的消息,确定目标用户的级别;该方法还包括从多个数据库中确定与目标用户的级别相对应的目标数据库,多个数据库各自具有不同的访问模式。该方法还包括按照目标数据库的访问模式,将与第一用户有关的数据存储到目标数据库中。
根据本公开的第二方面,提供了一种用于获取数据的方法。该方法包括响应于接收到用于查找目标用户的关联用户的请求,确定目标用户的级别;从多个数据库中确定与目标用户的级别相对应的目标数据库,多个数据库各自具有不同的访问模式;以及按照目标数据库的访问模式,从目标数据库中获取关联用户的数据。
根据本公开的第三方面,提供了一种用于存储数据的装置。该装置包括目标用户的级别确定模块,被配置为响应于接收到指示目标用户与第一用户建立关联的消息,确定目标用户的级别;目标数据库确定模块,被配置为从多个数据库中确定与目标用户的级别相对应的目标数据库,多个数据库各自具有不同的访问模式;以及存储模块,被配置为按照目标数据库的访问模式,将与第一用户有关的数据存储到目标数据库中。
根据本公开的第四方面,提供了一种用于获取数据的装置。该装置包括目标用户的级别确定模块,被配置为响应于接收到用于查找目标用户的关联用户的请求,确定目标用户的级别;目标数据库确定模块,被配置为从多个数据库中确定与目标用户的级别相对应的目标数据库,多个数据库各自具有不同的访问模式;以及获取模块,被配置为按照目标数据库的访问模式,从目标数据库中获取关联用户的数据。
根据本公开的第五方面,提供了一种电子设备。该电子设备包括至少一个处理器;以及与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行根据本公开的第一方面的方法。
根据本公开的第六方面,提供了一种电子设备。该电子设备包括至少一个处理器;以及与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行根据本公开的第二方面的方法。
根据本公开的第七方面,提供一种存储有计算机指令的非瞬时计算机可读存储介质,计算机指令用于使计算机执行根据本公开的第一方面的方法。
根据本公开的第八方面,提供一种存储有计算机指令的非瞬时计算机可读存储介质,计算机指令用于使计算机执行根据本公开的第二方面的方法。
根据本公开的第九方面,提供一种计算机程序产品,包括计算机程序,计算机程序在被处理器执行时实现根据本公开的第一方面的方法的步骤。
根据本公开的第十方面,提供一种计算机程序产品,包括计算机程序,计算机程序在被处理器执行时实现根据本公开的第一方面的方法的步骤。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本公开的限定。其中:
图1示出了本公开的多个实施例能够在其中实现的环境100的示意图;
图2示出了根据本公开的一些实施例的用于存储数据方法200的流程图;
图3示出了根据本公开的一些实施例的用于查询数据的方法300的示意图;
图4示出了根据本公开的一些实施例的用于处理数据的方法400的示意图;
图5示出了根据本公开的一些实施例的用于处理数据的装置500的框图;
图6示出了根据本公开的一些实施例的用于查询数据的装置600的框图;以及
图7示出了能够实施本公开的多个实施例的设备700的框图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
在本公开的实施例的描述中,术语“包括”及其类似用语应当理解为开放性包含,即“包括但不限于”。术语“基于”应当理解为“至少部分地基于”。术语“一个实施例”或“该实施例”应当理解为“至少一个实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
随着用户粉丝数据的增长,粉丝系统的数据量越来越大。由于粉丝数量没有上限,因此会出现一个大V用户有近亿量级的粉丝。此时,需要提供一套能够支持大列表查询、且易扩展的粉丝存储系统。
对于这些粉丝数据的存储,传统方案中有两种解决方式。一种方式是直接通过关系型数据库存储系统进行存储,按照被关注对象进行分表。然而,这种存储方式会导致分表困难,不易扩展,并且会出现性能瓶颈问题。当单表数量很大的时候,查询会导致集群性能降低。
另一种方式是采用非关系型数据库进行存储。然而,这种方式不能很好的支持条件索引。此外,还会造成单个键过大、存储器使用不均、大的键操作阻塞服务等问题。
为了至少解决上述问题,本公开提出一种用于存储数据的改进方案。在该方案中,在接收到指示目标用户与第一用户建立关联的消息时,计算设备确定目标用户的级别。然后计算设备从多个数据库中确定与目标用户的级别相对应的目标数据库,所述多个数据库各自具有不同的访问模式。按照目标数据库的访问模式,计算设备将与第一用户有关的数据存储到目标数据库中。通过该方法,可以实现快速定位存储,提升查询效率和检索速度,提升用户体验。
图1示出了本公开的多个实施例能够在其中实现的环境100的示意图。如图1所示,环境100包括终端104、116和计算设备108。图1中示了了两个终端104、116,其仅是示例,而非对本公开的体限定,可以包括任意数量的终端。
终端104和116可用于运行各种应用。终端104可以使用户102利用运行的应用来关注目标用户114以成为目标用户114的关联用户,例如成为目标用户114的粉丝。终端116可以使目标用户114查询关注他的用户的信息,例如查询粉丝数据。为了描述方便,用户102也称为第一用户,在第一用户关注目标用户后,该第一用户成为目标用户的关联用户。
终端104和116可以被实现为任何类型的计算设备,包括但不限于移动电话(例如,智能手机)、膝上型计算机、便携式数字助理(PDA)、电子书(电子书)阅读器、便携式游戏机、便携式媒体播放器、游戏机、机顶盒(STB)、智能电视(TV)、个人计算机、膝上型计算机、车载计算机(例如,导航单元)等。
用户102通过终端104关注目标用户114后,会生成消息106并发送到计算设备108。在一些实施例中,消息106包括用户的标识和目标用户的标识。备选地或附加地,消息106还包括用户102关注目标用户114的时间。上述示例仅是用于描述本公开,而非对本公开的具体限定。本领域技术人员可以依据需要设置消息的内容,并且本领域技术人员也可以以任意合适的方式来获取用户102关注目标用户114的数据信息。
计算设备108将对目标用户114的关联用户的数据进行存储和管理。计算设备108包括但不限于个人计算机、服务器计算机、手持或膝上型设备、移动设备(诸如移动电话、个人数字助理(PDA)、媒体播放器等)、多处理器系统、消费电子产品、小型计算机、大型计算机、包括上述系统或设备中的任意一个的分布式计算环境等。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务("Virtual Private Server",或简称"VPS")中,存在的管理难度大,业务扩展性弱的缺陷。服务器也可以为分布式系统的服务器,或者是结合了区块链的服务器。
计算设备108会根据消息106中目标用户114的标识来确定目标用户的级别。在一些实施例中,目标用户的级别与用户的关联用户的数量有关,例如第一级别的用户的关联用户的数目低于阈值数目,第二级别的用户的关联用户的数目等于或大于阈值数目。在一些实施例中,用户的级别与用户的重要程度有关。例如,不重要的用户具有第一级别,重要的用户具有第二级别。上述示例仅是用于描述本公开,而非对本公开的具体限定。级别对应的内容以及级别的数目可以依据需要由本领域技术人员设置。
计算设备108从多个数据库中确定出与目标用户的级别对应的目标数据库,多个数据库各自具有不同的访问模式。访问模式是用于访问对应的存储库的数据表的模式,其至少包括将数据存储到数据表的存储操作模式和从数据表中查找数据的查找操作模式。
在一些实施例中,在访问模式为存储数据的操作模式时,在第一数据库110中,数据要存储到的表是利用用户信息表中给出的表的标识来确定的,而在第二数据库112中,用于存储数据的表是通过对目标用户的标识进行哈希操作来确定的。图1中示出了两个数据库110和112仅是示例,而非对本公开具体限定,可以具有任意合适数目的数据库。
在一些实施例中,在访问模式为查找数据的操作模式时,在第一数据库110中,要查找的数据所在的表是利用用户信息表中给出的表标识来确定的,而在第二数据库112中,要查找的数据所在的表表是通过对目标用户的标识进行哈希操作来确定的。上述示例仅是用于描述本公开,而非对本公开的具体限定。
计算设备108中存在用户信息表,该用户信息表内存储有预定级别的用户的标识以及存储该用户的关联用户的数据的表的标识,该表的标识不仅包括当前正在使用的表的标识,还包括第一数据库中以前存储过该用户的关联用户的数据的历史表的标识。备选地或附加地,用户信息表还包括增加的用于存储用户的关联用户的数据的表的时间。
计算设备108因此可以通过用户信息表确定出目标用户114的级别。如果目标用户114的标识不在用户信息表中,表明目标用户114的类型为第一级别。在一些实施例中,第一级别的目标用户的关联用户的数目不超过阈值数目,例如粉丝数不超过10万,也可以将该目标用户称为小V。
如果目标用户114的标识在用户信息表中,表明目标用户114的类型为第二级别。例如,第二级别的目标用户的关联用户的数目等于或超过阈值,例如粉丝数等于或大于10万,也可以将该目标用户称为大V。
如果目标用户的级别为第一级别,则将用户102的数据存储到第二数据库112中,例如小V数据库。如果目标用户级别为第二级别,则将用户102的数据存储到第一数据库110中,例如大V数据库。
在表中存储的目标用户的关联用户的数据包括用户102的标识、目标用户114的标识,备选地或附加地,还包括用户102关注目标用户114的时间。
如果基于用户的级别,用户的数据需要被存储在第一数据库的数据表中。此时,计算设备108在第一数据库中针对目标用户114的数据表存储用户102的数据时,会从对应的数据表中查找已存储的该目标用户的关联用户的数目,然后递增1来获得关联用户的当前数目。
计算设备108将当前数目与第一阈值数目进行比较。如果不超过第一阈值数目,则直接进行存储。在当前数目等于或超过第一阈值数目时,需要获取新的数据表来存储目标用户114以的关联用户的数据。如果此时只有一个关联用户的数据需要保存,则保存该数据放入消息队列中。如果此时有多个用户的数据并发保存,选择其中一定比例的用户数据放入消息队列,其他的正常进行存储。
然后计算设备从消息队列中获取要获得新数据表的目标用户。然后在第一数据库110中查看哪个数据表具有最少的存储数据,然后将该表作为用于存储目标用户的关联用户的数据的新数据表。并将新数据表的标识加入用户信息表中。如果消息队列中有连续的多个关于为目标用户分表的消息,由于第一个消息的处理已经完成分表,后面的针对该目标用户分表的消息可以根据已经确定了新数据表而不用被处理了。
如果基于用户的级别,用户的数据需要被存储在第二数据库的数据表中。此时,计算设备108在第二数据库中针对目标用户114的当前数据表存储用户102的数据时,会从对应的数据表中查找已存储的该目标用户的关注用户的数目,然后递增1来获得关联用户的当前数目。
计算设备108将当前数据与第二阈值数目进行比较。如果不超过第二阈值数据,则直接进行存储。在当前数目等于或超过第二阈值数目时,需要从第一数据库获取新的数据表来存储目标用户114以的关联用户的数据。如果此时只有一个关联用户的数据需要保存,则将该数据作为通知消息放入消息队列中。如果此时有多个用户的数据并发保存,则选择其中一定比例的用户数据作为通知消息放入消息队列。然后计算设备从消息队列中获取要获得新数据表的目标用户。然后在第一数据库110中查看哪个数据表具有最少的存储数据,然后将该表作为用于存储目标用户的关注用户的数据的新数据表。并将新数据表的标识加入用户信息表中。如果消息队列中有连续的多个关于为目标用户分表的消息,由于第一个消息的处理已经完成分表,后面的针对该目标用户分表的消息可以根据已经确定了新数据表而不用被处理了。
在一些实施例中,第一阈值数目等于第二阈值数目。在一些实施例中,第一阈值数据不等于第二阈值数目。上述示例仅是用于描述本公开,而非对本公开的具体限定。
目标用户114还可以利用终端116来查询其关联用户的信息。目标用户114通过终端114向计算设备108发送用于获取其关注用户的信息的查找请求118。该请求中至少包括目标用户的标识。计算设备108然后根据目标用户的标识来通过用户信息表确定出目标用户的类型。然后根据其类型从第一数据库或第二数据库中来查找目标用户的关联用户的数据。该查找过程与存储过程相对应。
在一些实施例中,目标用户可以基于目标用户的标识查找全部的关联用户。在一些实施例中,用户可以设置获取关联用户的数量,然后从最近存储目标用户的关注用户的数据的数据表中查找。例如,如果目标用户是小V,则从对应的表中查找时间最近的预定数量的关注用户。如果目标用户是大V,由于大V的数据量比较多,其中第二数据库中的一个数据表中包括第二阈值数量的关注用户,在第一数据库存储有其余的关注用户的数据,并且第一数据库中存储关注用户的数据的数据表可以从用户信息表中确定。用户信息表中存储了关注用户的数据从开始存储到当前时刻所用到的所有存储表。用户信息表中存储有大V用户每阈值数目的关注用户存储在的数据表的标识以及当前用于存储关注用户的数据表的标识。因此,可以多用户信息表中确定用于获取部分关注用户的数据的数据表,例如从时间最近的表中查找,如果数量不够,可以再从下一个时间较近的数据表中查找。上述示例仅是用于描述本公开,而非对本公开的具体限定。
通过该方法,可以实现快速定位存储,提升查询效率和检索速度,提升用户体验。
上面图1示出了本公开的多个实施例能够在其中实现的环境100的示意图。下面结合图2描述根据本公开的一些实施例的用于存储数据的方法200的流程图。方法200可以由图1中的计算设备108或其它任意合适的设备来实现。
如图2所示,在框202处,计算设备108确定是否接收到指示目标用户与第一用户建立关联的消息。如果第一用户关注了目标用户,会向计算设备108发送目标用户与第一用户建立关联的消息。在一些实施例中,该消息包括第一用户的标识、目标用户的标识以及其他的信息。备选地或附加地,该消息还包括第一用户与目标用户建立关联的时间,诸如第一用户关注目标用户的时间或第一用户成为目标用户的粉丝的时间。上述示例仅是用于描述本公开,而非对本公开的具体限定。
如果接收到指示目标用户与第一用户建立关联的消息,在框204处,确定目标用户的级别。在一些实施例中,级别是基于目标用户的关联用户的数目来确定的,例如粉丝数量超过阈值数目的大V对应于第二级别和粉丝数目未超过阈值数目的小V对应于第一级别等。通过该方式可以快速的确定出用户的关联用户的数量。在一些实施例中,级别是基于目标用户的重要程度来确定的。例如,重要的用户设置为第二级别,不重要的用户设置为第一级别。上述示例仅是用于描述本公开,而非对本公开的具体限定。
在一些实施例中,计算设备108获取用户信息表,其中用户信息表包括与预定级别的用户有关的信息。例如将关联用户的数目超过阈值数目的用户的标识存储在用户信息表中。然后,计算设备108利用目标用户的标识,来在用户信息表中查找是否存在与目标用户的标识相匹配的标识。如果能够查找到与目标用户的标识相匹配的标识,则计算设备108将与相匹配的标识对应的用户的预定级别确定为目标用户的级别。通过该方式,可以快速的确定出目标用户的级别。在一些实施例中,用户信息表存储有粉丝数据超过阈值数目的大V的标识。如果目标用户的标识存在于用户信息表中,则表明目标用户为大V。
在框206处,计算设备108从多个数据库中确定与目标用户的级别相对应的目标数据库,多个数据库各自具有不同的访问模式。
在一些实施例中,如果确定目标用户的级别等于或大于阈值级别,例如为第二级别,诸如大V级别,则确定目标数据库为第一数据库。第一数据库包括多个表,多个表中的至少一个表可用于存储目标用户的关联用户的数据。通过该方式,可以快速地确定出存储数据的数据库。
在一些实施例中,如果确定目标用户的级别小于阈值级别,计算设备108确定目标数据库为第二数据库,第二数据库包括至少一个表,在至少一个表中仅存在单个表可用于存储目标用户的关联用户的数据。通过该方式,可以快速地确定出存储数据的数据库。
在框208处,计算设备108按照目标数据库的访问模式,将与第一用户有关的数据存储到目标数据库中。
在一些实施例中,在与第一用户有关的数据要被存储在第一数据库中时,计算设备108会从用户信息表中获取可用于存储目标用户的关联用户的数据的表,用户信息表中包括可用于存储目标用户的关联用户的数据的表的标识。然后计算设备将与第一用户有关的数据存储在表中。通过该方式,可以快速的将与第一用户有关的数据存储在表中。
在一些实施例中,目标用户的第一用户的数据先被确定为存储在第一数据库中的表中,在进行存储之前需要查询第一数据库的该表中已经存储了多少目标用户的关联用户。如果已存储的数目加上当前要存储的数目等于或超过第一阈值数目,则计算设备108会从第一数据库中的多个表中确定出负载低于第一预定阈值的表,将与第一用户有关的数据存储在表中。
在一些实施例中,如果目标用户的第一用户的数据先被确定为存储在第二数据库中,在在进行存储之前需要查询第二数据库的该表中已经存储了目标用户的关联用户的数目。如果已存储的数目加上当前要存储的数目等于或超过第二阈值数目,则计算设备108会从第一数据库中的多个表中确定负载低于第一预定阈值的表,将与第一用户有关的数据存储在表中。备选地或附加地,如果并发获得的目标用户的多个关联用户的数据,则仅选取预定比例的关联用户的数据用于在第一数据库中确定存储的表,其他的数据则还存储在第二数据库的表中。
在一些实施例中,在确定要将第一用户的数据存储在第二数据为中时,通过对目标用户的标识进行哈希操作以确定存储第一用户的数据的单个表。然后将数据存储在单个表中。通过该方式,可以快速准确的存储数据。
通过该方法,可以实现快速定位存储,提升查询效率和检索速度,提升用户体验。
上面结合图2描述根据本公开的多个实施例的用于处理数据的方法。下面结合图3描述根据本公开的一些实施例的用于查询数据的方法300的示意图。方法300可以由图1中的计算设备108或其它任意合适的设备来实现。
如图3所示,在框302中,计算设备确定是否接收到用于查找目标用户的关联用户的请求。如果接收到用于查找目标用户的关联用户的请求,在框304处,计算设备108确定目标用户的级别。
在一些实施例中,级别是基于目标用户的关联用户的数目来确定的。通过该方式,可以快速准确地确定级别。
在一些实施例中,计算设备108获取用户信息表,用户信息表包括与预定级别的用户有关的信息。然后计算设备108利用目标用户的标识,在用户信息表中查找与目标用户的标识相匹配的标识。如果找到与目标用户的标识相匹配的标识,计算设备108将与相匹配的标识对应的用户的预定级别确定为目标用户的级别。根据该方式,可以快速地确定目标用户的级别。
在框306处,计算设备108从多个数据库中确定与目标用户的级别相对应的目标数据库,多个数据库各自具有不同的访问模式。
在一些实施例中,如果确定目标用户的级别等于或大于阈值级别,例如为大V级别,计算设备108确定目标数据库为第一数据库,第一数据库包括多个表,多个表中的至少一个表可用于存储目标用户的关联用户的数据。通过该方式,可以快速的确定出数据库的类型。
在一些实施例中,如果确定目标用户的级别小于阈值级别,例如为小V级别,计算设备108确定目标数据库为第二数据库,第二数据库包括至少一个表,在至少一个表中仅存在单个表可用于存储目标用户的关联用户的数据。通过该方式,可以快速的确定出数据库的类型。
在框308处,计算设备108按照与目标数据库的访问模式,从目标数据库中获取关联用户的数据。
在一些实施例中,如果目标数据库是第一数据库,从用户信息表中获取可用于存储目标用户的关联用户的数据的表。其中用户信息表中包括可用于存储目标用户的关联用户的数据的表的标识。然后计算设备108从表中获取目标用户的关联用户的数据。通过该方式可以快速的获取到关联用户的数据。
在一些实施例中,如果确定的数据库是第二数据库,计算设备108对目标用户的标识进行哈希操作以确定单个表。然后计算设备108从单上表中获取目标用户的关联用户的数据。通过该方式可以快速的获取到关联用户的数据。
通过该方法,可以实现快速定位存储,提升查询效率和检索速度,提升用户体验。
上面结合图3描述根据本公开的多个实施例的用于查询数据的方法。下面结合图4描述根据本公开的一些实施例的用于处理数据的方法400的示意图。方法400可以由图1中的计算设备108或其它任意合适的设备来实现。
如图4所示,在框402处,计算设备108获取用户新增粉丝的通知消息。然后计算设备108从用户信息表406中查询是否存在该用户的标识。在框408处,确定在用户信息表406中是否存在与该用户的标识相对应的标识。如果没有与该用户的标识相对应的标识,则将用户的新增粉丝数据存储在小V库410中。如果有与该用户的标识相对应的标识,则去大V库412中存储用用户的新增粉丝数据。
在将用户的粉丝新增数据存储在小V库410中的数据表中时,通过对用户的标识进行哈希处理来确定用于存储粉丝新增数据的数据表。在一些实施例中,如果小V库410中存储在10个数据表,则每个数据表可以用1-10中的数表示。然后以用户标识所对应的数据除以10以获得余数,该余数对应的数据表作为存储表。在一些实施例中,可以以任意合适的哈希方法来处理用户的标识来确定用于存储粉丝数据的数据表。上述示例仅是用于描述本公开,而非对本公开的具体限定。
在将用户的粉丝数据存储在大V库412中的数据表中时,从用户信息表中是找用于存储新增粉线数据的数据表。
备选地或附加地,在将用户的粉丝新增数据存储在小V库410的数据表之前还从数据表中查询已存储的该用户的粉丝数,将该粉丝数递增1以确定递增后的当前粉丝数是否超过阈值数目,如果超过阈值数目,则将该用户的新增粉丝数据作为通知消息存入消息队列414。
同样,如果在将用户的粉丝新增数据存储在大V库412的数据表中时,还从该数据表表中查询已存储的该用户的粉丝数,将该粉丝数递增1以确定递增后的当前粉丝数是否超过阈值数目,如果超过阈值数目,则生成通知消息存入消息队列414。
如果此时只有一个粉丝的数据需要保存,则将该粉丝数据作为通知消息放入消息队列中。如果此时有多个粉丝的数据并发保存,选择其中一定比例的粉丝数据作为通知消息放入消息队列,其他的粉丝数据存储在先前确定好的数据表内。
计算设备108然后通过从消息队列414中订阅信息来获得消息队列中存储的与该用户有关的消息。在框416处,利用从消息队列订阅的消息来离线或异步更新用户信息表。计算设备确定大V库中各个数据表存储的数据量,然后将存储数据量少的数据表作为存储以后该用户的粉丝数据的数据表。在框418处,确定在用户信息表中是否需要新增用户信息。如果是,则在用户信息表406中将该表的标识增加到与对户对应的数据项中,并且存储获取该表的时间。如果用户信息表中已经有新增用户信息,则不需要再增加用户信息,则将消息队列中针对该用户的消息去除掉。
在框404处,用户通过计算设备查询粉丝列表。然后在框408处,计算设备108从用户信息表406中确定是否存在用户的标识。如果不存在,则从小V库的数据表中查找用户的粉丝。如果存在,则可以从大V库的数据表中查找用户的粉丝。然后将查找到粉丝返给用户。其查找过程与存储过程类似。
通过该方法,可以保证快速定位存储,提升查询效率和检索速度,提升用户体验。
图5示出了根据本公开实施例的用于存储数据的装置500的示意性框图。如图5所示,装置500目标用户的级别确定模块502,被配置为响应于接收到指示目标用户与第一用户建立关联的消息,确定目标用户的级别;目标数据库确定模块504,被配置为从多个数据库中确定与目标用户的级别相对应的目标数据库,多个数据库各自具有不同的访问模式;以及存储模块506,被配置为按照目标数据库的访问模式,将与第一用户有关的数据存储到目标数据库中。
在一些实施例中,其中级别是基于目标用户的关联用户的数目来确定的。
在一些实施例中,目标用户的级别确定模块502包括:用户信息表获取模块,被配置为获取用户信息表,用户信息表包括与预定级别的用户有关的信息;以及相匹配的标识确定模块,被配置为基于目标用户的标识,确定用户信息表中是否存在与目标用户的标识相匹配的标识;匹配级别确定模块,被配置为如果确定存在与目标用户的标识相匹配的标识,将与相匹配的标识对应的用户的预定级别确定为目标用户的级别。
在一些实施例中,目标数据库确定模块504包括:第一数据库确定模块,被配置为如果确定目标用户的级别等于或大于阈值级别,确定目标数据库为第一数据库,第一数据库包括多个表,多个表中的至少一个表用于存储目标用户的关联用户的数据。
在一些实施例中,存储模块506包括:第一数据存储模块,被配置为从第一数据库中的多个表中确定负载低于第一预定阈值的表,将与第一用户有关的数据存储在表中。
在一些实施例中,存储模块包括:表获取模块,被配置为基于用户信息表确定可用于存储目标用户的关联用户的数据的表,用户信息表中包括可用于存储目标用户的关联用户的数据的表的标识;第二数据存储模块,被配置为将与第一用户有关的数据存储在确定的表中。
在一些实施例中,目标数据库确定模块504包括:第二数据库确定模块,被配置为如果确定目标用户的级别小于阈值级别,确定目标数据库为第二数据库,第二数据库包括至少一个表,至少一个表包括用于存储目标用户的关联用户的数据的单个表。
在一些实施例中,存储模块506包括:哈希操作模块,被配置为通过对目标用户的标识进行哈希操作,从所述至少一个表中确定单个表;以及单个表存储模块,被配置为将与所述第一用户有关的数据存储在单个表中。
图6示出了根据本公开实施例的用于查询数据的装置600的示意性框图。如图6所示,装置600包括目标用户的级别确定模块602,被配置为响应于接收到用于查找目标用户的关联用户的请求,确定目标用户的级别;目标数据库确定模块604,被配置为从多个数据库中确定与目标用户的级别相对应的目标数据库,多个数据库各自具有不同的访问模式;以及获取模块606,被配置为按照目标数据库的访问模式,从目标数据库中获取关联用户的数据。
在一些实施例中,级别是基于目标用户的关联用户的数目来确定的。
在一些实施例中,目标用户的级别确定模块602包括:用户信息表获取模块,被配置为获取用户信息表,用户信息表包括与预定级别的用户有关的信息;以及相匹配的标识确定模块,被配置为基于目标用户的标识,确定用户信息表中是否存在与目标用户的标识相匹配的标识;匹配级别确定模块,被配置为如果确定存在与目标用户的标识相匹配的标识,将与相匹配的标识对应的用户的预定级别确定为目标用户的级别。
在一些实施例中,目标数据库确定模块604包括:第一数据库确定模块,被配置为如果确定目标用户的级别等于或大于阈值级别,确定目标数据库为第一数据库,第一数据库包括多个表,多个表中的至少一个表用于存储目标用户的关联用户的数据。
在一些实施例中,获取模块606包括:表获取模块,被配置为基于用户信息表确定可用于存储目标用户的关联用户的数据的表,用户信息表包括用于存储目标用户的关联用户的数据的表的标识;第一获取模块,被配置为从确定的表中获取目标用户的关联用户的数据。
在一些实施例中,目标数据库确定模块604包括:第二数据库确定模块,被配置为如果确定目标用户的级别小于阈值级别,确定目标数据库为第二数据库,第二数据库包括至少一个表,至少一个表包括用于存储目标用户的关联用户的数据的单个表。
在一些实施例中,获取模块606包括:哈希操作模块,被配置为通过对目标用户的标识进行哈希操作,从所述至少一个表中确定单个表;以及第二获取模块,被配置为从单个表中获取目标用户的关联用户的数据。
根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
图7示出了可以用来实施本公开的实施例的示例电子设备700的示意性框图。设备700可以用于实现图1中的终端104、116和计算设备108。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图7所示,设备700包括计算单元701,其可以根据存储在只读存储器(ROM)702中的计算机程序或者从存储单元708加载到随机访问存储器(RAM)703中的计算机程序,来执行各种适当的动作和处理。在RAM 703中,还可存储设备700操作所需的各种程序和数据。计算单元701、ROM 702以及RAM 703通过总线704彼此相连。输入/输出(I/O)接口705也连接至总线704。
设备700中的多个部件连接至I/O接口705,包括:输入单元706,例如键盘、鼠标等;输出单元707,例如各种类型的显示器、扬声器等;存储单元708,例如磁盘、光盘等;以及通信单元709,例如网卡、调制解调器、无线通信收发机等。通信单元709允许设备700通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元701可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元701的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元701执行上文所描述的各个方法和处理,例如方法200、300和400。例如,在一些实施例中,方法200、300和400可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元708。在一些实施例中,计算机程序的部分或者全部可以经由ROM 702和/或通信单元709而被载入和/或安装到设备700上。当计算机程序加载到RAM 703并由计算单元701执行时,可以执行上文描述的方法200、300和400的一个或多个步骤。备选地,在其他实施例中,计算单元701可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行方法200、300和400。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。
- 存储数据和获取数据的方法、装置、设备和存储介质
- 获取数据的方法、装置、设备及存储介质