CN102779185B - 一种高可用分布式全文索引方法 - Google Patents
一种高可用分布式全文索引方法 Download PDFInfo
- Publication number
- CN102779185B CN102779185B CN201210226357.2A CN201210226357A CN102779185B CN 102779185 B CN102779185 B CN 102779185B CN 201210226357 A CN201210226357 A CN 201210226357A CN 102779185 B CN102779185 B CN 102779185B
- Authority
- CN
- China
- Prior art keywords
- index
- node
- burst
- message
- sub
- 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.)
- Expired - Fee Related
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种高可用分布式全文索引方法,该方法首先启动基础服务系统,然后在各个节点上启动索引集群服务和查询集群服务,再在全文数据上创建、更新和删除索引,最后查询索引;本发明分离查询与索引过程,可以同时支持增量或批量式地建立已有的索引,批量式索引在短时间对大规模数据建立索引,而增量式索引避免重建索引。本发明将索引文件划分为三层结构,包括索引文件、索引分片、索引子分片,以增强索引文件的扩展性和可用性;本发明提供动态索引任务配置服务,通过设置索引任务中的参数,能够动态地满足用户对不同数据建立索引的需求。
Description
技术领域
本发明涉及信息索引和搜索领域,更具体而言,涉及一种针对海量文本数据构建分布式全文索引并且提供高可用的查询服务的方法。
背景技术
随着互联网的发展,尤其是Web2.0的出现,文本信息量呈指数级速度增长。用户希望能够有效的管理海量文本数据,并对这些文本进行快速的搜索得到相应的信息。
Google,百度,必应等搜索引擎的出现,满足了用户对于信息搜索的需求。而搜索引擎所采用的核心技术就是通过网络爬虫收集网络中的各类数据信息,对这些数据进行索引,然后对外提供查询服务。由于随着数据信息的不断增长,所建立的索引文件规模大小也随之增长,导致单机服务器已经无法保存所有的索引文件。此外,建立单一巨大的索引文件所耗费的时间以及在该索引文件上执行查询的时间也不断增加,导致无法满足海量客户查询需求。一个可行方案是将单个索引文件切分成多个索引分片,并将每一个索引分片分布存储在不同的主机上,最后对外提供索引服务。然而通过对业界所采取的若干方案研究,发现这些方案都存在以下几个突出的缺点:
1、索引与查询服务是相关联的,即索引服务建立的本地索引文件直接为查询提供服务。然而,查询与索引集群的紧耦合导致二者不可分离,在容错性和系统复杂性上发生故障的可能性大大增加。
2、常见的分布式索引系统采取索引分片或者索引复制的方法来增加分布式索引扩展性以及可用性。然而,它们所采用的分片策略通常是按照数据的属性来划分,因此产生固定数目的索引分片,而每一个索引分片的大小却急剧增大。此外,另一些分布式索引系统按固定大小划分索引,在查询过程中需要对所有的索引分片进行查询,增加查询的时间以及网络的开销。
3、一般而言分布式索引系统都是为了满足特定的需求,不能支持动态对不同类别的数据进行索引操作。因此如果需要对新的索引域进行索引,需要停止分布式索引集群,重新部署索引任务,重启索引集群以重新建立相应的索引。
4、当前的分布式索引系统采用多节点备份实现系统容灾。当索引集群的节点发生故障的,使用系统中其它节点的备份对其进行恢复,然而如果这些存在备份的节点同时发生故障,那么失效节点上的索引就无法正常恢复。
通过以上的分析,可以知道当前的分布式索引系统中存在诸多问题。
发明内容
本发明的目的在于针对现有技术的不足,提供一种高可用分布式全文索引方法
本发明的目的是通过以下技术方案来实现的:一种高可用分布式全文索引方法,该方法包括以下步骤:
(1)启动基础服务系统,包括分布式文件系统、分布式列式数据库以及元数据目录服务;所述分布式文件系统用于存储索引节点建立的索引文件,同时为查询集群中的节点提供索引文件;所述分布式列式数据库用于提供本发明中的操作日志服务,操作日志存储本发明执行的各项操作,此外,分布式列式数据库还用于存储原始全文数据文件,分布式列式数据库应支持按列存储数据;元数据目录服务实现元数据的存储;
(2)在各个节点上启动索引集群服务和查询集群服务,其中,索引集群服务包括索引主节点服务和索引节点服务,查询集群服务包括查询主节点服务和查询节点服务;该步骤具体为:首先,索引主节点和搜索主节点分别启动,进入安全模式,并分别扫描并监听元数据目录中索引节点和查询节点目录节点,以分别管理这些目录下的节点;其次,索引节点和查询节点启动,并将自身的信息注册到元数据节点目录之上,此时索引主节点和搜索主节点监听到消息,将新加入的节点纳入自身管理之中;最后,如果在安全模式下,节点不在发生变化,那么退出安全模式;至此完成了整个分布式全文索引系统启动的过程;
(3)在全文数据上创建索引、更新索引、删除索引;其中,创建索引包括增量式创建索引和批量式创建索引;该步骤通过以下子步骤来实现:
(3.1)所述的增量式创建索引,需要用户在索引任务定义中将创建索引的模式设置为增量式模式;增量式创建索引的过程包括:
(3.1.1)当数据插入到存储系统中,触发增量建立索引的任务,索引主节点通过反射机制实例化索引任务定义中的索引分片策略,判定该数据的索引归属于哪一个索引分片,此后从元数据目录中读取索引分片与索引节点的映射关系,找到负责建立该索引分片的索引节点;最后将节点ID写入到消息中;
(3.1.2)索引主节点将3.1.1生成的消息通过远程调用的方式将该消息随机塞到任意一个索引节点的本地消息队列中;
(3.1.3)索引节点读取对应的消息,如果该消息属于该节点,那么获取消息后的索引节点会根据消息中的数据主键从数据存储系统中读出数据,封装成索引单元,否则此消息不属于该节点,那么通过远程调用以及消息中的节点信息将该消息转发到对应索引节点;
(3.1.3)索引节点处理该消息,如果不存在与该消息对应索引处理器,则创建索引处理器,并根据索引任务定义实例化索引器;索引器读入索引单元,根据索引任务中的预定义索引域,对存储于索引单元中的数据进行索引,同时在操作日志1中记录索引分片ID与操作消息,并且在操作日志2中记录数据主键与对应的索引子分片的名字;
(3.1.4)如果此时满足索引子分片文件上传的条件且此时该索引处理器中合并线程不在运行,那么停止当前的索引子分片文件上的索引器,新建一个文件目录作为新的索引器的索引目录,转步骤3.1.3;上传索引文件线程并执行步骤3.1.5;否则依然将索引建在本地的索引子分片目录之下,转步骤3.1.3;
(3.1.5)将旧的索引子分片文件重新命名为合并文件,设置索引正在合并的标志,并且在合并文件目录上启动一个索引文件合并线程,将索引文件合并;上传索引文件线程将合并的结果上传到分布式文件系统中的索引子分片文件目录;并且将新增索引子分片的操作消息插入到元数据目录中的Master_queue上;
(3.1.6)如果上传成功,那么就删除与该索引分片对应的索引操作日志1,否则跳转至步骤3.1.5重复上传索引分片的过程;
(3.2)更新索引的过程包括:
(3.2.1)更新数据的操作触发更新索引的任务,索引主节点根据索引分片策略判定该数据归属于哪一个索引分片,并从元数据目录上读取索引分片与索引节点的映射关系,找到对应的索引节点;
(3.2.2)索引主节点通过远程调用将生成的更新索引消息传递给任意索引节点的本地消息队列,该索引节点从中读取对应的更新消息,如果该消息不属于当前节点,那么该节点根据消息中的节点信息将消息转发到真正的处理节点;
(3.2.3)获取更新消息后的索引节点会根据消息中的信息,根据数据ID在该索引分片的操作日志2中查找对应的索引子分片,将索引子分片ID写入消息中,如果此时索引子分片在本地磁盘上,转步骤3.2.4;否则转步骤3.2.5;
(3.2.4)根据该数据的文档主键,如果此时该数据的索引在本地的索引子分片之中,直接更新对应的索引;并在操作日志1中记录索引分片ID和对应的消息,转步骤3.2.2;
(3.2.5)判定当前更新缓存队列中的消息数目是否到达阈值,如果没有到达则将该消息存入该队列,返回步骤3.2.2;否则转步骤3.2.6;
(3.2.6)将更新缓存队列中的消息全部交给处理队列,启动更新线程,更新线程处理每一个消息,根据每一个数据主键和索引子分片的对应关系,生成索引子分片与索引主键的一对多映射关系,此后,从分布式文件系统中将索引子分片下载本地磁盘,在该分片上实例化出索引处理器以及对应的索引器,根据消息中的数据主键从分布式列式数据库中读取数据,封装成索引单元并执行更新索引操作,成功之后在操作日志1中记录该索引子分片执行的更新操作;
(3.2.7)当完成该索引子分片中所有更新操作,关闭在该目录上的索引器,并将更新目录中的索引文件上传至分布式索引子分片的目录;删除操作日志1中与该索引子分片相关的操作记录,同样的操作重复执行直至遍历完映射关系;
(3.3)删除索引的过程包括:
(3.3.1)删除数据的操作触发删除索引的任务,索引主节点根据索引分片策略判定该数据归属于哪一个索引分片,并从元数据目录上读取索引分片与索引节点的映射关系,找到对应的索引节点;
(3.3.2)索引主节点通过远程调用将生成的删除索引消息传递给任意索引节点的本地消息队列,该索引节点从中读取对应的删除消息,如果该消息不属于当前节点,那么该节点根据消息中的节点信息将消息转发到真正的处理节点;
(3.3.3)获取删除消息后的索引节点会根据消息中的信息,根据数据ID在该索引分片的操作日志2中查找对应的索引子分片,将索引子分片ID写入消息中,如果此时索引子分片在本地磁盘上,转步骤3.3.4;否则转步骤3.3.5;
(3.3.4)根据该数据的文档主键,如果此时该数据的索引在本地的索引子分片之中,直接删除对应的索引;并在操作日志1中记录索引分片ID和对应的消息,转步骤3.3.2;
(3.3.5)判定当前删除缓存队列中的消息数目是否到达阈值,如果没有到达则将该消息存入该队列,返回步骤3.3.2;否则转步骤3.3.6;
(3.3.6)将删除缓存队列中的消息全部交给处理队列,启动删除线程,删除线程处理每一个消息,根据每一个数据主键和索引子分片的对应关系,生成索引子分片与索引主键的一对多映射关系,此后,从分布式文件系统中将索引子分片下载本地磁盘,在该分片上实例化出索引处理器以及对应的索引器,根据消息中的数据主键从分布式列式数据库中读取数据,封装成索引单元并执行删除索引操作,成功之后在操作日志1中记录该索引子分片执行的删除操作;
(3.3.7)当完成该索引子分片中所有删除操作,关闭在该目录上的索引器,并将删除目录中的索引文件上传至分布式索引子分片的目录;删除操作日志1中与该索引子分片相关的操作记录,同样的操作重复执行直至遍历完映射关系;
(3.4)所述的批量式索引模式是当用户在索引任务定义中定义了批量式建立索引模式,此时,索引主节点将模式转换为批量式索引模式,批量式索引方法具体包含以下步骤:
(3.4.1)调用MapReduce框架,在Map阶段调用索引分片策略,将数据划分为n个数据集合;然后将每个数据集合中的数据随机划分到若干个索引节点上;
(3.4.2)每个索引节点对划分的数据根据其所属的索引分片,分别建立索引子分片,每一个索引子分片按照大小划分,当索引子分片大小超过阈值,则创建新的索引子分片;
(3.4.3)在Reduce阶段,每个索引节点将自身中索引子分片文件合并到的对应的索引分片文件,将会生成n个索引分片文件;
(3.4.4)当完成批量式建索引任务之后,索引主节点在元数据目录下的Master_queue下写入载入索引分片的操作;查询主节点根据此操作通过节点选择策略将索引分片分配给若干个查询节点,并且在元数据目录下的Node_queue中写入载入索引分片的操作,各个对应的查询节点执行此操作,载入对应的索引;
(4)查询索引,包括以下子步骤:
(4.1)查询客户端根据查询内容生成分布式查询,对该查询进行解析,产生对应的解析结果;
(4.2)此后查询客户端利用步骤4.1中产生的结果,调用本地的查询节点选择策略;该策略会远程调用查询主节点上的索引分片选择策略,根据元数据目录保存的查询节点与索引分片的信息,决定该查询属于哪些索引分片,由于一个索引分片有多个索引子分片,因此根据元数据目录中索引子分片与查询节点的映射关系,利用负载均衡技术从这些节点中选择负载最轻的查询节点,生成与该查询相对应的查询节点列表;最后,将该列表返回给查询客户端;
(4.3)查询客户端获取该查询节点列表,通过远程调用的方法,并行向这些查询节点发布查询请求;
(4.4)查询节点执行该查询请求,通过一个线程池在不同的索引分片之上查询对应的结果,将结果返回给查询客户端;
(4.5)客户端获取各个查询节点的查询结果之后,对查询结果进行合并操作,完成整个查询过程。
本发明的有益效果是,首先,本发明分离查询与索引过程,使二者相互透明。优点在于索引集群可以同时支持增量式或批量式地建立索引。批量式索引可以满足短时间对大规模数据建立索引的需求。而增量式索引可以避免对已建立好的索引文件进行重建操作。另一方面,查询集群只需要从分布式文件系统中读取索引文件,而并不要求索引文件是如何建立的。其次,本发明将索引文件划分为三层结构,在索引分片的基础上再将其划分为索引子分片,以增强索引文件的扩展性。在查询集群中以索引子分片为单元,将索引子分片的拷贝复制到多个查询节点,提高索引文件的可用性。再次,本发明提供动态索引任务配置服务,通过设置索引任务中的参数,能够满足用户对不同数据建立索引的需求。最后,本发明记录了每一个操作的日志,当系统中节点发生故障,可以根据该日志对该节点中所有为备份的操作进行恢复。
附图说明
图1是分布式全文索引系统的架构图;
图2是分布式全文索引系统的索引文件的组织结构图;
图3是索引文件在分布式全文索系统中的分布图;
图4是分布式全文索引系统的元数据目录结构图;
图5是分布式全文索引系统索引主节点启动流程图;
图6是分布式全文索引系统索引节点启动流程图;
图7是分布式全文索引系统查询主节点启动流程图;
图8是分布式全文索引系统查询节点启动流程图;
图9是分布式全文索引系统建立索引的流程图;
图10是分布式全文索引系统删除和更新索引的流程图;
图11是分布式全文索引系统执行查询的流程图;
图12是分布式全文索引系统批量式索引示意图。
具体实施方式
本发明的主要目的是提出建立一个分布式全文索引系统的方法。分布式全文索引系统对外提供海量文本索引和查询服务。下面参照附图对本发明进行全面详实的描述。如图1所示,通过本发明所使用的一个高可用分布式全文索引的方法可以构建一个分布式全文索引系统。一个完整的分布式全文索引方法应该由以下几个步骤构成:
1、启动基础服务系统,包括分布式文件系统、分布式列式数据库以及元数据目录服务。分布式文件系统可以采用Hadoop的分布式文件系统HDFS,分布式数据库可以采用HBase,元数据目录服务可以采用Zookeeper来实现。上述的几个系统都可以采用与其功能相同的其他系统代替。
1.1、所述分布式文件系统用于存储索引节点建立的索引文件,同时为查询集群中的查询节点提供索引文件。该分布式文件系统应该支持存储海量数据,且保证数据的安全性以及可用性,防止因系统故障导致数据缺失。
1.2、所述分布式列式数据库用于提供本发明中的操作日志服务,操作日志存储本发明所采用的方法中执行的各项操作。此外,分布式列式数据库还用于存储原始全文数据文件。分布式列式数据库应支持按列存储数据。所述的操作日志包括操作日志1与操作日志2。二者格式如下表所示:
表1:操纵日志1
索引分片ID | 消息1 | 消息2 | … | 消息i | … | 消息n |
表2:操纵日志2
数据主键 | 索引子分片ID |
1.2.1、所述的操作日志1用于系统容灾。其中“索引分片ID”表示索引分片名字。本发明将索引文件划分为三层结构,如图2所示。在图中,一个特定的索引文件是由特定数目的索引分片文件组成。具体而言,可以根据特定的索引分片策略来决定每个数据归属于哪一个索引分片之中。本发明默认提供了一些索引分片策略,例如根据数据属性来划分,包括按照时间,按照文档ID值取模等。用户也可以自定义特定的索引分片策略,以满足不同应用场景下对于数据划分的需求。每一个索引分片文件又可以根据用户设定的阈值划分成索引子分片。三级不同索引文件在系统中的分布如图3所示。
所述的“消息i”中包含数据存储在分布式列式数据库中的主键ID以及操作类型。其中操作类型包括:建立,更新以及删除索引操作。索引分片的ID或索引子分片ID记录的是该数据归属于哪一个索引分片或子分片。消息格式如下表所示:
数据主键 | 操作类型 | 索引分片ID/索引子分片ID |
1.2.2、所述操作日志2用于支持索引更新删除操作,具体流程参见3.2。
1.3、本发明通过元数据目录服务实现元数据的存储。本发明将系统中所需要的元数据都存放在元数据目录之上,由元数据目录保证元数据的安全与高可用性。元数据目录结构如图4所示。
1.3.1、所示的Index目录服务于索引集群,内部包含:Master,Node2shard,Shard2node,Live_nodes等目录。
a、所示的Master目录中保存当前索引主节点的IP地址以及备份索引主节点的IP地址。一旦一个新的索引主节点启动,判断该目录下是否已经存在索引主节点,如果没有则就将该节点的IP地址记入在该目录之下,标记为主节点。如果存在则监听该索引主节点的变化,如果该索引主节点失效,则将自己注册为新的索引主节点,对外提供服务。
b、所示的Live_nodes目录中保存当前处于正常工作的索引节点IP地址。
c、所示的Node2shard目录保存各个正常索引节点中处理的索引分片名字。
d、所示的Shard2node目录保存的是索引分片与索引节点的一一映射关系。
1.3.2、所示的Search目录服务于查询集群,内部包含:Master,Node,Node2shard,Shard2node,Work,Definition等目录。
a、所示的Master目录中保存当前查询主节点的IP地址以及备份查询主节点的IP地址。其过程和1.3.1中的a相同。
b、所示的Node2shard目录保存各个正常的查询节点包含的索引分片名字。
c、所示的Shard2node目录保存索引分片与查询节点的一对多映射关系。
d、所示的Node目录保存查询节点的元数据信息,以及各个节点的状态信息,如CPU占用率,内存空间等等。
e、所示的Work目录保存查询主节点与查询节点操作消息。查询主节点和查询节点分别监听当前目录下的Master_queue和Node_queue目录。当索引节点成功上传、更新或者删除一个索引子分片之后,就会在该目录下的Master_queue节点上写入一个新的节点,该节点包含一个对应的操作消息,包括新增索引子分片,重载索引子分片,删除索引子分片等。查询主节点根据这些操作消息,生成查询节点操作消息,并将这些消息存储于Node_queue节点上。监听该节点的查询节点将会得到通知并执行相应的操作。
1.3.4、所述的Index_metadata目录存储索引的元数据信息,包括:索引的名字,索引文件存放的路径,索引文件复制的数目,归属于该索引的索引分片,部署该索引文件是否出错等信息。
1.3.5、所述的Version目录,主要保存该分布式全文索引系统的一些版本信息,用于验证,防止版本之间兼容性的问题。
1.3.6、所述的Definition目录,该目录保存用户索引任务定义。在系统正常运转的任何时候,用户都可以通过添加索引任务定义来实现对不同数据进行索引。具体而言,每一个索引任务在该目录下都有一个同名的节点,该节点中保存一个XML格式的索引任务定义文件序列化成二进制的数据。该文件中包含索引任务的名字,存储数据的数据库表名,索引分片策略名字,索引子分片的大小,索引子分片更新的时间等信息。同时还包括建索引的模式,目前支持批量式和增量式创建索引。系统根据索引任务定义执行索引操作。
2、本发明需要在各个节点上启动索引集群服务和查询集群服务,其中,索引集群服务包括索引主节点服务和索引节点服务,查询集群服务包括查询主节点服务和查询节点服务。
2.1、所述分布式全文索引系统启动过程包括以下几个步骤:首先,索引主节点和搜索主节点分别启动,进入安全模式,并分别扫描并监听元数据目录中索引节点和查询节点目录节点,以分别管理这些目录下的节点。其次,索引节点和查询节点启动,并将自身的信息注册到元数据目录之上,此时索引主节点和搜索主节点监听到消息,将新加入的节点纳入自身管理之中。最后,如果在安全模式下,节点不在发生变化,那么退出安全模式。至此完成了整个分布式全文索引系统启动的过程。
2.2、所述的索引主节点启动,需要经历以下过程(如图5所示):首先,判断是否处于初始化阶段,如果不是处于初始化阶段,启动初始化过程。其次,在元数据目录上创建的路径,包括Node2shard,Shard2node和Live_node目录。最后,在元数据目录中Definition目录上注册监听器,监听是否有新的索引任务生成,完成启动过程。
2.3、所述的索引节点启动需要经历以下几个过程(如图6所示):首先,初始化索引节点的信息,本地消息队列,以及启动各个索引处理器,需要启动删除和更新索引的线程以及相关消息队列,更新本地索引分片的信息,从HDFS上找到最新的索引子分片,并在该分片的目录上建立新的索引文件目录。其次,检查本地是否有一些旧的索引文件,如果存在则上传至HDFS上。最后针对不同的索引任务,初始化对应的索引器,用于建立索引。
所述的索引处理器是建立、更新和删除索引的单元,通过调用索引器来实现。索引器可以采用常用的全文索引方法,如Lucene来实现。该方法应支持索引的建立,更新,删除以及合并操作。
2.4、所述的查询主节点启动过程包括(如图7所示):首先,启动查询节点选择策略,目的是根据查询选择出若干个节点列表,这些节点执行真正的查询操作。该策略可以采用轮询算法并结合节点负载信息实现。其次,启动查询节点信息管理器,用于统计查询节点的负载信息,服务于查询节点选择策略。最后,启动查询节点管理器,用于管理查询节点。
所述的启动查询管理器过程包括:首先判断该管理器是否处于关闭状态,如果处于关闭状态抛出异常。其次选择该节点是否能够成为主查询节点管理器,如果成为主节点,就注册该节点,并通知各个查询节点,启动查询节点管理过程。最后根据当前处于活跃状态的索引节点,发布监测各个查询节点上本地索引文件是否完整消息以及发布删除过期索引文件的信息。各个查询节点根据这些信息完成相应的操作。
2.5、所述查询节点启动过程包括(如图8所示):首先,启动本地索引分片管理程序,管理本地已存在的索引分片。其次,启动查询节点监控器,监控查询节点的状态,包括:CPU时间,内存交换率,空内存的大小,物理内存的总大小,以及其他一些信息,并将这些信息记录在元数据目录中。再次,重新部署每一个已存在的索引分片,在每个索引分片上启动对应的查询服务。最后,启动查询节点消息队列,等待查询主节点的消息。
3、本发明提出的高可用分布式全文索引方法,支持在全文数据上创建索引。本发明支持增量式创建索引和批量式创建索引,同时也支持对索引文件的更新与删除操作。建立索引之前,用户需要定义索引任务定义,并将该文件上传至元数据目录中。索引主节点监听到该目录节点发生变化,就会创建一个索引任务。该任务用于处理索引任务定义中的数据所对应的消息。
3.1、所述的增量式创建索引,需要用户在索引任务定义中将创建索引的模式设置为增量式模式。增量式创建索引的过程包括(如图9所示):
3.1.1、当数据插入到存储系统中,触发增量建立索引的任务。索引主节点通过反射机制实例化索引任务定义中的索引分片策略,判定该数据的索引归属于哪一个索引分片。此后从元数据目录中读取索引分片与索引节点的映射关系,找到负责建立该索引分片的索引节点。最后将节点ID写入到消息中。
3.1.2、索引主节点将3.1.1生成的消息通过远程调用的方式将该消息随机塞到任意一个索引节点的本地消息队列中。
3.1.3索引节点读取对应的消息,如果该消息属于该节点,那么获取消息后的索引节点会根据消息中的数据主键从数据存储系统中读出数据,封装成索引单元。否则此消息不属于该节点,那么通过远程调用以及消息中的节点信息将该消息转发到对应索引节点。
3.1.3、索引节点处理该消息。如果不存在与该消息对应索引处理器,则创建索引处理器,并根据索引任务定义实例化索引器。索引器读入索引单元,根据索引任务中的预定义索引域,对存储于索引单元中的数据进行索引。同时在操作日志1中记录索引分片ID与操作消息,并且在操作日志2中记录数据主键与对应的索引子分片的名字。
3.1.4、如果此时满足索引子分片文件上传的条件且此时该索引处理器中合并线程不在运行,那么停止当前的索引子分片文件上的索引器,新建一个文件目录作为新的索引器的索引目录,转3.1.3。上传索引文件线程并执行3.1.5。否则依然将索引建在本地的索引子分片目录之下,转3.1.3。
3.1.5、将旧的索引子分片文件重新命名为合并文件,设置索引正在合并的标志,并且在合并文件目录上启动一个索引文件合并线程,将索引文件合并。上传索引文件线程将合并的结果上传到分布式文件系统中的索引子分片文件目录。并且将新增索引子分片的操作消息插入到元数据目录中的Master_queue上。
3.1.6、如果上传成功,那么就删除与该索引分片对应的索引操作日志1,否则跳转至3.1.5重复上传索引分片的过程。
3.2、所述的更新索引的过程包括(如图10所示):
3.2.1、更新数据的操作触发更新索引的任务。索引主节点根据索引分片策略判定该数据归属于哪一个索引分片,并从元数据目录上读取索引分片与索引节点的映射关系,找到对应的索引节点。
3.2.2、索引主节点通过远程调用将生成的更新索引消息传递给任意索引节点的本地消息队列。该索引节点从中读取对应的更新消息。如果该消息不属于当前节点,那么该节点根据消息中的节点信息将消息转发到真正的处理节点。
3.2.3、获取更新消息后的索引节点会根据消息中的信息,根据数据ID在该索引分片的操作日志2中查找对应的索引子分片。将索引子分片ID写入消息中。如果此时索引子分片在本地磁盘上,转步骤3.2.4。否则转3.2.5。
3.2.4、根据该数据的文档主键,如果此时该数据的索引在本地的索引子分片之中,直接更新对应的索引。并在操作日志1中记录索引分片ID和对应的消息,转步骤3.2.2。
3.2.5、判定当前更新缓存队列中的消息数目是否到达阈值,如果没有到达则将该消息存入该队列,返回3.2.2。否则转步骤3.2.6。
3.2.6、将更新缓存队列中的消息全部交给处理队列,启动更新线程。更新线程处理每一个消息,根据每一个数据主键和索引子分片的对应关系,生成索引子分片与索引主键的一对多映射关系。此后,从分布式文件系统中将索引子分片下载本地磁盘。在该分片上实例化出索引处理器以及对应的索引器。根据消息中的数据主键从分布式列式数据库中读取数据,封装成索引单元并执行更新索引操作。成功之后在操作日志1中记录该索引子分片执行的更新操作。
3.2.7、当完成该索引子分片中所有更新操作,关闭在该目录上的索引器,并将更新目录中的索引文件上传至分布式索引子分片的目录。删除操作日志1中与该索引子分片相关的操作记录。同样的操作重复执行直至遍历完映射关系。
3.3、所述删除索引过程和更新索引过程相同,不再复述。
3.4、所述的批量式索引模式是当用户在索引任务定义中定义了批量式建立索引模式。此时,索引主节点将模式转换为批量式索引模式。批量式索引方法具体包含以下步骤(如图12所示):
3.4.1、调用MapReduce框架,在Map阶段调用索引分片策略,将数据划分为n个数据集合。然后将每个数据集合中的数据随机划分到若干个索引节点上。
3.4.2、每个索引节点对划分的数据根据其所属的索引分片,分别建立索引子分片。每一个索引子分片按照大小划分。当索引子分片大小超过阈值,则创建新的索引子分片。
3.4.3、在Reduce阶段,每个索引节点将自身中索引子分片文件合并到的对应的索引分片文件,将会生成n个索引分片文件。
3.4.4、当完成批量式建索引任务之后,索引主节点在元数据目录下的Master_queue下写入载入索引分片的操作。查询主节点根据此操作通过节点选择策略将索引分片分配给若干个查询节点,并且在元数据目录下的Node_queue中写入载入索引分片的操作,各个对应的查询节点执行此操作,载入对应的索引。
4、本发明所采用的方法还支持对索引的查询操作,查询流程如图11所示。查询步骤包括:
4.1、查询客户端根据查询内容生成分布式查询,对该查询进行解析,产生对应的解析结果。
4.2、此后查询客户端利用4.1中产生的结果,调用本地的查询节点选择策略。该策略会远程调用查询主节点上的索引分片选择策略,根据元数据目录保存的查询节点与索引分片的信息,决定该查询属于哪些索引分片。由于一个索引分片有多个索引子分片,因此根据元数据目录中索引子分片与查询节点的映射关系,利用负载均衡技术从这些节点中选择负载最轻的查询节点,生成与该查询相对应的查询节点列表。最后,将该列表返回给查询客户端。
4.3、查询客户端获取该查询节点列表,通过远程调用的方法,并行向这些查询节点发布查询请求。
4.4、查询节点执行该查询请求,通过一个线程池在不同的索引分片之上查询对应的结果,将结果返回给查询客户端。
4.5、客户端获取各个查询节点的查询结果之后,对查询结果进行合并操作,完成整个查询过程。
5、由于系统中各个节点是相互不可见的,需要提供一个高可靠性的消息通信系统保证各个流程的执行。该消息通信包括索引集群消息通信,索引集群和查询集群消息通信,查询集群消息通信。
5.1、所述的索引集群消息通信主要发生在索引主节点和索引节点之间。消息主要包括以下集中类型:新建、更新、删除索引及模式切换消息。
5.1.1、当处于增量式索引模式的时候,每当数据进入系统,索引主节点根据索引分片策略结合索引分片分布信息判定该数据属于的索引分片,在消息中记录该索引分片的信息,最后将该消息置于索引节点的消息队列之中。
5.1.2、当索引集群由增量式转为批量式状态时,索引主节点会在索引节点消息队列中加入模式切换消息。当索引节点获取这个消息,就会通知相关节点暂停当前的索引任务。此后系统进入批量索引模式。
5.2、所述的索引与查询集群消息通信发生在:当索引集群对分布式文件系统中的索引文件进行新增,更新,删除以及合并操作的时候,需要通知查询集群中的各个相关查询节点更新本地的索引文件。当发生这些操作的时候,索引节点在查询主节点在元数据目录下的Master_queue插入一条操作消息,查询主节点会接收到通知,并处理该消息。二者之间消息的类型包括:检查,部署,新增,重新初始化,重新载入,删除索引和索引分片等。
5.3、所述的查询集群消息通信主要是由索引与查询集群之间的消息通信引发的。当查询主节点获取一条新的消息,查询主节点就会对该消息进行解析,并生成多个查询节点消息,并且将该消息插入到元数据目录下的Node_queue中。查询节点接受到该消息,就会执行相应的任务。查询节点与主节点之间的消息类型包括:部署索引分片,载入索引分片,更新索引分片,删除索引分片等信息。
Claims (1)
1.一种高可用分布式全文索引方法,其特征在于,该方法包括以下步骤:
(1)启动基础服务系统,包括分布式文件系统、分布式列式数据库以及元数据目录服务;所述分布式文件系统用于存储索引节点建立的索引文件,同时为查询集群中的节点提供索引文件;所述分布式列式数据库用于提供操作日志服务,存储执行的各项操作,此外,分布式列式数据库还用于存储原始全文数据文件,分布式列式数据库应支持按列存储,元数据目录服务实现元数据的存储;
(2)在各个节点上启动索引集群服务和查询集群服务,其中,索引集群服务包括索引主节点服务和索引节点服务,查询集群服务包括查询主节点服务和查询节点服务;该步骤具体为:首先,索引主节点和搜索主节点分别启动,进入安全模式,并分别扫描并监听元数据目录中索引节点和查询节点目录节点,以分别管理这些目录下的节点;其次,索引节点和查询节点启动,并将自身的信息注册到元数据节点目录之上,此时索引主节点和搜索主节点监听到消息,将新加入的节点纳入自身管理之中;最后,如果在安全模式下,节点不再发生变化,那么退出安全模式;至此完成了整个分布式全文索引系统启动的过程;
(3)在全文数据上创建索引、更新索引、删除索引;其中,创建索引包括增量式创建索引和批量式创建索引;该步骤通过以下子步骤来实现:
(3.1)所述的增量式创建索引,需要用户在索引任务定义中将创建索引的模式设置为增量式模式;增量式创建索引的过程包括:
(3.1.1)当数据插入到存储系统中,触发增量建立索引的任务,索引主节点通过反射机制实例化索引任务定义中的索引分片策略,判定该数据的索引归属于哪一个索引分片,此后从元数据目录中读取索引分片与索引节点的映射关系,找到负责建立该索引分片的索引节点;最后将节点ID写入到消息中;
(3.1.2)索引主节点将3.1.1生成的消息通过远程调用的方式将该消息随机塞到任意一个索引节点的本地消息队列中;
(3.1.3)索引节点读取对应的消息,如果该消息属于该节点,那么获取消息后的索引节点会根据消息中的数据主键从数据存储系统中读出数据,封装成索引单元,否则此消息不属于该节点,那么通过远程调用以及消息中的节点信息将该消息转发到对应索引节点;
(3.1.4)索引节点处理该消息,如果不存在与该消息对应索引处理器,则创建索引处理器,并根据索引任务定义实例化索引器;索引器读入索引单元,根据索引任务中的预定义索引域,对存储于索引单元中的数据进行索引,同时在操作日志1中记录索引分片ID与操作消息,并且在操作日志2中记录数据主键与对应的索引子分片的名字;
(3.1.5)如果此时满足索引子分片文件上传的条件且此时该索引处理器中合并线程不在运行,那么停止当前的索引子分片文件上的索引器,新建一个文件目录作为新的索引器的索引目录,转步骤3.1.3,并上传索引文件线程并执行步骤3.1.6;否则依然将索引建在本地的索引子分片目录之下,转步骤3.1.3;
(3.1.6)将旧的索引子分片文件重新命名为合并文件,设置索引正在合并的标志,并且在合并文件目录上启动一个索引文件合并线程,将索引文件合并;上传索引文件线程将合并的结果上传到分布式文件系统中的索引子分片文件目录;并且将新增索引子分片的操作消息插入到元数据目录中的Master_queue上;
(3.1.7)如果上传成功,那么就删除与该索引分片对应的索引操作日志1,否则跳转至步骤3.1.6重复上传索引分片的过程;
(3.2)更新索引的过程包括:
(3.2.1)更新数据的操作触发更新索引的任务,索引主节点根据索引分片策略判定该数据归属于哪一个索引分片,并从元数据目录上读取索引分片与索引节点的映射关系,找到对应的索引节点;
(3.2.2)索引主节点通过远程调用将生成的更新索引消息传递给任意索引节点的本地消息队列,该索引节点从中读取对应的更新消息,如果该消息不属于当前节点,那么该节点根据消息中的节点信息将消息转发到真正的处理节点;
(3.2.3)获取更新消息后的索引节点会根据消息中的信息,根据数据ID在该索引分片的操作日志2中查找对应的索引子分片,将索引子分片ID写入消息中,如果此时索引子分片在本地磁盘上,转步骤3.2.4;否则转步骤3.2.5;
(3.2.4)根据该数据的文档主键,如果此时该数据的索引在本地的索引子分片之中,直接更新对应的索引;并在操作日志1中记录索引分片ID和对应的消息,转步骤3.2.2;
(3.2.5)判定当前更新缓存队列中的消息数目是否到达阈值,如果没有到达则将该消息存入该队列,返回步骤3.2.2;否则转步骤3.2.6;
(3.2.6)将更新缓存队列中的消息全部交给处理队列,启动更新线程,更新线程处理每一个消息,根据每一个数据主键和索引子分片的对应关系,生成索引子分片与索引主键的一对多映射关系,此后,从分布式文件系统中将索引子分片下载本地磁盘,在该分片上实例化出索引处理器以及对应的索引器,根据消息中的数据主键从分布式列式数据库中读取数据,封装成索引单元并执行更新索引操作,成功之后在操作日志1中记录该索引子分片执行的更新操作;
(3.2.7)当完成该索引子分片中所有更新操作,关闭在该目录上的索引器,并将更新目录中的索引文件上传至分布式索引子分片的目录;删除操作日志1中与该索引子分片相关的操作记录,同样的操作重复执行直至遍历完映射关系;
(3.3)删除索引的过程包括:
(3.3.1)删除数据的操作触发删除索引的任务,索引主节点根据索引分片策略判定该数据归属于哪一个索引分片,并从元数据目录上读取索引分片与索引节点的映射关系,找到对应的索引节点;
(3.3.2)索引主节点通过远程调用将生成的删除索引消息传递给任意索引节点的本地消息队列,该索引节点从中读取对应的删除消息,如果该消息不属于当前节点,那么该节点根据消息中的节点信息将消息转发到真正的处理节点;
(3.3.3)获取删除消息后的索引节点会根据消息中的信息,根据数据ID在该索引分片的操作日志2中查找对应的索引子分片,将索引子分片ID写入消息中,如果此时索引子分片在本地磁盘上,转步骤3.3.4;否则转步骤3.3.5;
(3.3.4)根据该数据的文档主键,如果此时该数据的索引在本地的索引子分片之中,直接删除对应的索引;并在操作日志1中记录索引分片ID和对应的消息,转步骤3.3.2;
(3.3.5)判定当前删除缓存队列中的消息数目是否到达阈值,如果没有到达则将该消息存入该队列,返回步骤3.3.2;否则转步骤3.3.6;
(3.3.6)将删除缓存队列中的消息全部交给处理队列,启动删除线程,删除线程处理每一个消息,根据每一个数据主键和索引子分片的对应关系,生成索引子分片与索引主键的一对多映射关系,此后,从分布式文件系统中将索引子分片下载本地磁盘,在该分片上实例化出索引处理器以及对应的索引器,根据消息中的数据主键从分布式列式数据库中读取数据,封装成索引单元并执行删除索引操作,成功之后在操作日志1中记录该索引子分片执行的删除操作;
(3.3.7)当完成该索引子分片中所有删除操作,关闭在该目录上的索引器,并将删除目录中的索引文件上传至分布式索引子分片的目录;删除操作日志1中与该索引子分片相关的操作记录,同样的操作重复执行直至遍历完映射关系;
(3.4)所述的批量式索引模式是当用户在索引任务定义中定义了批量式建立索引模式,此时,索引主节点将模式转换为批量式索引模式,批量式索引方法具体包含以下步骤:
(3.4.1)调用MapReduce框架,在Map阶段调用索引分片策略,将数据划分为n个数据集合;然后将每个数据集合中的数据随机划分到若干个索引节点上;
(3.4.2)每个索引节点对划分的数据根据其所属的索引分片,分别建立索引子分片,每一个索引子分片按照大小划分,当索引子分片大小超过阈值,则创建新的索引子分片;
(3.4.3)在Reduce阶段,每个索引节点将自身中索引子分片文件合并到的对应的索引分片文件,将会生成n个索引分片文件;
(3.4.4)当完成批量式建索引任务之后,索引主节点在元数据目录下的Master_queue下写入载入索引分片的操作;查询主节点根据此操作通过节点选择策略将索引分片分配给若干个查询节点,并且在元数据目录下的Node_queue中写入载入索引分片的操作,各个对应的查询节点执行此操作,载入对应的索引;
(4)查询索引,包括以下子步骤:
(4.1)查询客户端根据查询内容生成分布式查询,对该查询进行解析,产生对应的解析结果;
(4.2)此后查询客户端利用步骤4.1中产生的结果,调用本地的查询节点选择策略;该策略会远程调用查询主节点上的索引分片选择策略,根据元数据目录保存的查询节点与索引分片的信息,决定该查询属于哪些索引分片,由于一个索引分片有多个索引子分片,因此根据元数据目录中索引子分片与查询节点的映射关系,利用负载均衡技术从这些节点中选择负载最轻的查询节点,生成与该查询相对应的查询节点列表;最后,将该列表返回给查询客户端;
(4.3)查询客户端获取该查询节点列表,通过远程调用的方法,并行向这些查询节点发布查询请求;
(4.4)查询节点执行该查询请求,通过一个线程池在不同的索引分片之上查询对应的结果,将结果返回给查询客户端;
(4.5)客户端获取各个查询节点的查询结果之后,对查询结果进行合并操作,完成整个查询过程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210226357.2A CN102779185B (zh) | 2012-06-29 | 2012-06-29 | 一种高可用分布式全文索引方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210226357.2A CN102779185B (zh) | 2012-06-29 | 2012-06-29 | 一种高可用分布式全文索引方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102779185A CN102779185A (zh) | 2012-11-14 |
CN102779185B true CN102779185B (zh) | 2014-11-12 |
Family
ID=47124097
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210226357.2A Expired - Fee Related CN102779185B (zh) | 2012-06-29 | 2012-06-29 | 一种高可用分布式全文索引方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102779185B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106776810A (zh) * | 2016-11-24 | 2017-05-31 | 广东数果科技有限公司 | 一种大数据的数据处理系统及方法 |
CN108694209A (zh) * | 2017-04-11 | 2018-10-23 | 华为技术有限公司 | 基于对象的分布式索引方法和客户端 |
Families Citing this family (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103067525B (zh) * | 2013-01-18 | 2015-11-25 | 广东工业大学 | 一种基于特征码的云存储数据备份方法 |
CN104063376A (zh) * | 2013-03-18 | 2014-09-24 | 阿里巴巴集团控股有限公司 | 多维度分组运算方法及系统 |
CN103310023A (zh) * | 2013-07-05 | 2013-09-18 | 深圳中兴网信科技有限公司 | 分布式搜索系统和分布式搜索方法 |
CN103488687A (zh) * | 2013-09-02 | 2014-01-01 | 用友软件股份有限公司 | 用于大数据的搜索系统和搜索方法 |
CN104572785B (zh) * | 2013-10-29 | 2018-07-03 | 阿里巴巴集团控股有限公司 | 一种分布式创建索引的方法和装置 |
CN105723365B (zh) | 2013-11-19 | 2019-09-03 | 华为技术有限公司 | 用于优化索引、主数据库节点和订户数据库节点的方法 |
CN103678577B (zh) * | 2013-12-10 | 2017-10-24 | 新浪网技术(中国)有限公司 | 一种数据更新方法及装置 |
CN103731369A (zh) * | 2013-12-27 | 2014-04-16 | 乐视网信息技术(北京)股份有限公司 | 服务器中的数据队列的更新方法及系统 |
CN104281648B (zh) * | 2014-05-12 | 2017-05-10 | 浙江大学 | 基于维度标签的搜索结果多维度导航方法 |
CN104199963A (zh) * | 2014-09-19 | 2014-12-10 | 浪潮(北京)电子信息产业有限公司 | HBase数据备份恢复的方法和装置 |
CN104881466B (zh) * | 2015-05-25 | 2018-09-07 | 百度在线网络技术(北京)有限公司 | 数据分片的处理以及垃圾文件的删除方法和装置 |
CN106326243B (zh) * | 2015-06-19 | 2020-02-21 | 苏宁云计算有限公司 | 一种数据处理方法及装置 |
CN105447097A (zh) * | 2015-11-10 | 2016-03-30 | 北京北信源软件股份有限公司 | 数据采集方法及系统 |
CN105740472A (zh) * | 2016-03-14 | 2016-07-06 | 中国科学院计算技术研究所 | 一种分布式实时全文检索方法及系统 |
CN107220249B (zh) * | 2016-03-21 | 2020-11-10 | 伊姆西Ip控股有限责任公司 | 基于分类的全文搜索 |
CN106776702B (zh) * | 2016-11-11 | 2021-03-05 | 北京奇虎科技有限公司 | 一种处理主从式数据库系统中的索引的方法和装置 |
CN107402806B (zh) * | 2017-04-20 | 2020-08-18 | 阿里巴巴集团控股有限公司 | 分布式文件架构的任务处理方法和装置 |
CN107220287A (zh) * | 2017-04-24 | 2017-09-29 | 东软集团股份有限公司 | 用于日志查询的索引管理方法、装置、存储介质及设备 |
CN107273462B (zh) * | 2017-06-02 | 2020-09-25 | 浪潮云信息技术股份公司 | 一种构建HBase集群全文索引方法,数据读取方法以及数据写入方法 |
CN107491487B (zh) * | 2017-07-17 | 2020-12-04 | 中国科学院信息工程研究所 | 一种全文数据库架构及位图索引创建、数据查询方法、服务器及介质 |
CN110019498B (zh) * | 2017-08-14 | 2022-04-12 | 北京京东尚科信息技术有限公司 | 日志同步方法及装置、存储介质、电子设备 |
CN108460072A (zh) * | 2017-12-26 | 2018-08-28 | 北京国电通网络技术有限公司 | 配用电数据检索方法和系统 |
CN108491549B (zh) * | 2018-04-09 | 2022-02-01 | 深圳市茁壮网络股份有限公司 | 一种分布式存储系统中文件目录的创建方法及装置 |
CN108629026A (zh) * | 2018-05-09 | 2018-10-09 | 上海达梦数据库有限公司 | 一种全文索引的更新方法、装置、设备和存储介质 |
CN108681592B (zh) * | 2018-05-15 | 2021-05-25 | 北京三快在线科技有限公司 | 索引切换方法、装置、系统以及索引切换中控装置 |
CN110502460B (zh) * | 2018-05-16 | 2021-03-23 | 华为技术有限公司 | 数据处理的方法和节点 |
CN110928839B (zh) * | 2018-08-31 | 2023-05-12 | 携程旅游网络技术(上海)有限公司 | 国际运价数据的存储方法和系统 |
CN110781135B (zh) * | 2019-09-20 | 2023-05-30 | 北京三快在线科技有限公司 | 分布式搜索系统、索引分发方法及存储介质 |
CN110990366B (zh) * | 2019-12-04 | 2024-02-23 | 中国农业银行股份有限公司 | 一种提升基于es的日志系统性能的索引分配方法及装置 |
CN111078153B (zh) * | 2019-12-20 | 2023-08-01 | 同方知网数字出版技术股份有限公司 | 一种基于文件的分布式存储方法 |
CN111259082B (zh) * | 2020-02-11 | 2023-07-21 | 深圳市六因科技有限公司 | 大数据环境下实现全量数据同步的方法 |
CN111752946B (zh) * | 2020-06-22 | 2021-04-30 | 上海众言网络科技有限公司 | 一种基于分片方式对调研数据进行预处理的方法及装置 |
CN111899885A (zh) * | 2020-06-28 | 2020-11-06 | 万达信息股份有限公司 | 一种分布式人员事件索引实现方法和系统 |
CN111737018B (zh) * | 2020-08-26 | 2020-12-22 | 腾讯科技(深圳)有限公司 | ZooKeeper配置文件存储处理方法、装置、设备及其介质 |
CN112181950B (zh) * | 2020-10-19 | 2024-03-26 | 北京米连科技有限公司 | 一种分布式对象数据库的构建方法 |
CN112100160B (zh) * | 2020-11-05 | 2021-09-07 | 四川新网银行股份有限公司 | 一种基于Elastic Search的双活实时数据仓库建设方法 |
CN112685419B (zh) * | 2020-12-31 | 2021-09-10 | 北京赛思信安技术股份有限公司 | 一种可保持janusGraph数据一致性的分布式高效并行加载方法 |
CN112632083A (zh) * | 2020-12-31 | 2021-04-09 | 中国农业银行股份有限公司 | 一种实现索引数据更新的方法、装置及设备 |
CN113535730A (zh) * | 2021-07-21 | 2021-10-22 | 挂号网(杭州)科技有限公司 | 搜索引擎的索引更新方法及系统、电子设备、存储介质 |
CN113779349A (zh) * | 2021-08-11 | 2021-12-10 | 中央广播电视总台 | 数据检索系统、装置、电子设备和可读存储介质 |
CN115051981A (zh) * | 2022-05-12 | 2022-09-13 | 中国农业银行股份有限公司 | 一种基于Zookeeper的异步下载方法及装置 |
CN117349321B (zh) * | 2023-12-04 | 2024-03-05 | 凯美瑞德(苏州)信息科技股份有限公司 | 一种文档数据库多表连接查询方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008021748A2 (en) * | 2006-08-07 | 2008-02-21 | Bea Systems, Inc. | Distributed index search |
CN102004778A (zh) * | 2010-11-19 | 2011-04-06 | 清华大学 | 一种云环境中的文本索引在线更新方法 |
CN102169507A (zh) * | 2011-05-26 | 2011-08-31 | 厦门雅迅网络股份有限公司 | 一种分布式实时搜索引擎 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7725470B2 (en) * | 2006-08-07 | 2010-05-25 | Bea Systems, Inc. | Distributed query search using partition nodes |
-
2012
- 2012-06-29 CN CN201210226357.2A patent/CN102779185B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008021748A2 (en) * | 2006-08-07 | 2008-02-21 | Bea Systems, Inc. | Distributed index search |
CN102004778A (zh) * | 2010-11-19 | 2011-04-06 | 清华大学 | 一种云环境中的文本索引在线更新方法 |
CN102169507A (zh) * | 2011-05-26 | 2011-08-31 | 厦门雅迅网络股份有限公司 | 一种分布式实时搜索引擎 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106776810A (zh) * | 2016-11-24 | 2017-05-31 | 广东数果科技有限公司 | 一种大数据的数据处理系统及方法 |
CN106776810B (zh) * | 2016-11-24 | 2020-10-16 | 广东数果科技有限公司 | 一种大数据的数据处理系统及方法 |
CN108694209A (zh) * | 2017-04-11 | 2018-10-23 | 华为技术有限公司 | 基于对象的分布式索引方法和客户端 |
CN108694209B (zh) * | 2017-04-11 | 2021-11-19 | 华为技术有限公司 | 基于对象的分布式索引方法和客户端 |
Also Published As
Publication number | Publication date |
---|---|
CN102779185A (zh) | 2012-11-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102779185B (zh) | 一种高可用分布式全文索引方法 | |
US10795905B2 (en) | Data stream ingestion and persistence techniques | |
CN107045422B (zh) | 分布式存储方法和设备 | |
JP6165729B2 (ja) | クライアント/サーバシステムの分散した複製コンテンツの強一貫性を維持するための方法およびシステム | |
KR102025934B1 (ko) | 분산형 시스템에서의 범위들의 분할 및 이동 | |
CA2929777C (en) | Managed service for acquisition, storage and consumption of large-scale data streams | |
US8234372B2 (en) | Writing a file to a cloud storage solution | |
US8260913B2 (en) | Reading a file from a cloud storage solution | |
Annamalai et al. | Sharding the shards: managing datastore locality at scale with Akkio | |
Deka | A survey of cloud database systems | |
CN110196885B (zh) | 一种云化分布式实时数据库系统 | |
CN107835983A (zh) | 使用一致的数据库快照在分布式数据库中进行备份和还原 | |
CN107787490A (zh) | 分布式数据库网格中的直接连接功能 | |
CN111881223B (zh) | 数据管理方法、设备、系统及存储介质 | |
CN111177161B (zh) | 数据处理方法、装置、计算设备和存储介质 | |
CN102158540A (zh) | 分布式数据库实现系统及方法 | |
WO2011103537A1 (en) | Data synchronization between a data center environment and a cloud computing environment | |
CN102420854A (zh) | 面向云存储的分布式文件系统 | |
CN103631820B (zh) | 分布式文件系统的元数据管理方法及设备 | |
JPWO2011108695A1 (ja) | 並列データ処理システム、並列データ処理方法及びプログラム | |
CN109684282A (zh) | 一种构建元数据缓存的方法及装置 | |
EP2767912A2 (en) | In-memory real-time synchronized database system and method | |
CN103581332A (zh) | HDFS架构及HDFS架构中NameNode节点的压力分解方法 | |
CN112653730A (zh) | 一种用户态网络文件存储方法和系统 | |
CN109460345B (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20141112 Termination date: 20200629 |
|
CF01 | Termination of patent right due to non-payment of annual fee |