CN101510209B - 实现实时检索的方法、系统和服务器 - Google Patents
实现实时检索的方法、系统和服务器 Download PDFInfo
- Publication number
- CN101510209B CN101510209B CN2009100809640A CN200910080964A CN101510209B CN 101510209 B CN101510209 B CN 101510209B CN 2009100809640 A CN2009100809640 A CN 2009100809640A CN 200910080964 A CN200910080964 A CN 200910080964A CN 101510209 B CN101510209 B CN 101510209B
- Authority
- CN
- China
- Prior art keywords
- key
- value
- data
- querying command
- hash database
- 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
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种实现实时检索的方法,将Key-Value哈希数据库进行扩展,形成关系型数据库结构之后,包括步骤:接收客户端发送的携带有Key-Value数据的消息,根据所述消息向内存对象缓存和所述扩展后的Key-Value哈希数据库写入数据;接收客户端发送的查询命令,并根据所述查询命令进行检索。同时,本发明实施例还相应公开了一种实现实时检索的系统和服务器。本发明具体实施例通过为内存对象缓存增加Key-Value数据库,作为持久化存储,使得在检索过程中,能够实现高并发访问下快速读写数据库中的数据,并保证数据的不丢失。同时又对Key-Value数据库进行扩展,使该数据库形成关系型数据库的结构,能够进行复杂条件的查询。
Description
技术领域
本发明涉及数据库技术领域,更具体地说,涉及一种实现实时检索的方法、系统和服务器。
背景技术
关系型数据库管理系统(RDBMS)通过数据、关系和对数据的约束三者组成的数据模型来存放和管理数据。在实际应用方面,许多企业的在线交易处理系统、内部财务系统、客户管理系统等大多采用了关系型数据库管理系统。
随着信息技术的飞速发展,数据处理不仅在数量上要求越来越大,而且在质量上也要求越来越高,随着热门网站访问数量的激增,对数据库本身的存储机制、大量并发用户的使用需求、存储空间的使用效率等方面都提出了更高要求。但为静态应用而设计的关系型数据库管理系统,并没有经过针对高效事物处理而进行的优化过程,在对Web的事物处理过程中,没有达到预期的效果。因为用关系型数据库的二维表数据模型,在数据需要做报表输出时,要反过来将已分散设置的大量二维数据表利用索引等技术进行表的连接后,才能找到全部所需的数据,而这又势必影响到应用系统的响应速度。
同时,关系型数据库不能有效地应对大量并发用户的访问,这就迫使用户增加更多的数据库服务器等硬件投资,来解决关系型数据库的性能问题,但这样无疑增加了企业的运营成本。目前,为了解决关系型数据库在Web应用方面的性能劣势,一些互联网公司借助了缓存技术和搜索引擎技术来减少对数据库的压力,但这些措施又降低了数据检索、显示的实时性,而随着Web2.0的发展,对数据增加、删除、修改和检索的要求又近乎实时。除此之外,现有的内存对象缓存系统,比如Memcached,由于所有数据都是存放在内存中的,而一旦发生服务器断电、重启,或Memcached程序重启,均会导致存放在内存中的数据丢失。
针对上述关系型数据库存在的问题,现有的Key-Value哈希数据库具有读写速度快的优点,其读写速度可以达到关系型数据库的几十倍甚至上百倍。但是,它不能像关系型数据库一样实现复杂条件查询,因此,对于实现全文检索,该种数据库存在严重缺陷。
发明内容
有鉴于此,本发明实施例提供一种实现实时检索的方法、系统和服务器,以解决现有的数据库无法进行实时的复杂条件查询的问题。
本发明实施例是这样实现的:
一种实现实时检索的方法,将Key-Value哈希数据库进行扩展,形成关系型数据库结构之后,包括步骤:
接收客户端发送的携带有Key-Value数据的消息,根据所述消息向内存对象缓存和所述扩展后的Key-Value哈希数据库写入数据;
接收客户端发送的查询命令,并根据所述查询命令进行检索。
所述将Key-Value哈希数据库进行扩展包括:
将所述Key-Value哈希数据库中的每一组Key和Value分别对应不同的Name,所述Name对应关系型数据库二维结构中行或列的名称。
所述向内存对象缓存和所述扩展后的Key-Value哈希数据库写入数据包括:
提取所述消息中的Key、Value值;
将所述Key、Value值分别写入所述内存对象缓存和所述扩展后的Key-Value哈希数据库中。
所述向内存对象缓存和所述扩展后的Key-Value哈希数据库写入数据之后,还包括:建立或更新全文检索的反向索引。
当所述查询命令为复杂条件的查询命令时,所述根据所述查询命令进行检索包括:
根据所述查询命令和全文检索的反向索引,获取符合条件的Key;
通过所获取的Key,查询所述Key所对应的Value值。
当所述查询命令为简单主键的查询命令时,所述根据所述查询命令进行检索包括:
根据查询命令中携带的Key,查询所述Key所对应的Value值。
所述查询所述Key所对应的Value值包括:
在内存对象缓存中对所述Key进行查询,当所述内存对象缓存中存在所述Key,则获取所述Key对应的Value值。
所述查询所述Key所对应的Value值包括:
在内存对象缓存中对所述Key进行查询,当所述内存对象缓存中不存在所述Key,则在所述Key-Value哈希数据库中对所述Key进行查询,并获取所述Key对应的Value值。
获取所述Key对应的Value值之后进一步包括:将所述Key和其所对应的Value值写入内存对象缓存。
一种实现实时检索的系统,包括:
Key-Value哈希数据库单元,用于写入Key-Value数据,并对所述Key-Value数据以关系型数据结构进行存储,接到查询命令后,从中读取数据;
内存对象缓存单元,用于写入Key-Value数据,并对所述Key-Value数据进行存储,接到查询命令后,从中读取数据。
其中,还进一步包括:
全文检索单元,用于根据所写入的Key-Value数据,建立或更新全文检索的反向索引,在接到复杂条件的查询命令后,从中获取符合查询条件的Key。
一种实现实时检索的系统,包括:客户端和服务器,其中:
客户端,用于发送携带有Key-Value数据的消息或查询命令;
服务器,用于接收携带有Key-Value数据的消息,根据所述消息向内存对象缓存和所述扩展后的Key-Value哈希数据库写入数据,或者,
用于接收查询命令,根据所述查询命令进行检索。
一种实现实时检索的服务器,包括:
接收单元,用于接收携带有Key-Value数据的消息或查询命令;
数据写入单元,用于根据接收单元接收到的携带有Key-Value数据的消息,向内存对象缓存和所述扩展后的Key-Value哈希数据库写入数据;
检索单元,用于根据接收单元接收到的查询命令进行检索。
所述数据写入单元包括:
提取单元,用于提取所述携带有Key-Value数据的消息中的Key、Value值;
内存对象写入单元,用于将所述提取单元提取出的Key、Value值写入内存对象缓存;
Key-Value哈希数据库写入单元,用于将所述提取单元提取出的Key、Value值写入Key-Value哈希数据库。
当所述接收单元接收到的查询命令为简单主键的查询命令时,所述检索单元包括:
Value获取单元,用于根据所接收到的查询命令中携带的Key,查询得到该Key所对应的Value值。
其中,服务器还包括:全文检索建立单元,用于建立或更新全文检索的反向索引;
当所述接收单元接收到的查询命令为复杂条件的查询命令时,所述检索单元包括:
Key获取单元,用于根据接收到的查询命令和所述全文检索的反向索引,获取符合条件的Key;
Value获取单元,用于根据所获取的Key,查询得到该Key所对应的Value值。
与现有技术相比,本发明实施例提供的技术方案具有以下优点和特点:本发明具体实施例通过为内存对象缓存增加Key-Value数据库,作为持久化存储,使得在检索过程中,能够实现高并发访问下快速读写数据库中的数据,并保证数据的不丢失。同时又对Key-Value数据库进行扩展,使该数据库形成关系型数据库的结构,能够进行复杂条件的查询。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明具体实施例所涉及的一种实现实时检索的方法流程图;
图2为本发明具体实施例所涉及的一种实现实时检索的系统结构图;
图3为本发明具体实施例所涉及的一种实现实时检索的服务器结构图;
图4为本发明具体实施例所涉及的另一种实现实时检索的系统结构图;
图5为本发明具体实施例所涉及的数据写入方法流程图;
图6为本发明具体实施例所涉及的扩展后的Key-Value哈希数据库的结构图;
图7为本发明具体实施例所涉及的复杂条件的查询方法流程图;
图8为本发明具体实施例所涉及的简单主键查询方法流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明具体实施例提供了一种实现实时检索的方法,具体流程如图1所示:
步骤101:将Key-Value哈希数据库进行扩展,形成关系型数据库结构。
步骤102:接收客户端发送的携带有Key-Value数据的消息,根据所述消息向内存对象缓存和所述扩展后的Key-Value哈希数据库写入数据。
由于有可能在数据检索阶段,接收到复杂条件的查询命令,因此,还可以根据所写入的Key-Value数据建立或更新全文检索的反向索引。
步骤103:接收客户端发送的查询命令,并根据所述查询命令进行检索。
此步骤中,由于查询命令有用于进行全文检索的复杂条件的查询命令和简单主键查询命令,因此,查询方式上也将存在一定差别。当收到的查询命令为复杂条件的查询命令时,要通过事先建立的全文检索的反向索引来进行相关数据的检索;而当收到的查询命令为简单主键查询命令时,可直接根据查询命令到内存对象缓存中进行相关数据的检索。
相应地,本发明具体实施例还提供了一套实现实时检索的系统,具体结构如图2所示,该系统包括:客户端201,用于发送携带有Key-Value数据的消息或查询命令;服务器202,用于接收携带有Key-Value数据的消息,根据所述消息向内存对象缓存和所述扩展后的Key-Value哈希数据库写入数据,或者,用于接收查询命令,根据所述查询命令进行检索。
其中,服务器具体结构如图3所示,包括:
接收单元301,用于接收携带有Key-Value数据的消息或查询命令;
数据写入单元302,用于根据接收单元接收到的携带有Key-Value数据的消息,向内存对象缓存和所述扩展后的Key-Value哈希数据库写入数据;
该单元可进一步包括:
提取单元:用于提取所述携带有Key-Value数据的消息中的Key、Value值;
内存对象写入单元:用于将所述提取单元提取出的Key、Value值写入内存对象缓存;
Key-Value哈希数据库写入单元,用于将所述提取单元提取出的Key、Value值写入Key-Value哈希数据库。
检索单元303,用于根据接收单元接收到的查询命令进行检索。
鉴于可能存在复杂条件的查询,相应地,该系统还可包括:全文检索建立单元,用于建立或更新全文检索的反向索引。针对复杂条件的查询,检索单元303还可进一步包括:
Key获取单元,用于根据接收到的查询命令和所述全文检索的反向索引,获取符合条件的Key;
Value获取单元,用于根据所获取的Key,查询得到该Key所对应的Value值。
而针对简单主键的查询,检索单元303只需包括Value获取单元即可。
另外,本发明具体实施例还提供了另外一套实现实时检索的系统,具体结构如图4所示,该系统包括Key-Value哈希数据库单元401和内存对象缓存单元402。其中,Key-Value哈希数据库单元401用于Key-Value数据的写入,并对所述Key-Value数据以关系型数据结构进行存储,接到查询命令后,从中读取数据;内存对象缓存单元402,用于Key-Value数据的写入,并对所述Key-Value数据进行存储,接到查询命令后,从中读取数据。
针对复杂条件的查询,该系统还可包括全文检索单元403,用于根据所写入的Key-Value数据,建立或更新全文检索的反向索引,在接到复杂条件的查询命令后,从中获取符合查询条件的Key。
下面,结合以上方法、系统以及具体的应用场景,对本发明做进一步的详细说明,具体步骤如图5所示:
步骤501:对普通Key-Value哈希数据库进行扩展,形成关系型数据库中表与字段的结构。
在该步骤中,将Key-Value哈希数据库进行扩展,形成如图6所示的结构,其中,一组Key和Value分别对应不同的Name,该Name即对应关系型数据库二维结构中行或列的名称。在该数据库中,数据的写入和读取仍按照普通Key-Value哈希数据库中Key来进行。
在数据库的基本模式建立完成后,需要进行数据的写入工作,具体流程如下所示:
步骤502:客户端应用程序将携带有Key-Value数据和写入命令的消息提交给服务器端。
在该步骤中,客户端应用程序首先通过TCP/UDP协议与服务器端通信,而具体采用面向连接的TCP协议还是无连接的UDP协议,可以根据实际应用来进行选择,在此并不做特殊规定,并将相关数据和写入命令提交给服务器端后,服务器端相应地在网络通信层进行接收。
步骤503:在服务器端,网络通信层在接收到数据后,将该数据交给控制层处理。
在该步骤中,服务器端的控制层首先对接收到的数据进行分析,并相应地提取写入命令、Key值和Value值。
步骤504:控制层将提取出来的Key值和Value值写入内存对象缓存单元。
在该步骤中,写入内存的数据以哈希模式进行存放。
步骤505:控制层将Key值和Value值写入扩展的Key-Value哈希数据库单元。
步骤506:控制层将每一组“Name、Value”分别更新到实时全文检索单元中的反向索引中,完成全文检索索引的实时更新。
其中,反向索引是一种索引结构,在全文检索方面,该索引存储了单词与单词自身在一个或多个文档中所在位置之间的映射。
至此,数据写入流程全部完成。
在用户对信息进行查询时,需要从数据库中读取相关数据,其中数据的读取流程如下所示,对于普通用户来说,在查询过程中,用户只知道要查询的关键字,而对于该关键字所对应的Key,则无法直接获取,需要通过相关查询进行获取,该种查询可以认为是复杂条件的查询;而对于数据库工作人员来说,在查询过程中,可以直接输入携带有Key的查询命令,则该种查询被认为是简单主键查询。针对上述两种查询方式,分别做具体说明。首先对复杂条件查询进行说明,具体流程如图7所示:
步骤701:客户端将查询命令提交给服务器端。
在该步骤中,客户端应用程序首先通过TCP/UDP协议与服务器端通信,而具体采用面向连接的TCP协议还是无连接的UDP协议,可以根据实际应用来进行选择,在此并不做特殊规定,并将查询命令提交给服务器端后,服务器端相应地在网络通信层进行接收。
步骤702:在服务器端,网络通信层在接收到查询命令后,将该查询命令交给控制层处理。
在该步骤中,控制层根据接收到的查询命令,分析该次查询属于复杂条件查询还是简单主键查询。如果查询命令中未携带有查询对象所对应的Key,则认为该次查询属于复杂条件查询,进入步骤703。
步骤703:控制层将该次查询命令发送至实时全文检索单元,由全文检索单元进行相关信息的查询。
该步骤中,根据查询命令中携带的查询对象和实时全文检索单元中所建立的反向索引,获取查询对象所对应的Key。
步骤704:实时全文检索单元进行查询后,将符合条件的Key值返回给控制层。
步骤705:控制层接收从实时全文检索单元返回的Key值,并将该Key值交给内存对象缓存单元,以进行查询。
步骤706-步骤707:内存对象缓存单元根据所接收到的Key值进行查询,并判断内存对象缓存中是否有该Key值。
在该步骤中,存在两种查询结果,当在内存对象缓存单元中查询到了该Key值,则进入步骤707;如果查询后,该Key值并没有被储存于内存对象缓存单元中,则进入步骤711。其中,内存对象缓存单元中没有该Key值,可能是由于服务器断电、重启或者是程序的重启造成的内存中数据丢失。
步骤708:内存对象缓存单元将Key值对应的Value值返回给控制层。
步骤709:控制层将所接收到的Value值返回给网络通信层。
步骤710:网络通信层将该Value值通过网络返回给客户端应用程序。
步骤711:内存对象缓存单元返回给控制层空信息。
步骤712:控制层将Key值在发送给扩展后的Key-Value哈希数据库,以进行查询。
步骤713:Key-Value哈希数据库根据所接收到的Key值进行查询,并将查询到的Key值对应的Value值返回给控制层。
在该步骤之后,控制层一方面需要将查询结果返回给网络通信层,并且之后的流程如步骤709至步骤710所示。另一方面,由于内存对象缓存单元中数据产生了丢失,因此,控制层需要将其进行更新和补充,如步骤714所示。
步骤714:控制层将从Key-Value哈希数据库读取出的Key和Value值写入到内存对象缓存单元中,以进行内存对象缓存单元数据的及时更新和补充。
至此,一个复杂条件的查询过程全部结束。对于前面所提到的简单主键的查询,其具体流程如下所示:
步骤801:客户端将查询命令提交给服务器端。
在该步骤中,客户端应用程序首先通过TCP/UDP协议与服务器端通信,而具体采用面向连接的TCP协议还是无连接的UDP协议,可以根据实际应用来进行选择,在此并不做特殊规定,并将查询命令提交给服务器端后,服务器端相应地在网络通信层进行接收。
步骤802:在服务器端,网络通信层在接收到查询命令后,将该查询命令交给控制层处理。
在该步骤中,控制层根据接收到的查询命令,分析该次查询属于复杂条件查询还是简单主键查询。如果查询命令中直接携带有查询对象所对应的Key,则认为该次查询属于简单主键查询,进入步骤803。
步骤803:控制层将简单主键查询命令中所携带的Key值交给内存对象缓存单元,以进行查询。
步骤804-步骤805:内存对象缓存单元根据所接收到的Key值进行查询,并判断内存对象缓存中是否有该Key值。
在该步骤中,存在两种查询结果,当在内存对象缓存单元中查询到了该Key值,则进入步骤806;如果查询后,该Key值并没有被储存于内存对象缓存单元中,则进入步骤809。其中,内存对象缓存单元中没有该Key值,可能是由于服务器断电、重启或者是程序的重启造成的内存中数据丢失。
步骤806:内存对象缓存单元将Key值对应的Value值返回给控制层。
步骤807:控制层将所接收到的Value值返回给网络通信层。
步骤808:网络通信层将该Value值通过网络返回给客户端应用程序。
步骤809:内存对象缓存单元返回给控制层空信息。
步骤810:控制层将Key值在发送给扩展后的Key-Value哈希数据库,以进行查询。
步骤811:Key-Value哈希数据库根据所接收到的Key值进行查询,并将查询到的Key值对应的Value值返回给控制层。
在该步骤之后,控制层一方面需要将查询结果返回给网络通信层,并且之后的流程如步骤807至步骤808所示。另一方面,由于内存对象缓存单元中数据产生了丢失,因此,控制层需要将其进行更新和补充,如步骤812所示。
步骤812:控制层将从Key-Value哈希数据库读取出的Key和Value值写入到内存对象缓存单元中,以进行内存对象缓存单元数据的及时更新和补充。
至此,一个简单主键的查询过程全部结束。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (15)
1.一种实现实时检索的方法,其特征在于,对键-值Key-Value哈希数据库进行扩展,将Key-Value哈希数据库中的每一组Key和Value分别对应不同的名称Name,所述Name对应关系型数据库二维结构中行或列的名称,形成关系型数据库结构之后,在扩展后的所述Key-Value哈希数据库中,按照Key-Value哈希数据库中的Key来写入和读取数据,包括步骤:
接收客户端发送的携带有Key-Value数据的消息,根据所述消息中的Key和Value值向内存对象缓存和所述扩展后的Key-Value哈希数据库写入数据;
接收客户端发送的查询命令,并根据所述查询命令利用所述扩展后的Key-Value哈希数据库进行检索。
2.如权利要求1所述的方法,其特征在于,所述根据消息中的Key和Value值向内存对象缓存和所述扩展后的Key-Value哈希数据库写入数据包括:
提取所述消息中的Key和Value值;
将所述Key和Value值分别写入所述内存对象缓存和所述扩展后的Key-Value哈希数据库中。
3.如权利要求1所述的方法,其特征在于,所述向内存对象缓存和所述扩展后的Key-Value哈希数据库写入数据之后,还包括:建立或更新全文检索的反向索引,所述反向索引是在全文检索方面,存储了单词与单词自身在一个或多个文档中所在位置之间的映射的索引结构。
4.如权利要求3所述的方法,其特征在于,当所述查询命令为复杂条件的查询命令时,所述根据所述查询命令利用所述扩展后的Key-Value哈希数据库进行检索包括:
根据所述查询命令和全文检索的反向索引,获取符合条件的Key;
通过所获取的Key,查询所述Key所对应的Value值;
其中,所述复杂条件的查询命令是在查询过程中,只知道要查询的关键字,而对于该关键字所对应的Key,则无法直接获取,需要通过相关查询进行获取。
5.如权利要求1所述的方法,其特征在于,当所述查询命令为简单主键的查询命令时,所述根据所述查询命令利用所述扩展后的Key-Value哈希数据库进行检索包括:
根据查询命令中携带的Key,查询所述Key所对应的Value值;
其中,所述简单主键的查询命令为在查询过程中,可以直接输入携带有Key的查询命令。
6.如权利要求4或5所述的方法,其特征在于,所述查询所述Key所对应的Value值包括:
在内存对象缓存中对所述Key进行查询,当所述内存对象缓存中存在所述Key,则获取所述Key对应的Value值。
7.如权利要求4或5所述的方法,其特征在于,所述查询所述Key所对应的Value值包括:
在内存对象缓存中对所述Key进行查询,当所述内存对象缓存中不存在所述Key,则在所述扩展后的Key-Value哈希数据库中对所述Key进行查询,并获取所述Key对应的Value值。
8.如权利要求7所述的方法,其特征在于,获取所述Key对应的Value值之后进一步包括:将所述Key和其所对应的Value值写入内存对象缓存。
9.一种实现实时检索的系统,其特征在于,包括:
键-值Key-Value哈希数据库单元,用于提取携带有Key-Value数据的消息中的Key和Value值,将所述Key和Value值写入扩展后的Key-Value哈希数据库中,并对所述Key-Value数据以关系型数据结构进行存储,接到查询命令后,从中读取数据,其中,扩展Key-Value哈希数据库具体为将所述Key-Value哈希数据库中的每一组Key和Value分别对应不同的名称Name,所述Name对应关系型数据库二维结构中行或列的名称,在扩展后的所述Key-Value哈希数据库中,按照Key-Value哈希数据库中的Key来写入和读取数据;
内存对象缓存单元,用于提取携带有Key-Value数据的消息中的Key和Value值,将所述Key和Value值写入内存对象缓存中,并对所述Key-Value数据进行存储,接到查询命令后,从扩展后的Key-Value哈希数据库中读取数据。
10.如权利要求9所述的系统,其特征在于,还进一步包括:
全文检索单元,用于根据所写入的Key-Value数据,建立或更新全文检索的反向索引,在接到复杂条件的查询命令后,从中获取符合查询条件的Key;
其中,所述反向索引是在全文检索方面,存储了单词与单词自身在一个或多个文档中所在位置之间的映射的索引结构;所述复杂条件的查询命令是在查询过程中,只知道要查询的关键字,而对于该关键字所对应的Key,则无法直接获取,需要通过相关查询进行获取。
11.一种实现实时检索的系统,其特征在于,包括:客户端和服务器,其中,客户端,用于发送携带有键-值Key-Value数据的消息,以及进一步发送查询命令;
服务器,用于接收携带有Key-Value数据的消息,根据所述消息中的Key和Value值向内存对象缓存和扩展后的Key-Value哈希数据库写入数据,其中,扩展Key-Value哈希数据库具体为将Key-Value哈希数据库中的每一组Key和Value分别对应不同的名称Name,所述Name对应关系型数据库二维结构中行或列的名称,形成关系型数据库结构之后,在扩展后的所述Key-Value哈希数据库中,按照Key-Value哈希数据库中的Key来写入和读取数据,并用于进一步接收查询命令,根据所述查询命令利用所述扩展后的Key-Value哈希数据库进行检索。
12.一种实现实时检索的服务器,其特征在于,包括:
接收单元,用于接收携带有键-值Key-Value数据的消息,以及进一步接收查询命令;
数据写入单元,用于根据接收单元接收到的携带有Key-Value数据的消息中的Key和Value值,向内存对象缓存和扩展后的Key-Value哈希数据库写入数据,其中,扩展Key-Value哈希数据库具体为将Key-Value哈希数据库中的每一组Key和Value分别对应不同的名称Name,所述Name对应关系型数据库二维结构中行或列的名称,形成关系型数据库结构之后,在扩展后的所述Key-Value哈希数据库中,按照Key-Value哈希数据库中的Key来写入和读取数据;
检索单元,用于根据接收单元接收到的查询命令利用所述扩展后的Key-Value哈希数据库进行检索。
13.如权利要求12所述的服务器,其特征在于,所述数据写入单元包括:
提取单元,用于提取所述携带有Key-Value数据的消息中的Key和Value值;
内存对象写入单元,用于将所述提取单元提取出的Key和Value值写入内存对象缓存;
Key-Value哈希数据库写入单元,用于将所述提取单元提取出的Key和Value值写入扩展后的Key-Value哈希数据库。
14.如权利要求12所述的服务器,其特征在于,当所述接收单元接收到的查询命令为简单主键的查询命令时,所述检索单元包括:
Value获取单元,用于根据所接收到的查询命令中携带的Key,查询得到该Key所对应的Value值;
其中,所述简单主键的查询命令为在查询过程中,可以直接输入携带有Key的查询命令。
15.如权利要求12所述的服务器,其特征在于,还包括:全文检索建立单元,用于建立或更新全文检索的反向索引;
当所述接收单元接收到的查询命令为复杂条件的查询命令时,所述检索单元包括:
Key获取单元,用于根据接收到的查询命令和所述全文检索的反向索引,获取符合条件的Key;
Value获取单元,用于根据所获取的Key,查询得到该Key所对应的Value值;
其中,所述反向索引是在全文检索方面,存储了单词与单词自身在一个或多个文档中所在位置之间的映射的索引结构;所述复杂条件的查询命令是在查询过程中,只知道要查询的关键字,而对于该关键字所对应的Key,则无法直接获取,需要通过相关查询进行获取。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100809640A CN101510209B (zh) | 2009-03-30 | 2009-03-30 | 实现实时检索的方法、系统和服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100809640A CN101510209B (zh) | 2009-03-30 | 2009-03-30 | 实现实时检索的方法、系统和服务器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101510209A CN101510209A (zh) | 2009-08-19 |
CN101510209B true CN101510209B (zh) | 2012-05-30 |
Family
ID=41002609
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009100809640A Active CN101510209B (zh) | 2009-03-30 | 2009-03-30 | 实现实时检索的方法、系统和服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101510209B (zh) |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102622361B (zh) * | 2011-01-28 | 2013-11-27 | 天脉聚源(北京)传媒科技有限公司 | 一种数据库查询方法 |
CN102393855B (zh) * | 2011-10-18 | 2013-07-31 | 国电南瑞科技股份有限公司 | 一种过程数据有损压缩比动态控制方法 |
CN102725755B (zh) * | 2011-12-31 | 2014-07-09 | 华为技术有限公司 | 文件访问方法及系统 |
CN103312624B (zh) * | 2012-03-09 | 2016-03-09 | 腾讯科技(深圳)有限公司 | 一种消息队列服务系统和方法 |
CN103425694B (zh) * | 2012-05-23 | 2016-12-14 | 北京神州泰岳软件股份有限公司 | 关系型数据的搜索方法和装置 |
CN104572737B (zh) * | 2013-10-23 | 2018-01-30 | 阿里巴巴集团控股有限公司 | 数据存储辅助方法及系统 |
CN103593477A (zh) * | 2013-11-29 | 2014-02-19 | 华为技术有限公司 | 一种哈希数据库的配置方法和装置 |
CN105373541B (zh) * | 2014-08-22 | 2019-03-22 | 博雅网络游戏开发(深圳)有限公司 | 数据库的数据操作请求的处理方法和系统 |
US10204013B2 (en) * | 2014-09-03 | 2019-02-12 | Cisco Technology, Inc. | System and method for maintaining a distributed and fault-tolerant state over an information centric network |
CN104268280B (zh) * | 2014-10-17 | 2017-07-07 | 中国人民解放军国防科学技术大学 | 一种基于键值数据库的层次化存储与查询方法 |
CN104298774B (zh) * | 2014-10-31 | 2018-04-03 | 北京思特奇信息技术股份有限公司 | 一种利用函数查询哈希表的方法及系统 |
CN104317926B (zh) * | 2014-10-31 | 2017-10-17 | 北京思特奇信息技术股份有限公司 | 一种持久化的数据存储和查询方法及对应的装置和系统 |
CN106156166B (zh) * | 2015-04-16 | 2020-11-10 | 深圳市腾讯计算机系统有限公司 | 关系链查询系统、文档检索方法、索引建立方法及装置 |
CN105955895B (zh) * | 2016-04-20 | 2019-04-12 | 北京小米移动软件有限公司 | 分布式消息队列的逻辑控制方法和装置、数据处理设备 |
CN106909636B (zh) * | 2017-02-10 | 2019-06-14 | 广东广信通信服务有限公司 | 一种基于中间件的数据处理方法及系统 |
CN107766503A (zh) * | 2017-10-20 | 2018-03-06 | 福建中金在线信息科技有限公司 | 基于redis的数据快速查询方法及装置 |
CN108446363B (zh) * | 2018-03-13 | 2021-05-25 | 北京奇安信科技有限公司 | 一种kv引擎的数据处理方法及装置 |
CN109542892B (zh) * | 2018-10-19 | 2020-10-23 | 北京全路通信信号研究设计院集团有限公司 | 一种实时数据库的关系化实现方法、装置及系统 |
CN109726219A (zh) * | 2018-11-27 | 2019-05-07 | 中科恒运股份有限公司 | 数据查询的方法及终端设备 |
CN109977274B (zh) * | 2019-03-31 | 2021-05-11 | 杭州复杂美科技有限公司 | 一种数据查询和验证方法、系统、设备及存储介质 |
CN110109924A (zh) * | 2019-04-23 | 2019-08-09 | 重庆紫光华山智安科技有限公司 | 检索方法及装置 |
CN110222030B (zh) * | 2019-05-13 | 2021-08-06 | 福建天泉教育科技有限公司 | 数据库动态扩容的方法、存储介质 |
CN113268488B (zh) * | 2020-02-14 | 2023-11-03 | 北京京东振世信息技术有限公司 | 数据持久化的方法和装置 |
CN113742519A (zh) * | 2021-08-31 | 2021-12-03 | 杭州登虹科技有限公司 | 一种多对象存储的云视频Timeline存储方法和系统 |
CN114328599A (zh) * | 2021-12-21 | 2022-04-12 | 航天信息股份有限公司 | 一种分析数据标准与约束对象映射关系的方法及系统 |
-
2009
- 2009-03-30 CN CN2009100809640A patent/CN101510209B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN101510209A (zh) | 2009-08-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101510209B (zh) | 实现实时检索的方法、系统和服务器 | |
CN112534396B (zh) | 数据库系统中的日记表 | |
CN108874971B (zh) | 一种应用于海量标签化实体数据存储的工具和方法 | |
CN100543750C (zh) | 一种基于web应用的矩阵式数据缓存方法及装置 | |
CN102169507B (zh) | 一种分布式实时搜索引擎的实现方法 | |
CN101876983B (zh) | 数据库分区方法与系统 | |
CN102880685B (zh) | 一种时间密集大数据量的b/s分区间分页查询方法 | |
CN1811757B (zh) | 用于定位万维网页以及计算机网络文件的系统和方法 | |
CN101770484B (zh) | 一种网站更新实时发布的方法及系统 | |
CN102339315B (zh) | 一种广告数据的索引更新方法和系统 | |
CN102033912A (zh) | 一种分布式数据库访问方法及系统 | |
CN102609488B (zh) | 客户端及其数据查询方法、服务端和数据查询系统 | |
CN100594497C (zh) | 一种实现网络查询缓存的系统和查询方法 | |
CN104778270A (zh) | 一种用于多文件的存储方法 | |
CN104679898A (zh) | 一种大数据访问方法 | |
CN103177056A (zh) | 存储为行存储和列存储二者的混合数据库表 | |
CN103177058A (zh) | 存储为行存储和列存储二者的混合数据库表 | |
CN103177055A (zh) | 存储为行存储和列存储二者的混合数据库表 | |
CN104301360A (zh) | 一种日志数据记录的方法、日志服务器及系统 | |
CN101216840A (zh) | 一种数据查询方法和一种数据查询系统 | |
CN105100051A (zh) | 实现数据资源访问权限控制的方法及系统 | |
CN108717457B (zh) | 一种电子商务平台大数据处理方法和系统 | |
AU2017243870A1 (en) | "Methods and systems for database optimisation" | |
CN102968456B (zh) | 一种栅格数据读取处理方法和装置 | |
CN102355499B (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 |