CN105808618A - Feed 数据的存储和查询方法及其装置 - Google Patents

Feed 数据的存储和查询方法及其装置 Download PDF

Info

Publication number
CN105808618A
CN105808618A CN201410855934.3A CN201410855934A CN105808618A CN 105808618 A CN105808618 A CN 105808618A CN 201410855934 A CN201410855934 A CN 201410855934A CN 105808618 A CN105808618 A CN 105808618A
Authority
CN
China
Prior art keywords
data
feed
burst
storage
user
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
CN201410855934.3A
Other languages
English (en)
Other versions
CN105808618B (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.)
Alibaba Group Holding 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 CN201410855934.3A priority Critical patent/CN105808618B/zh
Priority to TW104113922A priority patent/TW201624323A/zh
Priority to US14/984,251 priority patent/US20160188749A1/en
Priority to PCT/US2015/068073 priority patent/WO2016109672A2/en
Publication of CN105808618A publication Critical patent/CN105808618A/zh
Application granted granted Critical
Publication of CN105808618B publication Critical patent/CN105808618B/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/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/958Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
    • G06F16/972Access to data in other repository systems, e.g. legacy data or dynamic Web page generation

Landscapes

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

Abstract

本发明公开了一种Feed数据的存储和查询方法及其装置,该Feed数据的存储和查询方法包括以下步骤:为每个用户的Feed数据进行分片,每个分片包含:第一数据、第二数据、及第三数据,从而每个分片之间相互形成链表结构;将每个分片存储于存储***;当用户发出Feed数据的查询请求时,从查询请求中得到当前分片的唯一标识,以当前分片的唯一标识为关键词对存储***进行查询;以及将存储***上存储的与关键词匹配成功的第二数据所在的分片中的第三数据所指向的分片中的第一数据和第二数据返回用户。本发明基于将Feed内容数据分片存储在***中,减少命中Feed内容数据的查询次数。提高了***对于小数据块的高效读取和写入能力,有效降低服务端的响应时间,提升了效率。

Description

Feed 数据的存储和查询方法及其装置
技术领域
本发明涉及数据存储和查询领域,特别涉及一种Feed数据的存储和查询方法及装置。
背景技术
Feed数据是指消息来源,也可被称为源料、馈送、信息提供、供稿、摘要、源、新闻订阅、网源等等,它是一种数据格式,网站可通过它将最新信息传播给用户,用户能够订阅网站的先决条件是网站可提供持续更新的信息。消息来源受到博客及新闻网站的广泛采用,因为此类型的网站经常更新内容。Feed流展现形式是用户通过客户端访问服务端,看到的数据基于时间线(timeline)排序,即服务端返回的数据一定是大于上一次请求时间的数据。类似国内的微博、国外的推特等等。
基于Feed流展现形式随着国内的微博、国外的推特的流行,使用的越来越多。Feed流展现形式的优势在于让用户每次查询可以看到最新的Feed数据,体验比传统的打开即显示的展现形式要好很多。特别是在当前的移动互联网的大环境下,Feed流展现形式在移动设备上的优势就更加明显了。在传统PC设备上,用户的输入主要是鼠标和键盘,但在移动手持设备上,用户的主要输入就变成了触控形式。手持设备的屏幕大小确定了手势的范围和动作无法多样化,因此简单的上划、下划、左划、右划成为最快捷的手势操作。Feed流展现形式就是基于上划和下划来查询最新Feed数据和已读Feed数据。
作为一个以Feed流展示形式来显示最新的推荐活动数据的例子,用户使用移动手机端,客户端是ios和android页面,通过http访问服务端接口。用户打开页面后,下拉手势查询“未读”的推荐活动Feed数据,上拉手持查询“已读”的推荐活动Feed数据。
现有技术中一种比较常见的Feed数据的存储和查询方案是采用名为Redis的key-value存储结构建立Feed索引表缓存,Redis是意大利程序员SalvatoreSanfilippo(antirez)最早在2009年开发的一个开源、支持网络、基于内存的键值对(key-value)存储数据库,使用ANSIC编写。在这种实现方式中缓存中的key是用户ID标识,value是该用户的FeedId集合,用户访问服务端接口时,服务端先根据访问用户ID标识从Redis中查询到FeedId集合,然后通过排序算法定位到本次要取FeedId集合中的哪一段的偏移量,取出一段FeedId集合后再查询关系型数据库查询出FeedId对应的Feed内容,最后将数据返回给客户端。
但是这种现有技术存在如下缺点。
1)查询返回的缓存数据利用率低:每个用户在key-value分布式缓存***中存储有一份FeedId集合数据,每次查询都需要把完整的FeedId集合从分布式缓存***中查询出来,而通过计算后实际只使用其中一小部分FeedId集合数据,浪费了大量的网络传输带宽,同时也增加了查询的响应时间。
2)查询Feed内容链路长:从接收到客户端请求,到返回Feed内容数据给客户端,最少也要发起2次网络请求,第1次是通过用户ID标识从key-value分布式缓存***中查询出FeedId集合,第2次是根据查询出来的FeedId再查询关系型数据库,获取FeedId对应的Feed内容,最后再返回给客户端。
3)不支持查看“已读Feed”数据:该方案只支持查询最新Feed查询,不支持服务端“已读Feed”数据的查询,用户只能在本地查看到上一次查询到的Feed数据。
发明内容
本发明的目的在于提供一种Feed数据的存储和查询方法及其装置,基于将Feed内容数据分片存储在***中,减少命中Feed内容数据的查询次数。提高了***对于小数据块的高效读取和写入能力,有效降低服务端的响应时间,提升了效率。
为解决上述技术问题,本发明的第一实施方式公开了一种Feed数据的存储和查询方法,将Feed数据分片存储,每个分片除了数据外还包括当前分片和下一分片的标识,该方法包括以下步骤:
为每个用户的Feed数据进行分片,每个分片包含:第一数据、第二数据、及第三数据,其中,第一数据是固定条Feed数据,第二数据是当前分片的唯一标识,第三数据是当前分片的下一个分片的唯一标识,从而每个分片之间相互形成链表结构;
将每个分片存储于存储***;
当用户发出Feed数据的查询请求时,从查询请求中得到当前分片的唯一标识,以当前分片的唯一标识为关键词对存储***进行查询;以及
将存储***上存储的与关键词匹配成功的第二数据所在的分片中的第三数据所指向的分片中的第一数据和第二数据返回用户。
本发明的第二实施方式还公开了另一种Feed数据的存储和查询方法,该方法包括以下步骤:
为每个用户的Feed数据进行分片,每个分片包含:第一数据、第二数据、及第三数据,其中,第一数据是固定条Feed数据,第二数据是当前分片的唯一标识,第三数据是当前分片的下一个分片的唯一标识,从而每个分片之间相互形成链表结构;
将每个分片存储于存储***;
当用户发出Feed数据的查询请求时,从查询请求中得到当前分片的唯一标识,以当前分片的唯一标识为关键词对存储***进行查询;以及
将存储***上存储的与关键词匹配成功的第二数据所在的分片中的第三数据所指向的分片中的第一数据和第二数据返回用户。
本发明的第三实施方式还公开了一种Feed数据的存储和查询装置,包括:
分片单元,用于为每个用户的Feed数据进行分片,每个分片包含:第一数据、第二数据、及第三数据,其中,第一数据是固定条Feed数据,第二数据是当前分片的唯一标识,第三数据是当前分片的下一个分片的唯一标识,从而每个分片之间相互形成链表结构;
存储单元,用于将每个分片存储于存储***;
查询单元,用于当用户发出Feed数据的查询请求时,从查询请求中得到当前分片的唯一标识,以当前分片的唯一标识为关键词对存储***进行查询;以及
返回单元,用于将存储***上存储的与关键词匹配成功的第二数据所在的分片中的第三数据所指向的分片中的第一数据和第二数据返回用户。
本发明的第四实施方式还公开了另一种Feed数据的存储和查询装置,包括:
分片单元,用于为每个用户的Feed数据进行分片,每个分片包含:第一数据、第二数据、及第三数据,其中,第一数据是固定条Feed数据,第二数据是当前分片的唯一标识,第三数据是当前分片的上一个分片的唯一标识,从而每个分片之间相互形成链表结构;
存储单元,用于将每个分片存储于存储***;
查询单元,用于当用户发出Feed数据的查询请求时,从查询请求中得到当前分片的唯一标识,以当前分片的唯一标识为关键词对存储***进行查询;以及
返回单元,用于将存储***上存储的与关键词匹配成功的第二数据所在的分片中的第三数据所指向的分片中的第一数据和第二数据返回用户。
本发明实施方式与现有技术相比,主要区别及其效果在于:
将用户的Feed数据按固定常量进行分片,分片后的数据以链表的形式单独存储。每次查询只需要查询一个分片数据块的数据,无需查询整个链表,由此以高效查询达到了减少整个查询响应时间的目的。
进一步地,使用了Tair分布式存储***,相对于以往的其他分布式存储***,稳定性更高,功能更强。
进一步地,使用了已读Feed链表和未读Feed链表的结构,实现了以往无法达到的查看已读Feed数据的效果,更易于用户使用。
附图说明
图1是本发明第一实施方式中一种Feed数据的存储和查询方法的流程示意图。
图2是第一实施方式中Feed数据的分片(数据块)的结构图。
图3~图5是本发明第一实施方式的一个具体实施例的示意图。
图6是本发明第三实施方式中一种Feed数据的存储和查询装置的结构示意图。
具体实施方式
在以下的叙述中,为了使读者更好地理解本申请而提出了许多技术细节。但是,本领域的普通技术人员可以理解,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请各权利要求所要求保护的技术方案。
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明的实施方式作进一步地详细描述。
本发明第一实施方式涉及一种Feed数据的存储和查询方法。图1是该Feed数据的存储和查询方法的流程示意图。
具体地说,该Feed数据的存储和查询方法将用户的Feed数据按固定常量进行分片,分片后的数据以链表的形式单独存储。如图1所示,该Feed数据的存储和查询方法包括以下步骤:
在步骤S101中,为每个用户的Feed数据进行分片,每个分片包含:第一数据、第二数据、及第三数据,其中,第一数据是固定条Feed数据,第二数据是当前分片的唯一标识,第三数据是当前分片的下一个分片的唯一标识,从而每个分片之间相互形成链表结构。在图2中示出了这种分片的每个分片(数据块)的结构。如图2所示,分片(数据块)的结构包括第一数据、第二数据、及第三数据,第一数据是多条Feed数据,指由固定条数组成的Feed数据,第二数据是当前分片(数据块)的唯一标识,第三数据是当前分片(数据块)的下一个分片(数据块)的唯一标识,通过该标识可以查询到下一个分片(数据块)。由于每个分片都可通过第三数据查询到下一个分片,因此构成了链表结构。此处的唯一标识可以采用各类标识,例如MD5值、AES值、SHA值等等,在此优选为图2中所示出的MD5值。MD5即Message-DigestAlgorithm5,又称为消息摘要算法第五版,作用是让大容量信息"压缩"成一种保密的格式(把一个任意长度的字节串变换成一定长的十六进制数字串)。
此后进入步骤S102,将每个分片存储于存储***。可选地,存储***是key-value(键值对)分布式存储***,当然也可以是其他的存储***。key-value分布式存储***可以使用Redis、Tair等各种存储***,但是优选为是Tair分布式存储***。Tair,即TaoBaoPair,此处的Pair是指键值对(key-value),这是淘宝公司自创的一个开源的key-value缓存***,包括缓存和持久化两种存储功能。Tair***相对于现有的Redis等***,有着功能多、吞吐量大、稳定性高的显著优点。例如,Tair***具有Redis所不具备的跨机房管理、多集群管理、副本等功能,而且相对于Redis每秒6万次的吞吐量,Tair的吞吐量高达每秒6万6千次,提升了10%。Redis***被用于国内的百度、新浪、腾讯、搜狐以及国外的推特等网站,曾经成为导致新浪微博出现故障的原因。但是Tair***用于每天访问量巨大的淘宝网,一直保持了稳定的性能。
此后进入步骤S103,当用户发出Feed数据的查询请求时,从查询请求中得到当前分片的唯一标识,以当前分片的唯一标识为关键词对存储***进行查询。例如,当唯一标识是MD5值时,用得到的当前分片的MD5值为关键词对存储***进行查询。
此后进入步骤S104,将存储***上存储的与关键词匹配成功的第二数据所在的分片中的第三数据所指向的分片中的第一数据和第二数据返回用户。通过MD5值这样的唯一标识作为关键词可以在存储***中查询到其对应的分片(数据块),该分片(数据块)中的第二数据与关键词匹配成功,而该分片中的第三数据指向了下一个分片,下一个分片中的Feed数据和唯一标识,即第一数据和第二数据作为查询结果返回给用户。用户在接收到查询结果后,在下次查询时将该下一个分片的唯一标识即第二数据也作为输入参数之一的话,那么通过下一个分片的第三数据又能够得到再下一个分片的Feed数据和唯一标识。由此可以不断得到链表上的每一个分片中的Feed数据和唯一标识。
此后结束本流程。
由此可见,将用户的Feed数据按固定常量进行分片,分片后的数据以链表的形式单独存储。每次查询只需要查询一个分片数据块的数据,无需查询整个链表,由此以高效查询达到了减少整个查询响应时间的目的。
该实施方式中的链表结构可以应用任意的链表结构,优选为包括已读Feed链表和未读Feed链表。这种链表结构实现了以往无法达到的查看已读Feed数据的效果,更易于用户使用。两个链表中分片之间的转换关系可以是未读Feed链表中的分片被用户查询后,从未读Feed链表中删除,加入已读Feed链表,当然并不局限于此。
可选地,用户在第一次发出查询请求时,由于查询请求不含有涉及分片的输入参数,因此如果从用户的查询请求中无法得到要查询的分片的唯一标识的话,将未读Feed链表的头部的分片中的第一数据和第二数据返回用户。
可选地,已读Feed链表和未读Feed链表都有长度限制,当然也可以不限制链表的长度。在限制长度的情况下,当已读Feed链表的长度达到上限时,删除已读Feed链表的尾部的分片,并将新的分片添加到已读Feed链表的头部,当未读Feed链表的长度达到上限时,删除未读Feed链表的头部的分片,并将新的分片添加到未读Feed链表的尾部。
下面结合图3来说明该实施方式的一个具体实施例。
如图3所示,设在初始状态下有5个分片(数据块),全部属于未读Feed链表,相应地,已读Feed链表为空(null)。同时设置两个指针,最新已读指针指向最新已读Feed分片(数据块),由于此时已读Feed链表为空链表,因此指向null,最新未读指针指向最新未读Feed分片(数据块),此时指向位于未读Feed链表的头部的1号分片。
如图3所示,用户在第一次下拉时,由于来自用户的输入参数为空,将未读Feed链表的头部的分片,即1号分片中的第一数据(数据块1,即1号分片中的多条Feed数据)和第二数据(数据块1的MD5,即1号分片的唯一标识)返回用户。在用户侧的客户端的屏幕上显示出了1号分片的第一数据。同时修改两个指针的位置和两个链表所包含的分片,1号分片由于已被用户查询,因此从未读Feed链表中删除1号分片,而将1号分片加入已读Feed链表,修改之后,1号分片属于已读Feed链表,2号~5号分片属于未读Feed链表,相应地,最新已读指针从null改为指向1号分片,最新未读指针从1号分片指向2号分片。
如图3所示,用户在第二次下拉时,由于来自用户的输入参数包含了数据块1的MD5,因此以数据块1的MD5为关键词进行查询,将与关键词即数据块1的MD5匹配成功的第二数据(唯一标识)所在的分片,即1号分片,中的第三数据,即1号分片的下一个分片2号分片的MD5,所指向的分片,即2号分片,中的第一数据(数据块2,即2号分片中的多条Feed数据)和第二数据(数据块2的MD5,即2号分片的唯一标识)返回用户。在用户侧的客户端的屏幕上,顺着前一次显示的1号分片的第一数据,显示出了2号分片的第一数据。同时修改两个指针的位置和两个链表所包含的分片,2号分片由于已被用户查询,因此从未读Feed链表中删除2号分片,而将2号分片加入已读Feed链表,修改之后,1号和2号分片属于已读Feed链表,3号~5号分片属于未读Feed链表,相应地,最新已读指针从1号分片改为指向2号分片,最新未读指针从2号分片指向3号分片。
如图3所示,用户在第三次下拉时,由于来自用户的输入参数包含了数据块2的MD5,因此以数据块2的MD5为关键词进行查询,将与关键词即数据块2的MD5匹配成功的第二数据(唯一标识)所在的分片,即2号分片,中的第三数据,即2号分片的下一个分片3号分片的MD5,所指向的分片,即3号分片,中的第一数据(数据块3,即3号分片中的多条Feed数据)和第二数据(数据块3的MD5,即3号分片的唯一标识)返回用户。在用户侧的客户端的屏幕上,顺着前一次显示的2号分片的第一数据,显示出了3号分片的第一数据。同时修改两个指针的位置和两个链表所包含的分片,3号分片由于已被用户查询,因此从未读Feed链表中删除3号分片,而将3号分片加入已读Feed链表,修改之后,1号~3号分片属于已读Feed链表,4号和5号分片属于未读Feed链表,相应地,最新已读指针从2号分片改为指向3号分片,最新未读指针从3号分片指向4号分片。
此时用户不再进行查询,经过一段时间,用户又重新开始查询时的情况在图4中示出。
如图4所示,用户不再进行查询后又重新开始查询时会自动下拉,由于来自用户的输入参数为空,将未读Feed链表的头部的分片,即4号分片中的第一数据(数据块4,即4号分片中的多条Feed数据)和第二数据(数据块4的MD5,即4号分片的唯一标识)返回用户。在用户侧的客户端的屏幕上显示出了4号分片的第一数据。同时修改两个指针的位置和两个链表所包含的分片,4号分片由于已被用户查询,因此从未读Feed链表中删除1号分片,而将4号分片加入已读Feed链表,修改之后,1号~4号分片属于已读Feed链表,5号分片属于未读Feed链表,相应地,最新已读指针从3号分片改为指向4号分片,最新未读指针从4号分片指向5号分片。
此后每次下拉都与之前的操作相同,在此不再赘述。
图5示出了与下拉查询未读数据相反的上拉查询已读数据的情况。由于上拉和下拉是相反的操作,因此直接执行与上述下拉操作相反的操作即可,在此不再赘述。
由此可见,即便是用户同时用多个客户端进行查询,例如用户同时使用手机、平板电脑、及家用电脑3个客户端进行查询,由于能根据输入参数知晓该客户端上一次阅读的数据块是哪个分片,因此每次都能准确地将链表中位于该分片之后的下一个分片的第一数据和第二数据发送给客户端,不会引起混乱。
本发明的各方法实施方式均可以以软件、硬件、固件等方式实现。不管本发明是以软件、硬件、还是固件方式实现,指令代码都可以存储在任何类型的计算机可访问的存储器中(例如永久的或者可修改的,易失性的或者非易失性的,固态的或者非固态的,固定的或者可更换的介质等等)。同样,存储器可以例如是可编程阵列逻辑(ProgrammableArrayLogic,简称“PAL”)、随机存取存储器(RandomAccessMemory,简称“RAM”)、可编程只读存储器(ProgrammableReadOnlyMemory,简称“PROM”)、只读存储器(Read-OnlyMemory,简称“ROM”)、电可擦除可编程只读存储器(ElectricallyErasableProgrammableROM,简称“EEPROM”)、磁盘、光盘、数字通用光盘(DigitalVersatileDisc,简称“DVD”)等等。
本发明第二实施方式涉及另一种Feed数据的存储和查询方法。本实施方式与第一实施方式基本类似,区别在于,第一实施方式中每个分片第三数据是当前分片的下一个分片的唯一标识,而本实施方式中每个分片的第三数据是当前分片的上一个分片的唯一标识,两个实施方式在其他方面没有区别。第一实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。
本发明第三实施方式涉及一种Feed数据的存储和查询装置。图6是该Feed数据的存储和查询装置的结构示意图。本发明的实际结构可以根据实际需要做出必要的调整,并不局限于图6中的结构。
具体地说,该Feed数据的存储和查询装置将用户的Feed数据按固定常量进行分片,分片后的数据以链表的形式单独存储。如图6所示,该Feed数据的存储和查询装置100包括:
分片单元101,用于为每个用户的Feed数据进行分片,每个分片包含:第一数据、第二数据、及第三数据,其中,第一数据是固定条Feed数据,第二数据是当前分片的唯一标识,第三数据是当前分片的下一个分片的唯一标识,从而每个分片之间相互形成链表结构;
存储单元102,用于将每个分片存储于存储***;
查询单元103,用于当用户发出Feed数据的查询请求时,从查询请求中得到当前分片的唯一标识,以当前分片的唯一标识为关键词对存储***进行查询;以及
返回单元104,用于将存储***上存储的与关键词匹配成功的第二数据所在的分片中的第三数据所指向的分片中的第一数据和第二数据返回用户。
本发明第四实施方式涉及另一种Feed数据的存储和查询装置。本实施方式与第三实施方式基本类似,区别在于,第三实施方式中每个分片第三数据是当前分片的下一个分片的唯一标识,而本实施方式中每个分片的第三数据是当前分片的上一个分片的唯一标识,两个实施方式在其他方面没有区别。第三实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。
第一实施方式是与本实施方式相对应的方法实施方式,本实施方式可与第一实施方式互相配合实施。第一实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第一实施方式中。
需要说明的是,本发明各设备实施方式中提到的各单元都是逻辑单元,在物理上,一个逻辑单元可以是一个物理单元,也可以是一个物理单元的一部分,还可以以多个物理单元的组合实现,这些逻辑单元本身的物理实现方式并不是最重要的,这些逻辑单元所实现的功能的组合才是解决本发明所提出的技术问题的关键。此外,为了突出本发明的创新部分,本发明上述各设备实施方式并没有将与解决本发明所提出的技术问题关系不太密切的单元引入,这并不表明上述设备实施方式并不存在其它的单元。
需要说明的是,在本专利的权利要求和说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
虽然通过参照本发明的某些优选实施方式,已经对本发明进行了图示和描述,但本领域的普通技术人员应该明白,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。

Claims (11)

1.一种Feed数据的存储和查询方法,其特征在于,包括以下步骤:
为每个用户的Feed数据进行分片,每个分片包含:第一数据、第二数据、及第三数据,其中,第一数据是固定条Feed数据,第二数据是当前分片的唯一标识,第三数据是当前分片的下一个分片的唯一标识,从而每个分片之间相互形成链表结构;
将每个分片存储于存储***;
当用户发出Feed数据的查询请求时,从查询请求中得到当前分片的唯一标识,以当前分片的唯一标识为关键词对存储***进行查询;以及
将存储***上存储的与关键词匹配成功的第二数据所在的分片中的第三数据所指向的分片中的第一数据和第二数据返回用户。
2.如权利要求1所述的Feed数据的存储和查询方法,其特征在于,
存储***是key-value分布式存储***。
3.如权利要求2所述的Feed数据的存储和查询方法,其特征在于,
key-value分布式存储***是Tair分布式存储***。
4.如权利要求1所述的Feed数据的存储和查询方法,其特征在于,
唯一标识指MD5值。
5.如权利要求1所述的Feed数据的存储和查询方法,其特征在于,
链表结构包括已读Feed链表和未读Feed链表。
6.如权利要求5所述的Feed数据的存储和查询方法,其特征在于,
未读Feed链表中的分片被用户查询后,从未读Feed链表中删除,加入已读Feed链表。
7.如权利要求5所述的Feed数据的存储和查询方法,其特征在于,
如果从用户的查询请求中无法得到要查询的分片的唯一标识,将未读Feed链表的头部的分片中的第一数据和第二数据返回用户。
8.如权利要求5所述的Feed数据的存储和查询方法,其特征在于,
已读Feed链表和未读Feed链表都有长度限制,
当已读Feed链表的长度达到上限时,删除已读Feed链表的尾部的分片,并将新的分片添加到已读Feed链表的头部,
当未读Feed链表的长度达到上限时,删除未读Feed链表的头部的分片,并将新的分片添加到未读Feed链表的尾部。
9.一种Feed数据的存储和查询方法,其特征在于,包括以下步骤:
为每个用户的Feed数据进行分片,每个分片包含:第一数据、第二数据、及第三数据,其中,第一数据是固定条Feed数据,第二数据是当前分片的唯一标识,第三数据是当前分片的上一个分片的唯一标识,从而每个分片之间相互形成链表结构;
将每个分片存储于存储***;
当用户发出Feed数据的查询请求时,从查询请求中得到当前分片的唯一标识,以当前分片的唯一标识为关键词对存储***进行查询;以及
将存储***上存储的与关键词匹配成功的第二数据所在的分片中的第三数据所指向的分片中的第一数据和第二数据返回用户。
10.一种Feed数据的存储和查询装置,其特征在于,包括:
分片单元,用于为每个用户的Feed数据进行分片,每个分片包含:第一数据、第二数据、及第三数据,其中,第一数据是固定条Feed数据,第二数据是当前分片的唯一标识,第三数据是当前分片的下一个分片的唯一标识,从而每个分片之间相互形成链表结构;
存储单元,用于将每个分片存储于存储***;
查询单元,用于当用户发出Feed数据的查询请求时,从查询请求中得到当前分片的唯一标识,以当前分片的唯一标识为关键词对存储***进行查询;以及
返回单元,用于将存储***上存储的与关键词匹配成功的第二数据所在的分片中的第三数据所指向的分片中的第一数据和第二数据返回用户。
11.一种Feed数据的存储和查询装置,其特征在于,包括:
分片单元,用于为每个用户的Feed数据进行分片,每个分片包含:第一数据、第二数据、及第三数据,其中,第一数据是固定条Feed数据,第二数据是当前分片的唯一标识,第三数据是当前分片的上一个分片的唯一标识,从而每个分片之间相互形成链表结构;
存储单元,用于将每个分片存储于存储***;
查询单元,用于当用户发出Feed数据的查询请求时,从查询请求中得到当前分片的唯一标识,以当前分片的唯一标识为关键词对存储***进行查询;以及
返回单元,用于将存储***上存储的与关键词匹配成功的第二数据所在的分片中的第三数据所指向的分片中的第一数据和第二数据返回用户。
CN201410855934.3A 2014-12-31 2014-12-31 Feed数据的存储和查询方法及其装置 Active CN105808618B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN201410855934.3A CN105808618B (zh) 2014-12-31 2014-12-31 Feed数据的存储和查询方法及其装置
TW104113922A TW201624323A (zh) 2014-12-31 2015-04-30 Feed資料的儲存和查詢方法及其裝置
US14/984,251 US20160188749A1 (en) 2014-12-31 2015-12-30 Feed Data Storage and Query
PCT/US2015/068073 WO2016109672A2 (en) 2014-12-31 2015-12-30 Feed data storage and query

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410855934.3A CN105808618B (zh) 2014-12-31 2014-12-31 Feed数据的存储和查询方法及其装置

Publications (2)

Publication Number Publication Date
CN105808618A true CN105808618A (zh) 2016-07-27
CN105808618B CN105808618B (zh) 2019-10-22

Family

ID=56164461

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410855934.3A Active CN105808618B (zh) 2014-12-31 2014-12-31 Feed数据的存储和查询方法及其装置

Country Status (4)

Country Link
US (1) US20160188749A1 (zh)
CN (1) CN105808618B (zh)
TW (1) TW201624323A (zh)
WO (1) WO2016109672A2 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106980685A (zh) * 2017-03-31 2017-07-25 广东神马搜索科技有限公司 数据处理方法及数据处理装置
CN107612966A (zh) * 2017-08-11 2018-01-19 百度在线网络技术(北京)有限公司 Feed信息反馈处理方法及***
CN108932248A (zh) * 2017-05-24 2018-12-04 苏宁云商集团股份有限公司 一种搜索实现方法及***

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105095365A (zh) * 2015-06-26 2015-11-25 北京奇虎科技有限公司 一种信息流数据的处理方法和装置
US10262032B2 (en) * 2016-02-24 2019-04-16 Salesforce.Com, Inc. Cache based efficient access scheduling for super scaled stream processing systems
US10409650B2 (en) * 2016-02-24 2019-09-10 Salesforce.Com, Inc. Efficient access scheduling for super scaled stream processing systems
CN107256151B (zh) * 2017-05-27 2020-09-11 北京小米移动软件有限公司 页面渲染的处理方法、装置及终端
CN108427761B (zh) * 2018-03-21 2022-01-14 腾讯科技(深圳)有限公司 一种新闻事件处理的方法、终端、服务器及存储介质
CN109522116B (zh) * 2018-10-11 2020-11-10 北京达佳互联信息技术有限公司 一种对象关注方法、装置和服务器
CN110839064A (zh) * 2019-10-24 2020-02-25 苏宁云计算有限公司 一种分布式***执行脚本的方法及装置
CN111400578B (zh) * 2020-03-02 2024-04-05 金蝶蝶金云计算有限公司 货物数据查询方法、装置、计算机设备和存储介质
CN111666305B (zh) * 2020-06-05 2023-03-14 福建天晴在线互动科技有限公司 一种实现redis缓存和数据库进行关联的方法及其***
CN112765221A (zh) * 2021-02-27 2021-05-07 中电万维信息技术有限责任公司 一种基于redis高速缓存的数据检索方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5809435A (en) * 1996-12-23 1998-09-15 Emc Corporation Efficient index arrangement and method for identifying valid records stored on logging digital data storage subsystem
CN101583945A (zh) * 2007-01-12 2009-11-18 微软公司 提供虚拟的真正简单聚合(rss)订阅源
US20110196855A1 (en) * 2010-02-11 2011-08-11 Akhil Wable Real time content searching in social network
US20140289610A1 (en) * 2007-09-26 2014-09-25 Google Inc. Determining and Displaying a Count of Unread Items in Content Feeds
US8914323B1 (en) * 2014-04-10 2014-12-16 Sqrrl Data, Inc. Policy-based data-centric access control in a sorted, distributed key-value data store

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000025463A1 (en) * 1998-10-27 2000-05-04 Fujitsu Network Communications, Inc. Event based rate policing with a jumping window
US20030177187A1 (en) * 2000-11-27 2003-09-18 Butterfly.Net. Inc. Computing grid for massively multi-player online games and other multi-user immersive persistent-state and session-based applications
JP4374787B2 (ja) * 2001-02-28 2009-12-02 ブラザー工業株式会社 通信装置
US20070250501A1 (en) * 2005-09-27 2007-10-25 Grubb Michael L Search result delivery engine
US7593939B2 (en) * 2006-04-07 2009-09-22 Google Inc. Generating specialized search results in response to patterned queries
US7673327B1 (en) * 2006-06-27 2010-03-02 Confluence Commons, Inc. Aggregation system
US8255812B1 (en) * 2007-03-15 2012-08-28 Google Inc. Embedding user-selected content feed items in a webpage
US20100269158A1 (en) * 2007-12-17 2010-10-21 Ramius Corporation Social networking site and system
US8832061B2 (en) * 2010-07-02 2014-09-09 Salesforce.Com, Inc. Optimizing data synchronization between mobile clients and database systems
US20120124175A1 (en) * 2010-11-17 2012-05-17 Jin Hong Yang Atom-based really simple syndication (rss) content reader system and method, and atom-based rss content providing system and method
US9158775B1 (en) * 2010-12-18 2015-10-13 Google Inc. Scoring stream items in real time
US9396275B2 (en) * 2011-09-15 2016-07-19 Hewlett Packard Enterprise Development Lp Geographically partitioned online search system
US9075884B2 (en) * 2012-06-08 2015-07-07 Apple Inc. Collecting web pages/links from communications and documents for later reading
WO2014018366A2 (en) * 2012-07-26 2014-01-30 Jvl Ventures, Llc Systems, methods, and computer program products for generating a feed message
US9229983B2 (en) * 2012-11-30 2016-01-05 Amazon Technologies, Inc. System-wide query optimization
US10757201B2 (en) * 2014-03-01 2020-08-25 Microsoft Technology Licensing, Llc Document and content feed
US20150277687A1 (en) * 2014-03-28 2015-10-01 An-Sheng JHANG System and method for manipulating and presenting information

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5809435A (en) * 1996-12-23 1998-09-15 Emc Corporation Efficient index arrangement and method for identifying valid records stored on logging digital data storage subsystem
CN101583945A (zh) * 2007-01-12 2009-11-18 微软公司 提供虚拟的真正简单聚合(rss)订阅源
US20140289610A1 (en) * 2007-09-26 2014-09-25 Google Inc. Determining and Displaying a Count of Unread Items in Content Feeds
US20110196855A1 (en) * 2010-02-11 2011-08-11 Akhil Wable Real time content searching in social network
US8914323B1 (en) * 2014-04-10 2014-12-16 Sqrrl Data, Inc. Policy-based data-centric access control in a sorted, distributed key-value data store

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106980685A (zh) * 2017-03-31 2017-07-25 广东神马搜索科技有限公司 数据处理方法及数据处理装置
CN106980685B (zh) * 2017-03-31 2020-04-17 广东神马搜索科技有限公司 数据处理方法及数据处理装置
CN108932248A (zh) * 2017-05-24 2018-12-04 苏宁云商集团股份有限公司 一种搜索实现方法及***
CN107612966A (zh) * 2017-08-11 2018-01-19 百度在线网络技术(北京)有限公司 Feed信息反馈处理方法及***
CN107612966B (zh) * 2017-08-11 2021-01-26 百度在线网络技术(北京)有限公司 Feed信息反馈处理方法及***

Also Published As

Publication number Publication date
CN105808618B (zh) 2019-10-22
US20160188749A1 (en) 2016-06-30
TW201624323A (zh) 2016-07-01
WO2016109672A3 (en) 2016-10-13
WO2016109672A2 (en) 2016-07-07

Similar Documents

Publication Publication Date Title
CN105808618A (zh) Feed 数据的存储和查询方法及其装置
US11238098B2 (en) Heterogenous key-value sets in tree database
US10198363B2 (en) Reducing data I/O using in-memory data structures
US11636083B2 (en) Data processing method and apparatus, storage medium and electronic device
CN102169507B (zh) 一种分布式实时搜索引擎的实现方法
US8738572B2 (en) System and method for storing data streams in a distributed environment
CN110018998B (zh) 一种文件管理方法、***及电子设备和存储介质
CN111046034A (zh) 管理内存数据及在内存中维护数据的方法和***
JP2016181306A (ja) 索引キーを使用して検索を絞込むシステムおよび方法
CN110413650B (zh) 一种业务数据的处理方法、装置、设备和存储介质
CN109656956B (zh) 一种实现业务***数据集中式缓存的方法及装置
CN107301215B (zh) 一种搜索结果缓存方法及装置、搜索方法及装置
CN111400334B (zh) 数据处理方法、装置、存储介质及电子装置
US11755555B2 (en) Storing an ordered associative array of pairs using an append-only storage medium
CN103186622A (zh) 一种全文检索***中索引信息的更新方法以及装置
CN113515487A (zh) 查询目录的方法、计算设备和分布式文件***
CN112262379A (zh) 存储数据项并且标识存储的数据项
CN112148736A (zh) 缓存数据的方法、设备及存储介质
US20100250516A1 (en) Method and apparatus for web crawling
CN112231400B (zh) 分布式数据库的访问方法、装置、设备及存储介质
CN103365897A (zh) 一种支持Bigtable数据模型的片段缓存方法
CN113805864A (zh) 一种项目工程的生成方法、装置、电子设备及存储介质
CN105354304A (zh) 一种基于Linux文件***文件链接的缓存LRU方法
US20120323874A1 (en) Resource-specific control blocks for database cache
CN118132520B (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