CN106202416B - 列表数据写方法和装置、列表数据读取方法和装置 - Google Patents
列表数据写方法和装置、列表数据读取方法和装置 Download PDFInfo
- Publication number
- CN106202416B CN106202416B CN201610546157.3A CN201610546157A CN106202416B CN 106202416 B CN106202416 B CN 106202416B CN 201610546157 A CN201610546157 A CN 201610546157A CN 106202416 B CN106202416 B CN 106202416B
- Authority
- CN
- China
- Prior art keywords
- data
- table data
- index data
- index
- read
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 60
- 239000007787 solid Substances 0.000 claims description 23
- 238000003780 insertion Methods 0.000 claims description 12
- 230000037431 insertion Effects 0.000 claims description 12
- 238000000605 extraction Methods 0.000 claims description 10
- 241000208340 Araliaceae Species 0.000 claims 2
- 235000005035 Panax pseudoginseng ssp. pseudoginseng Nutrition 0.000 claims 2
- 235000003140 Panax quinquefolius Nutrition 0.000 claims 2
- 235000008434 ginseng Nutrition 0.000 claims 2
- 238000010586 diagram Methods 0.000 description 12
- 241001269238 Data Species 0.000 description 9
- 230000005540 biological transmission Effects 0.000 description 7
- 210000003813 thumb Anatomy 0.000 description 7
- 230000002349 favourable effect Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000011084 recovery Methods 0.000 description 3
- 238000012552 review Methods 0.000 description 3
- 238000011156 evaluation Methods 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 230000004807 localization Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/289—Object oriented databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/70—Information retrieval; Database structures therefor; File system structures therefor of video data
- G06F16/73—Querying
- G06F16/738—Presentation of query results
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Multimedia (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种列表数据写方法和装置、列表数据读取方法和装置,该列表数据写方法包括:接收列表数据写请求;根据所述列表数据写请求获取相应的写参数;所述写参数包括列表数据、所述列表数据所属的数据类别和所述列表数据所属的对象标识;对所述列表数据进行写操作;获取与所述对象标识对应且与所述数据类别唯一对应的关键字;将与所述关键字对应且与所述列表数据对应的索引数据进行写操作。本发明提供的列表数据写方法和装置、列表数据读取方法和装置,提高了读取列表数据的效率。
Description
技术领域
本发明涉及计算机数据处理技术领域,特别是涉及一种列表数据写方法和装置、列表数据读取方法和装置。
背景技术
列表数据是归属于相同对象的可计数的数据,可存储在相同的列表中,比如对一条微博的评论数据或者点赞数据,对一篇主题帖的跟帖数据,对一个课程的评论数据或者点赞数据,还比如购物网站中对一个商品的评论数据或者点赞数据等。当生成列表数据后需要将列表数据写存储介质中,在需要列表数据时从存储介质中读取列表数据。
目前存储列表数据采用传统的Key(关键字)-Value(值)型数据库进行存储,比如Redis数据库,存储时生成与列表数据所属的对象唯一对应的关键字,将列表数据作为该关键字的值写入存储介质中。然而,目前在读取列表数据时需要根据关键字拉取列表数据后,从拉取的列表数据中找到符合需求的列表数据,导致读取列表数据的效率很低,尤其是在列表数据数量庞大时。
发明内容
基于此,有必要针对目前读取列表数据效率低的问题,提供一种列表数据写方法和装置、列表数据读取方法和装置。
一种列表数据写方法,包括:
接收列表数据写请求;
根据所述列表数据写请求获取相应的写参数;所述写参数包括列表数据、所述列表数据所属的数据类别和所述列表数据所属的对象标识;
对所述列表数据进行写操作;
获取与所述对象标识对应且与所述数据类别唯一对应的关键字;
将与所述关键字对应且与所述列表数据对应的索引数据进行写操作。
一种列表数据读取方法,包括:
接收列表数据读请求;
根据所述列表数据读请求获取相应的读参数;所述读参数包括待读取的列表数据所属的数据类别和待读取的列表数据所属的对象标识;
获取与所述对象标识对应且与所述数据类别唯一对应的关键字;
查找与获取的关键字对应的索引数据,并根据查找到的索引数据读取相应的列表数据。
上述列表数据写方法和装置,列表数据经过预分类,得到列表数据所属的数据类别。在与对象标识对应的关键字中,获取到与列表数据唯一对应的关键字,在将列表数据直接进行写操作之后,便可以建立与获取的关键字对应且与列表数据对应的索引数据并进行写操作。列表数据在读取时可按照待读取的列表数据的数据类别进行分类读取,提高了读取列表数据的效率。
一种列表数据写装置,包括:
接入模块,用于接收列表数据写请求;
写服务模块,用于根据所述列表数据写请求获取相应的写参数;所述写参数包括列表数据、所述列表数据所属的数据类别和所述列表数据所属的对象标识;对所述列表数据进行写操作;获取与所述对象标识对应且与所述数据类别唯一对应的关键字;将与所述关键字对应且与所述列表数据对应的索引数据进行写操作。
一种列表数据读取装置,包括:
接入模块,用于接收列表数据读请求;
读服务模块,用于根据所述列表数据读请求获取相应的读参数;所述读参数包括待读取的列表数据所属的数据类别和待读取的列表数据所属的对象标识;获取与所述对象标识对应且与所述数据类别唯一对应的关键字;查找与获取的关键字对应的索引数据,并根据查找到的索引数据读取相应的列表数据。
上述列表数据读取方法和装置,在读取列表数据时,根据待读取的列表数据所属的数据类别,获取相应的关键字,从而利用关键字对应的索引数据查找相应的列表数据。列表数据经过预分类后,按照数据类别分别建立索引,读取时也是按照待读取的列表数据的数据类别进行读取,提高了读取列表数据的效率。
附图说明
图1为一个实施例中列表数据读写***的应用环境图;
图2为一个实施例中服务器的内部结构示意图;
图3为一个实施例中列表数据写方法的流程示意图;
图4为一个实施例中将与关键字对应且与列表数据对应的索引数据进行写操作的步骤的流程示意图;
图5为一个实施例中二级索引数据的结构示意图;
图6为一个实施例中列表数据读取方法的流程示意图;
图7为一个实施例中查找与获取的关键字对应且与待读取的列表数据在所属列表中的位置相匹配的索引数据,并根据查找到的索引数据读取相应的列表数据的步骤的流程示意图;
图8为一个实施例中列表数据写装置的结构框图;
图9为另一个实施例中列表数据写装置的结构框图;
图10为一个实施例中列表数据读取装置的结构框图;
图11为一个实施例中列表数据读取装置的结构框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
可以理解,本发明所使用的术语“第一”、“第二”等可在本文中用于描述各种元件,但这些元件不受这些术语限制。这些术语仅用于将第一个元件与另一个元件区分。举例来说,在不脱离本发明的范围的情况下,可以将第一索引数据称为第二索引数据,且类似地,可将第二索引数据称为第一索引数据。第一索引数据和第二索引数据两者都是索引数据,但其不是同一索引数据。
图1为一个实施例中列表数据读写***100的应用环境图。如图1所示,该列表数据读写***100包括接入服务器110、接入管理服务器120、写服务器130、读服务器140、数据重写服务器150和存储服务器160。存储服务器160包括分布式内存数据库和固态硬盘。接入服务器110、接入管理服务器120、读服务器140、写服务器130、数据重写服务器150和存储服务器160均可以是独立的服务器或者服务器集群。接入服务器110可用于接收业务***发送的列表数据写请求和/或列表数据读取请求,将列表数据写请求转发至写服务器130,将列表数据读取请求转发至读服务器140,写服务器130用于根据列表数据写请求将列表数据和相应的索引数据写入存储服务器160,读服务器140可用于根据列表数据读取请求从存储服务器160读取列表数据,数据重写服务器150可用于在写列表数据失败时进行重写,接入管理服务器120用于对接入服务器110所连接的读服务器140和写服务器130进行动态管理。业务***可包括接口服务器010、业务处理服务器020和数据库服务器030,接口服务器010用于接收业务请求,业务处理服务器020可用于处理业务请求以生成列表数据写请求和/或列表数据读取请求,并将列表数据写请求和/或列表数据读取请求发送至接入服务器110,数据库服务器030可用于存储业务处理服务器在处理业务请求时产生的数据。业务处理服务器020可以是微博评论服务器或者在线课程服务器。
图2为一个实施例中可用作接入服务器110、接入管理服务器120、读服务器140、写服务器130、数据重写服务器150和存储服务器160的服务器的内部结构示意图。如图2所示,该服务器包括通过***总线连接的处理器、非易失性存储介质、内存和网络接口。其中,该服务器的非易失性存储介质存储有操作***和数据库,还存储有列表数据写装置和/或列表数据读取装置,该列表数据写装置用于实现一种列表数据写方法,该列表数据读取装置用于实现一种列表数据读取方法。该服务器的处理器用于提供计算和控制能力,支撑整个服务器的运行。该服务器的内存为非易失性存储介质中的列表数据写装置和/或列表数据读取装置的运行提供环境,该存储器中可存储有计算机可读指令,该计算机可读指令被处理器执行时,可使得处理器执行一种列表数据写方法和/或列表数据读取方法。该服务器的网络接口用于与其它服务器通过网络连接通信。服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实现。本领域技术人员可以理解,图2中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的服务器的限定,具体的服务器可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,接入服务器110可用于接收列表数据写请求,将列表数据写请求转发至写服务器130。写服务器130可用于接收列表数据写请求,根据列表数据写请求获取相应的写参数;写参数包括列表数据、列表数据所属的数据类别和列表数据所属的对象标识;对列表数据进行写操作;获取与对象标识对应且与数据类别唯一对应的关键字;将与关键字对应且与列表数据对应的索引数据进行写操作。
在一个实施例中,写服务器130可用于获取与关键字对应且与列表数据唯一对应的索引数据,并按照列表数据的排序顺序将相应的索引数据通过***排序进行写操作。
在一个实施例中,写服务器130可用于确定与关键字唯一对应的第一索引数据块;在第一索引数据块中查找与列表数据匹配的第一索引数据;确定与匹配的第一索引数据对应的第二索引数据块;将与列表数据唯一对应的第二索引数据写入第二索引数据块。
在一个实施例中,写服务器130可用于在第一索引数据块中确定具有与列表数据匹配的列表数据范围的第一索引数据;还可用于将与列表数据唯一对应的第二索引数据通过***排序写入第二索引数据块。
在一个实施例中,写服务器130可用于将列表数据写入到固态硬盘;还用于将索引数据写入到分布式内存数据库中。
在一个实施例中,接入服务器110可用于从列表数据写请求中提取业务标识;根据业务标识和服务器地址的对应关系,确定提取的业务标识对应的服务器地址;向确定的服务器地址对应的写服务器130发送列表数据写请求,使写服务器130执行根据列表数据写请求获取相应的写参数的步骤,对列表数据进行写操作的步骤,获取与对象标识对应且与数据类别唯一对应的关键字的步骤,以及将与关键字对应且与列表数据对应的索引数据进行写操作的步骤。接入管理服务器120可用于根据写服务器130反馈的服务器状态信息动态调整对应关系。
在一个实施例中,写服务器130可用于将索引数据添加到索引数据队列;将索引数据队列中的索引数据定期或者定量进行批量单次写操作。
在一个实施例中,数据重写服务器150还用于当对索引数据写操作失败时,将索引数据依次存储到日志文件中;每隔重试时间将日志文件中的索引数据重试写操作,且日志文件中索引数据的重试时间随着重试写操作次数的增加而增长。
在一个实施例中,接入服务器110可用于接收列表数据读请求,将列表数据读请求发送至读服务器140。读服务器140可用于接收列表数据读请求;根据列表数据读请求获取相应的读参数;读参数包括待读取的列表数据所属的数据类别和待读取的列表数据所属的对象标识;获取与对象标识对应且与数据类别唯一对应的关键字;查找与获取的关键字对应的索引数据,并根据查找到的索引数据读取相应的列表数据。
在一个实施例中,读服务器140可用于查找与获取的关键字对应且与待读取的列表数据在所属列表中的位置相匹配的索引数据,并根据查找到的索引数据读取相应的列表数据。
在一个实施例中,读服务器140可用于确定与获取的关键字唯一对应的第一索引数据块;在第一索引数据块中存储的第一索引数据中,查找与待读取的列表数据在所属列表中的位置相匹配的第一索引数据;确定与匹配的第一索引数据唯一对应的第二索引数据块;在查找到的第二索引数据块中存储的第二索引数据中,查找与待读取的列表数据在所属列表中的位置相匹配的第二索引数据;根据查找到的第二索引数据读取相应的列表数据。
在一个实施例中,读服务器140可用于从分布式内存数据库中查找与获取的关键字对应的索引数据,并根据查找到的索引数据从固态硬盘读取相应的列表数据。
在一个实施例中,读服务器140可用于在本地缓存中的索引数据中查找与获取的关键字对应的索引数据;本地缓存中的索引数据具有用于缓存淘汰的有效期;当查找到时,更新查找到的索引数据在本地缓存中的有效期,并根据查找到的索引数据读取相应的列表数据;当未查找到时,从分布式内存数据库中查找与获取的关键字对应的索引数据,并根据查找到的索引数据从固态硬盘读取相应的列表数据,将查找到的列表数据加入本地缓存并配置相应的有效期。
在一个实施例中,接入服务器110可用于从列表数据读请求中提取业务标识;根据业务标识和服务器地址的对应关系,确定提取的业务标识对应的服务器地址;向确定的服务器地址对应的读服务器140发送列表数据读请求,使读服务器140执行根据列表数据读请求获取相应的读参数的步骤,获取与对象标识对应的关键字中与数据类别对应的关键字的步骤,以及查找与获取的关键字对应的索引数据,并根据查找到的索引数据读取相应的列表数据的步骤。接入管理服务器120可用于根据读服务器140反馈的服务器状态信息动态调整根据业务标识和服务器地址的对应关系。
如图3所示,在一个实施例中,提供了一种列表数据写方法,本实施例主要以该方法应用于上述图1中的写服务器130来进行举例说明。该方法具体包括如下步骤:
步骤302,接收列表数据写请求。
其中,列表数据写请求是请求写入列表数据的请求。接入服务器可接收业务***发送的列表数据写请求,并将列表数据写请求转发至写服务器,由写服务器接收该列表数据写请求。
步骤304,根据列表数据写请求获取相应的写参数;写参数包括列表数据、列表数据所属的数据类别和列表数据所属的对象标识。
写参数是根据列表数据写请求进行写操作所需要的参数。写参数可携带在列表数据写请求中,也可以从列表数据写请求所指定的存储位置读取写参数。列表数据与对象具有归属关系,对象可通过对象标识唯一区分。
列表数据可以是微博评论数据或者微博点赞数据,所属的对象则是微博消息,相应的对象标识则是微博消息标识;列表数据可以是跟帖数据,所属的对象则是主题帖,相应的对象标识则是主题帖标识;列表数据还可以是课程评价数据或者课程点赞数据,所属的对象则是在线课程,相应的对象标识则是在线课程标识。
数据类别表示列表数据所属的预设分类,预设分类多于一个。列表数据的预设分类可按列表数据的语义倾向、列表数据是否存在图片和列表数据的排序方式中的至少一种进行划分。其中语义倾向比如好评、中评和差评,还比如同意和反对;列表数据中的图片可以是用户主动上传的图片;列表数据的排序方式比如按列表数据的生成时间排序、按列表数据相应用户的等级排序或者按列表数据相应的评论数量排序等。同一列表数据可属于多个数据类别。
步骤306,对列表数据进行写操作。
具体地,写服务器可将列表数据写入到存储服务器的分布式内存数据库和固态硬盘中。分布式内存数据库是基于内存建立的Key-Value型数据库,分布式内存数据库是指列表数据分布式存储在多个物理服务器上的内存所共同构成的数据库中,常见的分布式内存数据库比如Memcached(一种高性能的分布式内存对象缓存***),本实施例采用的分布式内存数据库的功能与Memcached存在差异。将列表数据写入分布式内存数据库,可以保证列表数能够被高效地读取;将列表数据写入固态硬盘,可以保证列表数据能够被持久保存,提升容灾能力。
步骤308,获取与对象标识对应且与数据类别唯一对应的关键字。
具体地,写服务器可将对象标识与表示数据类别的字符直接拼接得到相应的关键字,或者可将对象标识与表示数据类别的字符通过预设的连接符拼接得到相应的关键字,连接符比如下划线。一个对象标识对应多个预设类别,每个预设类别唯一对应一个关键字,这样一个对象标识对应多个关键字,而列表数据的数据类别则对应唯一的关键字。
举例说明,若列表数据所属的对象是在线课程,此时对象标识也就是在线课程标识Course1,列表数据是在线课程的评论数据:“好评+图片”,列表数据所属的数据类别是“好评”和“有图片”,则获取的关键字可以是Course1_Favourable和Course1_Pic,这两个关键字均与对象标识Course1对应。
步骤310,将与关键字对应且与列表数据对应的索引数据进行写操作。
索引数据是据以查找到列表数据所依据的数据,利用索引数据可快速查找到索引数据,写服务器可将与关键字对应且与列表数据对应的索引数据写入索引数据块中,索引数据块存储在分布式内存数据库和固态硬盘中。索引数据可采用一级索引数据或者多级索引数据,多级索引数据包括二级索引数据,写服务器可将多级索引数据逐级进行写操作。比如当采用二级索引数据时,写服务器可写入与关键字对应的第一级索引数据,再写入第一级索引数据所映射的第二级索引数据,第二级索引数据指向已写入的列表数据。当存在多个关键字时会生成相应的多个索引数据,多个索引数据均指向已进行写操作的列表数据。
上述列表数据写方法,列表数据经过预分类,得到列表数据所属的数据类别。在与对象标识对应的关键字中,获取到与列表数据唯一对应的关键字,在将列表数据直接进行写操作之后,便可以建立与获取的关键字对应且与列表数据对应的索引数据并进行写操作。在读取列表数据时,便可以根据待读取的列表数据所属的数据类别,获取相应的关键字,从而利用关键字对应的索引数据查找相应的列表数据。列表数据经过预分类后,按照数据类别分别建立索引,读取时也是按照待读取的列表数据的数据类别进行读取,提高了读取列表数据的效率。
在一个实施例中,步骤310具体包括如下步骤:获取与关键字对应且与列表数据唯一对应的索引数据,并按照列表数据的排序顺序将相应的索引数据通过***排序进行写操作。
具体地,写服务器可生成与关键字对应且与列表数据唯一对应的索引数据并缓存,再确定当前进行了写操作的列表数据在与关键字对应的所有列表数据中的排序位置,并将索引数据通过***排序写入与关键字对应的索引数据块中,使得索引数据的排序顺序能够反映出列表数据的排序顺序。
本实施例中,在写入列表数据的索引数据时,按照相应列表数据的排序顺序将该索引数据通过***排序进行写操作,这样在读取时便可以直接按照索引数据读取到经过预排序的列表数据,与目前存在的先读取列表数据再排序过滤的方式不同,通过在写列表数据时预排序可以节省读取列表数据的时间。
如图4所示,在一个实施例中,步骤310具体包括如下步骤:
步骤402,确定与关键字唯一对应的第一索引数据块。
具体地,本实施例中采用二级索引数据,第一索引数据块用于存储第一级索引数据,第一索引数据块存在于分布式内存数据库和固态硬盘中。关键字与第一索引数据块一一对应,当存在多个关键字时每个关键字对应唯一的第一索引数据块。
步骤404,在第一索引数据块中查找与列表数据匹配的第一索引数据。
具体地,写服务器在第一索引数据块中查找与列表数据匹配的第一索引数据,若查找到则执行步骤406,若未查找到则在第一索引数据块中创建新的匹配的第一索引数据。
步骤406,确定与匹配的第一索引数据对应的第二索引数据块。
其中,在第一索引数据块中的各第一索引数据中,每个第一索引数据对应一个第二索引数据块,每个第二索引数据块包含一个或多个第二索引数据,每个第二索引数据块可容纳固定数量的第二索引数据,固定数量比如500。写服务器在确定匹配的第一索引数据后,便可以利用匹配的第一索引数据定位相应的第二索引数据块。
在一个实施例中,步骤404包括:在第一索引数据块中确定具有与列表数据匹配的列表数据范围的第一索引数据。具体地,第一索引数据块中存储的第一索引数据中包括列表数据范围和第一索引关键字,还可以包括相应的第一索引数据所对应的第二索引数据块中第二索引数据数量,其中该第一索引关键字指向与匹配的第一索引数据对应的第二索引数据块。列表数据范围可通过相应列表数据的排序值最大值和排序最小值表示,排序值可以是列表数据的生成时间、列表数据相应用户的等级或者列表数据相应的评论数量等。
步骤408,将与列表数据唯一对应的第二索引数据写入第二索引数据块。
具体地,写服务器可将与列表数据唯一对应的第二索引数据,按照写操作发生的先后顺序依次写入第二索引数据块。第二索引数据可以包括指向列表数据的第二级关键字,还可以包括列表数据属性,该列表数据属性可包括用于对相应列表数据进行排序和/或过滤的凭据,比如列表数据的排序值和/或数据类别。
在一个实施例中,步骤408包括:将与列表数据唯一对应的第二索引数据通过***排序写入第二索引数据块。具体地,写服务器可根据与列表数据唯一对应的第二索引数据的排序值以及第二索引数据块中已存储的第二索引数据的排序值,确定与列表数据唯一对应的第二索引数据在第二索引数据块中的排序位置,从而按照该排序位置进行***排序写入到第二索引数据块中。本实施例中,第二级索引数据经过预排序,可以节省读取列表数据的时间。
举例说明,参照图5,通过关键字Key,写服务器可确定与关键字Key对应的第一索引数据块ListIndexs。第一索引数据块ListIndexs中与列表数据Value匹配的第一索引数据ListIndexKey1,该第一索引数据ListIndexKey1包括第一索引关键字List_block_key1、排序值最小值Min、排序值最大值Max和对应的第二索引数据数量Item_num。写服务器可在第一索引数据块ListIndexs中查找与列表数据Value匹配的第一索引数据ListIndexKey1,使得列表数据Value的排序值在第一索引数据ListIndexKey1所包括的排序值最小值Min和排序值最大值Max之间的范围内。如果ListIndexKey1所包括的Item_num已达到固定数量,则可在第一索引数据块ListIndexs中创建新的第一索引数据。写服务器在ListIndexKey1所包括的第一级关键字List_block_key1对应的第二索引数据块Block1中,通过***排序写入与列表数据Value唯一对应的第二索引数据IndexItem,该第二索引数据IndexItem包括第二级关键字Index_id和列表数据属性Index_head,通过该第二级关键字Index_id可直接读取列表数据Value。
本实施例中,与关键字对应且与列表数据对应的索引数据采用二级索引数据,第一索引数据可用来对列表数据分组,在读取列表数据时可通过第一索引数据粗略定位第二索引数据块,进而再从第二索引数据块定位第二索引数据,进而利用第二索引数据读取列表数据,即使同一对象的列表数据数量庞大,仍然可以基于二级索引数据高效地读取列表数据。
在一个实施例中,列表数据被写入到固态硬盘;索引数据被写入到分布式内存数据库中。本实施例中,列表数据写入固态硬盘,使得列表数据可以持久保存;而索引数据被写入到分布式内存数据库中,读取列表数据时可从分布式内存数据库高效地读取索引数据后,再从固态硬盘中读取真实的列表数据。
在一个实施例中,该列表数据写方法还包括:从列表数据写请求中提取业务标识;根据业务标识和服务器地址的对应关系,确定提取的业务标识对应的服务器地址;对应关系根据服务器反馈的服务器状态信息动态调整;向确定的服务器地址对应的服务器发送列表数据写请求,使服务器执行步骤304、步骤306、步骤308和步骤310。本实施例中,可根据服务器反馈的服务器状态信息动态调整业务标识和服务器地址的对应关系,从而在从列表数据写请求中提取业务标识后,可分配合适的服务器处理列表数据写请求,有利于服务器资源的合理利用。
其中,业务标识用于区分不同的业务,比如在线课程和微博分别采用不同的业务标识。业务标识和服务器地址之间存在对应关系,该对应关系可存储在接入服务器上。该服务器地址对应的服务器是用于执行写操作的服务器,比如图1中的写服务器;服务器地址用于表示相应服务器在网络中的位置,服务器地址可以包括IP地址和端口号。
在一个实施例中,一个服务器地址可对应唯一的业务标识,此时不同的业务采用不同的写服务器实现写操作,可实现业务隔离;一个服务器地址也可以对应多个业务标识,此时多个业务可以共用写服务器实现写操作,有利于写服务器资源的合理利用。
在一个实施例中,接入服务器可接收列表数据写请求;从列表数据写请求中提取业务标识;根据业务标识和服务器地址的对应关系,确定提取的业务标识对应的服务器地址;向确定的服务器地址对应的写服务器发送列表数据写请求,使得写服务器执行步骤304、步骤306、步骤308和步骤310;接入管理服务器可根据写服务器反馈的服务器状态信息动态调整接入服务器中业务标识和服务器地址的对应关系。
具体地,接入管理服务器可采用zookeeper(一种分布式的分布式应用程序协调服务)作为配置管理中心,通过修改zookeeper节点可以把数据同步在各个接入服务器中。服务器状态信息是指反映相应服务器运行状态的信息,可以包括负载信息,还可以包括写服务器定期发送的心跳信息,若超过预定义时长未收到写服务器发送的心跳信息,表示相应服务器无法通信。
接入管理服务器可根据初始配置的对应关系,结合各个写服务器反馈的服务器状态信息,以请求成功率和请求延时为依据,周期性计算出每个写服务器的权重,根据权重分配各个接入服务器的访问路由,接入服务器通过调用接口来获得访问路由,并在调用结束时收到写服务器反馈的服务器状态信息。
接入管理服务器可监控写服务器的负载情况以及工作质量,如果写服务器宕机,接入管理服务器就可以通知接入服务器将宕机的写服务器剔除,如果已有的写服务器全部负载水平超过阈值,接入管理服务器就可以通过自动化脚本部署新的写服务器,再将新的写服务器的服务器地址添加到接入服务器的对应关系中。
本实施例中,接入服务器负责统一的请求接入,在接入管理服务器的负载监控下,可以利用业务标识和服务器地址的对应关系动态分配写服务器写列表数据,可以适应写入少量列表数据或者大量列表数据的各种需求,并实现服务器资源的合理利用。
在一个实施例中,步骤310包括:将索引数据添加到索引数据队列;将索引数据队列中的索引数据定期或者定量进行批量单次写操作。
具体地,写服务器可将索引数据添加到先入先出的索引数据队列,每隔预设时间段或者每当索引数据队列中的索引数据达到预设数量时,将索引数据队列中最近的预设时间段内产生的索引数据或者该预设数量的索引数据通过单次写操作批量写入。索引数据队列可与关键字一一对应。索引数据队列中可添加多级索引数据。
本实施例中,将索引数据定期定量进行批量单次写操作,可减少写操作的次数,合理利用服务器资源,并减少对存储介质尤其是固态硬盘的损耗。
在一个实施例中,列表数据写方法还包括:当对索引数据写操作失败时,将索引数据依次存储到日志文件中;每隔重试时间将日志文件中的索引数据重试写操作,且日志文件中索引数据的重试时间随着重试写操作次数的增加而增长。
具体地,写服务器可将写操作失败的索引数据记录到日志文件中,写入文件形式的日志文件可以保证写操作失败的索引数据能够被稳定保存。日志文件可以采用binlog。后续数据重写服务器便可以每隔重试时间将日志文件中的索引数据重试写操作,且每失败一次相应的重试时间会增长,这样随着重试写操作次数的增加,重试时间不断增长,直至重试写操作达到预设次数或者直至写操作成功。当达到预设次数时,重写服务器可以发出警告通知,以提醒管理员人工处理。重试时间随着重试写操作次数的增加而增长,可以使用自变量和因变量正相关的函数实现,具体可以是幂函数或者指数函数。
本实施例中,写操作失败的索引数据被依次写入日志文件,使得写操作失败的索引数据能够被稳定保存。每隔重试时间将日志文件中的索引数据进行重试写操作,可保证分布式内存数据库和固态硬盘中数据的一致性。而且重试时间随着重试写操作次数的增加而增长,可防止过载引起服务器崩溃。
在一个实施例中,列表数据和相应的索引数据均存储有主份和备份,且主份和备份之间进行数据同步。
在一个实施例中,列表数据和相应的索引数据被定期生成镜像文件,在接收到恢复指令后,根据恢复指令读取镜像文件进行数据恢复。
在一个实施例中,***100中各服务器的各种配置文件可根据需要进行备份,并在需要恢复配置数据时利用备份的配置文件恢复配置数据。
如图6所示,在一个实施例中,提供了一种列表数据读取方法,本实施例主要以该方法应用于上述图1中的读服务器来举例说明。该方法具体包括如下步骤:
步骤602,接收列表数据读请求。
其中,列表数据读取请求是请求读取列表数据的请求。接入服务器可接收业务***发送的列表数据读取请求,并将列表数据读取请求转发至读服务器,由读服务器接收该列表数据读取请求。
步骤604,根据列表数据读请求获取相应的读参数;读参数包括待读取的列表数据所属的数据类别和待读取的列表数据所属的对象标识。
读参数是根据列表数据读取请求进行读取操作所需要的参数。读参数可携带在列表数据读取请求中,也可以从列表数据读取请求所指定的存储位置读取读参数。列表数据与对象具有归属关系,对象可通过对象标识唯一区分。
列表数据可以是微博评论数据或者微博点赞数据,所属的对象则是微博消息,相应的对象标识则是微博消息标识;列表数据可以是跟帖数据,所属的对象则是主题帖,相应的对象标识则是主题帖标识;列表数据还可以是课程评价数据或者课程点赞数据,所属的对象则是在线课程,相应的对象标识则是在线课程标识。
数据类别表示列表数据所属的预设分类,预设分类多于一个。列表数据的预设分类可按列表数据的语义倾向、列表数据是否存在图片和列表数据的排序方式中的至少一种进行划分。其中语义倾向比如好评、中评和差评,还比如同意和反对;列表数据中的图片可以是用户主动上传的图片;列表数据的排序方式比如按列表数据的生成时间排序、按列表数据相应用户的等级排序或者按列表数据相应的评论数量排序等。同一列表数据可属于多个数据类别。
步骤606,获取与对象标识对应且与数据类别唯一对应的关键字。
具体地,读服务器可将对象标识与表示数据类别的字符直接拼接得到相应的关键字,或者可将对象标识与表示数据类别的字符通过预设的连接符拼接得到相应的关键字,连接符比如下划线。一个对象标识对应多个预设类别,每个预设类别唯一对应一个关键字,这样一个对象标识对应多个关键字,而列表数据的数据类别则对应唯一的关键字。
步骤608,查找与获取的关键字对应的索引数据,并根据查找到的索引数据读取相应的列表数据。
其中,索引数据是据以查找到列表数据所依据的数据,利用索引数据可快速查找到索引数据。索引数据可采用一级索引数据或者多级索引数据,多级索引数据包括二级索引数据。读服务器可根据关键字读取相应数据类别的列表中的所有列表数据。读服务器可在查找到列表数据后,将列表数据反馈至接入服务器,接入服务器再将列表数据反馈至业务***。
上述列表数据读取方法,列表数据经过预分类后,按照数据类别分别建立索引,读取时按照待读取的列表数据的数据类别进行读取,提高了读取列表数据的效率。
在一个实施例中,读参数还包括待读取的列表数据在所属列表中的位置;步骤608包括:查找与获取的关键字对应且与待读取的列表数据在所属列表中的位置相匹配的索引数据,并根据查找到的索引数据读取相应的列表数据。归属于相同对象的相同数据类别的列表数据属于相同的列表,通过列表中的位置可以拉取相应位置的列表数据。列表数据在所属列表中的位置可以是孤立的位置,比如列表中第11条列表数据;也可以是位置范围,比如列表中第11条至第20条列表数据。读服务器可从存储服务器中存储的索引数据块中找到相应位置的索引数据,从而通过找到的索引数据读取相应的列表数据。本实施例中,可实现分类读取相应列表中指定位置处的列表数据。
如图7所示,在一个实施例中,查找与获取的关键字对应且与待读取的列表数据在所属列表中的位置相匹配的索引数据,并根据查找到的索引数据读取相应的列表数据的步骤具体包括如下步骤:
步骤702,确定与获取的关键字唯一对应的第一索引数据块。
具体地,本实施例中采用二级索引数据,第一索引数据块用于存储第一级索引数据,第一索引数据块存在于分布式内存数据库和固态硬盘中。关键字与第一索引数据块一一对应,当存在多个关键字时每个关键字对应唯一的第一索引数据块。
步骤704,在第一索引数据块中存储的第一索引数据中,查找与待读取的列表数据在所属列表中的位置相匹配的第一索引数据。
具体地,第一索引数据可在第一索引数据块中依次写入,从而读服务器可按照待读取的列表数据在所属列表中的位置,确定待读取的列表数据相应的第一索引数据在第一索引数据块中的位置,从而查找到与待读取的列表数据在所属列表中的位置相匹配的第一索引数据。
在一个实施例中,第一索引数据块中存储的第一索引数据中包括相应的第一索引数据所对应的第二索引数据块中第二索引数据数量,步骤704具体包括:在第一索引数据块中存储的第一索引数据中,依次查找包括有与待读取的列表数据在所属列表中的位置相匹配的第二索引数据数量的第一索引数据。
举例说明,若第一索引数据块中第一个第一索引数据中包括的第二索引数据数量为500,而待读取的是第11条至第20条列表数据,在第一个第一索引数据的第二索引数据数量范围内,则将第一个第一索引数据作为匹配的第一索引数据。若第一个第一索引数据中包括的第二索引数据数量为500,而读取的是第499条至第509条列表数据,则按序将第一个索引数据和第二个索引数据作为匹配的第一索引数据。
步骤706,确定与匹配的第一索引数据唯一对应的第二索引数据块。
其中,在第一索引数据块中的各第一索引数据中,每个第一索引数据对应一个第二索引数据块,每个第二索引数据块包含一个或多个第二索引数据,每个第二索引数据块可容纳固定数量的第二索引数据,固定数量比如500。写服务器在确定匹配的第一索引数据后,便可以利用匹配的第一索引数据定位相应的第二索引数据块。
步骤708,在查找到的第二索引数据块中存储的第二索引数据中,查找与待读取的列表数据在所属列表中的位置相匹配的第二索引数据。
具体地,第二索引数据可在第二索引数据块中依次写入,从而读服务器可按照待读取的列表数据在所属列表中的位置,确定待读取的列表数据相应的第二索引数据在第二索引数据块中的位置,从而查找到与待读取的列表数据在所属列表中的位置相匹配的第二索引数据。
举例说明,若匹配的第一索引数据中包括的第一索引数据数量为500,而待读取的是第11条至第20条列表数据,则读服务器从匹配的第一索引数据中读取第11条至第20条列表数据。若待读取的是第499条至第509条列表数据,相匹配的两个第一索引数据中的第一索引数据数量均为500,则读服务器从相匹配的第一个第一索引数据中读取第499条至第500条列表数据,从相匹配的第二个第一索引数据中读取第1条至第9条列表数据。
步骤710,根据查找到的第二索引数据读取相应的列表数据。
本实施例中,与关键字对应且与列表数据对应的索引数据采用二级索引数据,第一索引数据可用来对列表数据分组,在读取列表数据时可通过第一索引数据粗略定位第二索引数据块,进而再从第二索引数据块定位第二索引数据,进而利用第二索引数据读取列表数据,即使同一对象的列表数据数量庞大,仍然可以基于二级索引数据高效地读取列表数据。
在一个实施例中,步骤710具体包括:从分布式内存数据库中查找与获取的关键字对应的索引数据,并根据查找到的索引数据从固态硬盘读取相应的列表数据。
在一个实施例中,从分布式内存数据库中查找与获取的关键字对应的索引数据,并根据查找到的索引数据从固态硬盘读取相应的列表数据之前,该方法还包括:在本地缓存中的索引数据中查找与获取的关键字对应的索引数据;本地缓存中的索引数据具有用于缓存淘汰的有效期;当查找到时,更新查找到的索引数据在本地缓存中的有效期,并根据查找到的索引数据读取相应的列表数据;当未查找到时,执行从分布式内存数据库中查找与获取的关键字对应的索引数据,并根据查找到的索引数据从固态硬盘读取相应的列表数据的步骤,将查找到的列表数据加入本地缓存并配置相应的有效期。
本实施例中采用了分布式内存数据库存储索引数据,需要通过网络获取索引数据,将读取的索引数据添加到本地缓存中,可以在需要时高效地从本地缓存中查找索引数据。如果在本地缓存中查找不到,则再从分布式内存数据库中查找索引数据,并将查找到的索引数据加入到本地缓存中,以备下次读取列表数据时使用。其中有效期可根据需要设置,比如可以设置为1-60秒。本地缓存中若列表数据的有效期消耗完毕则该列表数据被从本地缓存中清除。
在一个实施例中,该列表数据读取方法还包括:从列表数据读请求中提取业务标识;根据业务标识和服务器地址的对应关系,确定提取的业务标识对应的服务器地址;对应关系根据服务器反馈的服务器状态信息动态调整;向确定的服务器地址对应的服务器发送列表数据读请求,使服务器执行步骤604、步骤606和步骤608。
具体地,接入管理服务器可采用zookeeper(一种分布式的分布式应用程序协调服务)作为配置管理中心,通过修改zookeeper节点可以把数据同步在各个接入服务器中。服务器状态信息是指反映相应服务器运行状态的信息,可以包括负载信息,还可以包括读服务器定期发送的心跳信息,若超过预定义时长未收到读服务器发送的心跳信息,表示相应服务器无法通信。
接入管理服务器可根据初始配置的对应关系,结合各个读服务器反馈的服务器状态信息,以请求成功率和请求延时为依据,周期性计算出每个读服务器的权重,根据权重分配各个接入服务器的访问路由,接入服务器通过调用接口来获得访问路由,并在调用结束时收到读服务器反馈的服务器状态信息。
接入管理服务器可监控读服务器的负载情况以及工作质量,如果读服务器宕机,接入管理服务器就可以通知接入服务器将宕机的读服务器剔除,如果已有的读服务器全部负载水平超过阈值,接入管理服务器就可以通过自动化脚本部署新的读服务器,再将新的读服务器的服务器地址添加到接入服务器的对应关系中。
本实施例中,接入服务器负责统一的请求接入,在接入管理服务器的负载监控下,可以利用业务标识和服务器地址的对应关系动态分配读服务器读取列表数据,可以适应读取少量列表数据或者大量列表数据的各种读取需求,并实现服务器资源的合理利用。
在一个实施例中,上述列表数据写方法和列表数据读取方法可以先后执行或者同时执行,此时上述各实施例的列表数据写方法的各个步骤和上述各实施例的列表数据读取方法的各个步骤可以构成一种列表数据处理方法。
如图8所示,在一个实施例中,提供了一种列表数据写装置800,包括接入模块801和写服务模块802。
接入模块801,用于接收列表数据写请求。
写服务模块802,用于根据列表数据写请求获取相应的写参数;写参数包括列表数据、列表数据所属的数据类别和列表数据所属的对象标识;对列表数据进行写操作;获取与对象标识对应且与数据类别唯一对应的关键字;将与关键字对应且与列表数据对应的索引数据进行写操作。
在一个实施例中,写服务模块802还用于获取与关键字对应且与列表数据唯一对应的索引数据,并按照列表数据的排序顺序将相应的索引数据通过***排序进行写操作。
在一个实施例中,写服务模块802还用于确定与关键字唯一对应的第一索引数据块;在第一索引数据块中查找与列表数据匹配的第一索引数据;确定与匹配的第一索引数据对应的第二索引数据块;将与列表数据唯一对应的第二索引数据写入第二索引数据块。
在一个实施例中,写服务模块802还用于在第一索引数据块中确定具有与列表数据匹配的列表数据范围的第一索引数据;还用于将与列表数据唯一对应的第二索引数据通过***排序写入第二索引数据块。
在一个实施例中,列表数据被写入到固态硬盘;索引数据被写入到分布式内存数据库中。
如图9所示,在一个实施例中,接入模块801还用于从列表数据写请求中提取业务标识;根据业务标识和服务器地址的对应关系,确定提取的业务标识对应的服务器地址;向确定的服务器地址对应的服务器发送列表数据写请求,写服务模块802部署在服务器上;装置800还包括:接入管理模块803,用于根据服务器反馈的服务器状态信息动态调整对应关系。
在一个实施例中,写服务模块802还用于将索引数据添加到索引数据队列;将索引数据队列中的索引数据定期或者定量进行批量单次写操作。
在一个实施例中,写服务模块802还用于当对索引数据写操作失败时,将索引数据依次存储到日志文件中;如图9所示,装置800还包括:数据重写模块804,用于每隔重试时间将日志文件中的索引数据重试写操作,且日志文件中索引数据的重试时间随着重试写操作次数的增加而增长。
上述列表数据写装置800,列表数据经过预分类,得到列表数据所属的数据类别。在与对象标识对应的关键字中,获取到与列表数据唯一对应的关键字,在将列表数据直接进行写操作之后,便可以建立与获取的关键字对应且与列表数据对应的索引数据并进行写操作。在读取列表数据时,便可以根据待读取的列表数据所属的数据类别,获取相应的关键字,从而利用关键字对应的索引数据查找相应的列表数据。列表数据经过预分类后,按照数据类别分别建立索引,读取时也是按照待读取的列表数据的数据类别进行读取,提高了读取列表数据的效率。
如图10所示,在一个实施例中,提供了一种列表数据读取装置1000,包括接入模块1001和读服务模块1002。
接入模块1001,用于接收列表数据读请求。
读服务模块1002,用于根据列表数据读请求获取相应的读参数;读参数包括待读取的列表数据所属的数据类别和待读取的列表数据所属的对象标识;获取与对象标识对应且与数据类别唯一对应的关键字;查找与获取的关键字对应的索引数据,并根据查找到的索引数据读取相应的列表数据。
在一个实施例中,读参数还包括待读取的列表数据在所属列表中的位置;读服务模块1002还用于查找与获取的关键字对应且与待读取的列表数据在所属列表中的位置相匹配的索引数据,并根据查找到的索引数据读取相应的列表数据。
在一个实施例中,读服务模块1002还用于确定与获取的关键字唯一对应的第一索引数据块;在第一索引数据块中存储的第一索引数据中,查找与待读取的列表数据在所属列表中的位置相匹配的第一索引数据;确定与匹配的第一索引数据唯一对应的第二索引数据块;在查找到的第二索引数据块中存储的第二索引数据中,查找与待读取的列表数据在所属列表中的位置相匹配的第二索引数据;根据查找到的第二索引数据读取相应的列表数据。
在一个实施例中,读服务模块1002还用于从分布式内存数据库中查找与获取的关键字对应的索引数据,并根据查找到的索引数据从固态硬盘读取相应的列表数据。
在一个实施例中,读服务模块1002还用于在本地缓存中的索引数据中查找与获取的关键字对应的索引数据;本地缓存中的索引数据具有用于缓存淘汰的有效期;当查找到时,更新查找到的索引数据在本地缓存中的有效期,并根据查找到的索引数据读取相应的列表数据;当未查找到时,从分布式内存数据库中查找与获取的关键字对应的索引数据,并根据查找到的索引数据从固态硬盘读取相应的列表数据,将查找到的列表数据加入本地缓存并配置相应的有效期。
在一个实施例中,接入模块1001还用于从列表数据读请求中提取业务标识;根据业务标识和服务器地址的对应关系,确定提取的业务标识对应的服务器地址;向确定的服务器地址对应的服务器发送列表数据读请求;读服务模块1002部署在服务器上;如图11所示,装置1000还包括:接入管理模块1003,用于根据服务器反馈的服务器状态信息动态调整对应关系。
上述接入模块801和接入模块1001可以是相同或者不同的模块,接入管理模块803和接入管理模块1003可以是相同或者不同的模块。
上述列表数据读取装置1000,列表数据经过预分类后,按照数据类别分别建立索引,读取时按照待读取的列表数据的数据类别进行读取,提高了读取列表数据的效率。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,前述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等非易失性存储介质,或随机存储记忆体(Random Access Memory,RAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (20)
1.一种列表数据写方法,包括:
接收列表数据写请求,所述列表数据写请求包括业务标识,所述业务标识与接收所述列表数据写请求的服务器的服务器地址之间具有对应关系,且所述对应关系根据所述服务器反馈的服务器状态信息动态调整;
根据所述列表数据写请求获取相应的写参数;所述写参数包括列表数据、所述列表数据所属的数据类别和所述列表数据所属的对象标识;
对所述列表数据进行写操作;
获取与所述对象标识对应且与所述数据类别唯一对应的关键字;
将与所述关键字对应且与所述列表数据对应的索引数据进行写操作。
2.根据权利要求1所述的方法,其特征在于,所述将与所述关键字对应且与所述列表数据对应的索引数据进行写操作包括:
获取与所述关键字对应且与所述列表数据唯一对应的索引数据,并按照所述列表数据的排序顺序将相应的索引数据通过***排序进行写操作。
3.根据权利要求1所述的方法,其特征在于,所述将与所述关键字对应且与所述列表数据对应的索引数据进行写操作包括:
确定与所述关键字唯一对应的第一索引数据块;
在所述第一索引数据块中查找与所述列表数据匹配的第一索引数据;
确定与匹配的所述第一索引数据对应的第二索引数据块;
将与所述列表数据唯一对应的第二索引数据写入所述第二索引数据块。
4.根据权利要求3所述的方法,其特征在于,所述在所述第一索引数据块中查找与所述列表数据匹配的第一索引数据包括:
在所述第一索引数据块中确定具有与所述列表数据匹配的列表数据范围的第一索引数据;
所述将与所述列表数据唯一对应的第二索引数据写入所述第二索引数据块包括:
将与所述列表数据唯一对应的第二索引数据通过***排序写入所述第二索引数据块。
5.根据权利要求1所述的方法,其特征在于,所述列表数据被写入到固态硬盘;所述索引数据被写入到分布式内存数据库中。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
从所述列表数据写请求中提取业务标识;
根据业务标识和服务器地址的对应关系,确定提取的业务标识对应的服务器地址;
向确定的服务器地址对应的服务器发送所述列表数据写请求。
7.根据权利要求1所述的方法,其特征在于,所述将与所述关键字对应且与所述列表数据对应的索引数据进行写操作包括:
将所述索引数据添加到索引数据队列;
将所述索引数据队列中的索引数据定期或者定量进行批量单次写操作。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当对所述索引数据写操作失败时,将所述索引数据依次存储到日志文件中;
每隔重试时间将所述日志文件中的索引数据重试写操作,且所述日志文件中索引数据的重试时间随着重试写操作次数的增加而增长。
9.一种列表数据读取方法,包括:
接收列表数据读请求,所述列表数据读请求包括业务标识,所述业务标识与接收所述列表数据读请求的服务器的服务器地址之间具有对应关系,且所述对应关系根据所述服务器反馈的服务器状态信息动态调整;
根据所述列表数据读请求获取相应的读参数;所述读参数包括待读取的列表数据所属的数据类别和待读取的列表数据所属的对象标识;
获取与所述对象标识对应且与所述数据类别唯一对应的关键字;
查找与获取的关键字对应的索引数据,并根据查找到的索引数据读取相应的列表数据。
10.根据权利要求9所述的方法,其特征在于,所述读参数还包括待读取的列表数据在所属列表中的位置;所述查找与获取的关键字对应的索引数据,并根据查找到的索引数据读取相应的列表数据包括:
查找与获取的关键字对应且与所述待读取的列表数据在所属列表中的位置相匹配的索引数据,并根据查找到的索引数据读取相应的列表数据。
11.根据权利要求9所述的方法,其特征在于,所述读参数还包括待读取的列表数据在所属列表中的位置;所述查找与获取的关键字对应的索引数据,并根据查找到的索引数据读取相应的列表数据包括:
确定与获取的关键字唯一对应的第一索引数据块;
在所述第一索引数据块中存储的第一索引数据中,查找与所述待读取的列表数据在所属列表中的位置相匹配的第一索引数据;
确定与匹配的所述第一索引数据唯一对应的第二索引数据块;
在查找到的第二索引数据块中存储的第二索引数据中,查找与所述待读取的列表数据在所属列表中的位置相匹配的第二索引数据;
根据查找到的第二索引数据读取相应的列表数据。
12.根据权利要求9所述的方法,其特征在于,所述查找与获取的关键字对应的索引数据,并根据查找到的索引数据读取相应的列表数据包括:
从分布式内存数据库中查找与获取的关键字对应的索引数据,并根据查找到的索引数据从固态硬盘读取相应的列表数据。
13.根据权利要求12所述的方法,其特征在于,所述从分布式内存数据库中查找与获取的关键字对应的索引数据,并根据查找到的索引数据从固态硬盘读取相应的列表数据之前,所述方法还包括:
在本地缓存中的索引数据中查找与获取的关键字对应的索引数据;本地缓存中的索引数据具有用于缓存淘汰的有效期;
当查找到时,更新查找到的索引数据在本地缓存中的有效期,并根据查找到的索引数据读取相应的列表数据;
当未查找到时,执行所述从分布式内存数据库中查找与获取的关键字对应的索引数据,并根据查找到的索引数据从固态硬盘读取相应的列表数据的步骤,将查找到的列表数据加入本地缓存并配置相应的有效期。
14.根据权利要求9所述的方法,其特征在于,所述方法还包括:
从所述列表数据读请求中提取业务标识;
根据业务标识和服务器地址的对应关系,确定提取的业务标识对应的服务器地址;
向确定的服务器地址对应的服务器发送所述列表数据读请求。
15.一种列表数据写装置,其特征在于,包括:
部署在服务器上的接入模块,用于接收列表数据写请求,所述列表数据写请求包括业务标识,所述业务标识与接收所述列表数据写请求的服务器的服务器地址之间具有对应关系,且所述对应关系根据所述服务器反馈的服务器状态信息动态调整;
部署在所述服务器上的写服务模块,用于根据所述列表数据写请求获取相应的写参数;所述写参数包括列表数据、所述列表数据所属的数据类别和所述列表数据所属的对象标识;对所述列表数据进行写操作;获取与所述对象标识对应且与所述数据类别唯一对应的关键字;将与所述关键字对应且与所述列表数据对应的索引数据进行写操作。
16.根据权利要求15所述的装置,其特征在于,所述写服务模块还用于确定与所述关键字唯一对应的第一索引数据块;在所述第一索引数据块中查找与所述列表数据匹配的第一索引数据;确定与匹配的所述第一索引数据对应的第二索引数据块;将与所述列表数据唯一对应的第二索引数据写入所述第二索引数据块。
17.根据权利要求15所述的装置,其特征在于,所述装置还包括:
部署在接入服务器上的接入模块,用于从所述列表数据写请求中提取业务标识;根据业务标识和服务器地址的对应关系,确定提取的业务标识对应的服务器地址;向确定的服务器地址对应的服务器发送所述列表数据写请求;
所述装置还包括:
接入管理模块,用于根据所述服务器反馈的服务器状态信息动态调整所述对应关系。
18.一种列表数据读取装置,其特征在于,包括:
部署在服务器上的接入模块,用于接收列表数据读请求,所述列表数据读请求包括业务标识,所述业务标识与接收所述列表数据读请求的所述服务器的服务器地址之间具有对应关系,且所述对应关系根据所述服务器反馈的服务器状态信息动态调整;
部署在所述服务器上的读服务模块,用于根据所述列表数据读请求获取相应的读参数;所述读参数包括待读取的列表数据所属的数据类别和待读取的列表数据所属的对象标识;获取与所述对象标识对应且与所述数据类别唯一对应的关键字;查找与获取的关键字对应的索引数据,并根据查找到的索引数据读取相应的列表数据。
19.根据权利要求18所述的装置,其特征在于,所述读参数还包括待读取的列表数据在所属列表中的位置;所述读服务模块还用于查找与获取的关键字对应且与所述待读取的列表数据在所属列表中的位置相匹配的索引数据,并根据查找到的索引数据读取相应的列表数据。
20.根据权利要求18所述的装置,其特征在于,所述读参数还包括待读取的列表数据在所属列表中的位置;所述读服务模块还用于确定与获取的关键字唯一对应的第一索引数据块;在所述第一索引数据块中存储的第一索引数据中,查找与所述待读取的列表数据在所属列表中的位置相匹配的第一索引数据;确定与匹配的所述第一索引数据唯一对应的第二索引数据块;在查找到的第二索引数据块中存储的第二索引数据中,查找与所述待读取的列表数据在所属列表中的位置相匹配的第二索引数据;根据查找到的第二索引数据读取相应的列表数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610546157.3A CN106202416B (zh) | 2016-07-11 | 2016-07-11 | 列表数据写方法和装置、列表数据读取方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610546157.3A CN106202416B (zh) | 2016-07-11 | 2016-07-11 | 列表数据写方法和装置、列表数据读取方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106202416A CN106202416A (zh) | 2016-12-07 |
CN106202416B true CN106202416B (zh) | 2018-10-02 |
Family
ID=57477569
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610546157.3A Active CN106202416B (zh) | 2016-07-11 | 2016-07-11 | 列表数据写方法和装置、列表数据读取方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106202416B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107203603A (zh) * | 2017-05-15 | 2017-09-26 | 福建中金在线信息科技有限公司 | 一种信息缓存、读取方法及装置和电子设备 |
CN107291832B (zh) * | 2017-05-27 | 2020-02-18 | 华南理工大学 | 一种基于列表存储结构的数据存储方法 |
US11256676B2 (en) * | 2017-10-26 | 2022-02-22 | Huawei Technologies Co., Ltd. | Method and apparatus for storing and retrieving information in a distributed database |
CN109936613B (zh) * | 2017-12-19 | 2021-11-05 | 北京京东尚科信息技术有限公司 | 应用于服务器的容灾方法和装置 |
CN110764706B (zh) * | 2019-10-25 | 2023-10-03 | 普联技术有限公司 | 存储***、数据管理方法及存储介质 |
CN111782694B (zh) * | 2020-06-28 | 2023-10-20 | 百度在线网络技术(北京)有限公司 | 一种信息写入方法、装置以及电子设备 |
CN114138829B (zh) * | 2020-09-03 | 2022-11-29 | 金篆信科有限责任公司 | 共享Prepare Statement的方法、***和网络设备 |
CN112433674B (zh) * | 2020-11-16 | 2021-07-06 | 连邦网络科技服务南通有限公司 | 一种计算机用数据迁移***及方法 |
CN113961153B (zh) * | 2021-12-21 | 2022-11-04 | 杭州趣链科技有限公司 | 一种索引数据写入磁盘的方法、装置及终端设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7007015B1 (en) * | 2002-05-01 | 2006-02-28 | Microsoft Corporation | Prioritized merging for full-text index on relational store |
CN102222099A (zh) * | 2011-06-21 | 2011-10-19 | 中兴通讯股份有限公司 | 一种数据存储、查找方法及装置 |
CN103970842A (zh) * | 2014-04-24 | 2014-08-06 | 河海大学 | 一种面向防洪减灾领域的水利大数据存取***及方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101256579A (zh) * | 2008-04-08 | 2008-09-03 | 中兴通讯股份有限公司 | 一种数据库范围查询数据组织的方法 |
CN103136215A (zh) * | 2011-11-24 | 2013-06-05 | 腾讯科技(深圳)有限公司 | 存储***的数据读写方法和装置 |
-
2016
- 2016-07-11 CN CN201610546157.3A patent/CN106202416B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7007015B1 (en) * | 2002-05-01 | 2006-02-28 | Microsoft Corporation | Prioritized merging for full-text index on relational store |
CN102222099A (zh) * | 2011-06-21 | 2011-10-19 | 中兴通讯股份有限公司 | 一种数据存储、查找方法及装置 |
CN103970842A (zh) * | 2014-04-24 | 2014-08-06 | 河海大学 | 一种面向防洪减灾领域的水利大数据存取***及方法 |
Non-Patent Citations (1)
Title |
---|
基于固态硬盘的倒排索引构建与维护策略研究;陈雪帆;《中国优秀硕士学位论文全文数据库 信息科技辑》;20130715;第2013年卷(第07期);第I138-148页 * |
Also Published As
Publication number | Publication date |
---|---|
CN106202416A (zh) | 2016-12-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106202416B (zh) | 列表数据写方法和装置、列表数据读取方法和装置 | |
CN104657459B (zh) | 一种基于文件粒度的海量数据存储方法 | |
CN105701096A (zh) | 索引生成方法、数据查询方法、装置及*** | |
US20170250863A1 (en) | Centralized configuration data in a distributed file system | |
CN102609446B (zh) | 一种分布式Bloom过滤***及其使用方法 | |
CN104111804A (zh) | 一种分布式文件*** | |
CN110321325A (zh) | 文件索引节点查找方法、终端、服务器、***及存储介质 | |
CN104750757B (zh) | 一种基于HBase的数据存储方法和设备 | |
CN110784498B (zh) | 一种个性化数据容灾方法及装置 | |
CN105701219A (zh) | 一种分布式缓存的实现方法 | |
CN110399348A (zh) | 文件重删方法、装置、***及计算机可读存储介质 | |
CN106161193B (zh) | 一种邮件处理方法、装置和*** | |
CN109407975B (zh) | 写数据方法与计算节点以及分布式存储*** | |
CN102833273B (zh) | 临时故障时的数据修复方法及分布式缓存*** | |
CN107291876A (zh) | 一种分布式数据管理方法 | |
CN105373746B (zh) | 一种分布式数据处理方法和装置 | |
CN110245129A (zh) | 一种分布式全局数据去重方法和装置 | |
CN103049574A (zh) | 实现文件动态副本的键值文件***及方法 | |
CN104598652B (zh) | 一种数据库查询方法及装置 | |
CN107181773A (zh) | 分布式存储***的数据存储及数据管理方法、设备 | |
CN103150225A (zh) | 基于应用级代理的对象并行存储***磁盘满异常容错方法 | |
CN102724301B (zh) | 云数据库***以及云数据读写处理方法、设备 | |
CN105323271B (zh) | 一种云计算***以及云计算***的处理方法和装置 | |
CN107180034A (zh) | MySQL数据库的集群*** | |
CN104424316A (zh) | 一种数据存储方法、数据查询方法、相关装置和*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for 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: 20240104 Address after: 518057 Tencent Building, No. 1 High-tech Zone, Nanshan District, Shenzhen City, Guangdong Province, 35 floors Patentee after: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd. Patentee after: TENCENT CLOUD COMPUTING (BEIJING) Co.,Ltd. Address before: 2, 518000, East 403 room, SEG science and Technology Park, Zhenxing Road, Shenzhen, Guangdong, Futian District Patentee before: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd. |
|
TR01 | Transfer of patent right |