CN106855890A - 一种实现高性能数据库最终一致性全文检索的方法 - Google Patents

一种实现高性能数据库最终一致性全文检索的方法 Download PDF

Info

Publication number
CN106855890A
CN106855890A CN201710013633.XA CN201710013633A CN106855890A CN 106855890 A CN106855890 A CN 106855890A CN 201710013633 A CN201710013633 A CN 201710013633A CN 106855890 A CN106855890 A CN 106855890A
Authority
CN
China
Prior art keywords
database
log file
instrument
search engine
data
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
CN201710013633.XA
Other languages
English (en)
Other versions
CN106855890B (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.)
Guangzhou Jushan Database Software Co ltd
Original Assignee
Guangzhou Big Tree Software Development Co 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 Guangzhou Big Tree Software Development Co Ltd filed Critical Guangzhou Big Tree Software Development Co Ltd
Priority to CN201710013633.XA priority Critical patent/CN106855890B/zh
Publication of CN106855890A publication Critical patent/CN106855890A/zh
Application granted granted Critical
Publication of CN106855890B publication Critical patent/CN106855890B/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/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/3331Query processing
    • G06F16/334Query execution

Landscapes

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

Abstract

本发明公开了一种实现高性能数据库最终一致性全文检索的方法,将搜索引擎通过连接器与数据库连接,通过数据库临时循环日志文件的建立,在数据库内工具的辅助下,使搜索引擎内的数据内容始终与数据库中需要进行全文检索字段的内容保持一致,确保了检索过程的准确性,提高了检索效率,避免了数据库内部直接使用倒排索引方式带来的开发和维护难度大的问题以及传统双写模式带来的稳定性差的弊端,具有数据内容完整,建立过程简单,使用方便的优点,特别适合在云端进行数据检索使用。

Description

一种实现高性能数据库最终一致性全文检索的方法
技术领域
本发明涉及一种数据库的检索方法,特别涉及一种可实现高性能数据库最终一致性的全文检索方法。
背景技术
在全球,新型分布式数据库存在多种不同的技术产品,例如:MongoDB、Cassandra、HBase等。国内则包括SequoiaDB巨杉数据库,阿里巴巴的OceanBase等。这些数据库的核心功能都是记录的存储与检索。
一般来说,数据库的精确检索机制包括对字段的等于、大于小于、大于等于、小于等于、不等于等操作,而模糊查询一般支持SQL的LIKE机制或正则表达式。在执行效率上,模糊查询的效率远远低于建立好索引的精确检索,这是由于大部分数据库使用树形索引、或bitmap索引,对于支持模糊检索的倒排索引支持不多。
在现有应用程序中支持全文检索有两种形式:一种形式是在业务端以双写的方式,一方面向数据库写入记录,得到返回结果中的记录ID后,再向搜索引擎写入一次。这样搜索引擎就有了一个记录ID,全文检索出ID后再从数据库查一遍,这样就可得到最终的检索结果。这种做法虽然简单、方便,但可能造成存储数据的不一致性,尤其是在并发存在的场景下很容易出现多个任务对同一条记录进行更改,造成搜索引擎和数据库产生不一致。最坏情况下,如果应用服务器在写入数据库后崩溃,没有来得及写入到搜索引擎中,那么搜索引擎就会检索不到这条记录,造成检索失败。另一种形式是在数据库内部直接实现倒排索引,但开发和维护难度则大大增加,后期使用成本和使用复杂性高,普及性差。
如何改善这一情况,开发一种针对高性能数据库的全文检索模式,就成为本发明所要解决的问题。
发明内容
鉴于上述现有情况和不足,本发明旨在提供一种在不直接实现内置倒排索引的前提下,结合数据库内部处理机制,实现数据库与第三方搜索引擎之间的数据同步,并利用第三方搜索引擎可靠、稳定的实现高性能数据库最终一致性的全文检索方法,以消除现有传统双写机制带来的稳定性和一致性差的问题,大幅提升检索性能,保证检索质量。
本发明的目的是利用搜索引擎进行全文检索,而如何设计数据库内部的数据处理流程,确保数据库与搜索引擎之间的安全交互,确保即使在数据切分、节点崩溃、网络异常等情况下也不会出现问题,确保数据库引擎与搜索引擎之间的数据一致性和同步性,且对于应用程序做到完全透明,都是本发明所述方法需要考虑和解决的问题。
本发明是通过以下技术方案来实现的:
一种实现高性能数据库最终一致性全文检索的方法,具体步骤包括:
步骤1、将搜索引擎通过连接器与数据库连接。
步骤2、当数据写入数据库后记录入一个临时循环日志文件中,临时循环日志文件中包括有需要索引的字段内容以及记录的ID。
步骤3、使用数据库内的工具顺序读取临时循环日志文件,并根据对临时循环日志文件的操作通过连接器将相应需要检索的字段内容写入到搜索引擎中,同时,工具记录已完成索引的临时循环日志文件偏移。
步骤4、工具根据已完成索引的临时循环日志文件偏移,持续读取临时循环日志文件直到最后,并将每次操作的相应内容通过连接器写入到搜索引擎中,完成搜索引擎内数据的建立。
步骤5、工具监听后续数据到来,如有数据来到,重复上述步骤4;否则,继续步骤6。
步骤6、通过搜索引擎键入要检索的关键字,得到返回的主键ID,将主键ID通过连接器输入到数据库,并通过连接器读取该主键ID对应的数据库记录,完成全文检索。
所述步骤2还包括:如果数据在写入临时循环日志之前数据库发生故障,在下次数据库恢复时进行回滚,完成数据库和临时循环日志文件的建立。
所述步骤3还包括:如果在读取临时循环日志文件时连接器发生故障,数据库重启后,工具根据已完成索引的临时循环日志文件偏移读取后续日志内数据并写入到搜索引擎中。
所述步骤3还包括:如果工具在写入搜索引擎后、更新偏移前崩溃,数据库重启,工具根据之前记录的最后成功偏移重新读取相应的临时循环日志文件的内容并写入到搜索引擎中,具体写入过程包括:如工具为INSERT操作,此操作被工具端忽略;如工具为UPDATE操作,此操作被确认执行;如工具为DELETE操作,此操作被工具端忽略。
所述步骤2中,字段内容包括:一个作为记录指针的记录RID,包括数据页和偏移,一个代表增删改操作的操作符和一个相对于增改操作需要索引的全文字段的长字符串。
本发明所述一种实现高性能数据库最终一致性全文检索的方法的有益效果包括:
1、有效实现了搜索引擎内数据内容与数据库中需要进行全文检索字段内容的一致性,保证了检索过程的准确性,提高了检索效率。
2、全面消除和克服了数据建设和传送过程中可能出现的各种问题,保证了数据库以及搜索引擎中数据建立的完整性和准确性。
3、搜索引擎对业务完全透明,业务不需要进行双写,仅需要写入数据库后即可返回,简化了数据建立和使用过程。
4、避免了数据库内部直接使用倒排索引方式带来的开发和维护难度大的问题以及传统双写模式带来的稳定性差的弊端。
具体实施方式
本发明的中心思想是:通过对临时循环日志文件复制的方式,使数据库与搜索引擎的数据保持最终一致,为搜索引擎的正常、准确搜索提供支持。
本发明所述的一种实现高性能数据库最终一致性全文检索的方法,具体步骤包括:
步骤1、将搜索引擎通过连接器与数据库连接。
连接器作为一个独立运行的进程,随着数据库的启动而启动,并作为传输通道将数据库与搜索引擎联系在一起。
步骤2、当数据写入数据库后记录入一个临时循环日志文件中,临时循环日志文件中包括有需要索引的字段内容以及记录的ID,字段内容包括:一个作为记录指针的记录RID,包括数据页和偏移;一个代表增删改操作的操作符;一个相对于增改操作需要索引的全文字段的长字符串。其中,如果数据在写入临时循环日志之前数据库发生故障,则在下次数据库恢复时进行回滚,完成数据库和临时循环日志文件的建立。
当然,如果数据库在工具读取临时循环日志文件之后故障,则数据库与搜索引擎中均会存在该记录。由于工具是独立进程,所以不需要做特殊处理。
步骤3、使用数据库内的工具顺序读取临时循环日志文件,并根据对临时循环日志文件的操作通过连接器将相应需要检索字段的内容写入到搜索引擎中,同时,工具记录已完成索引的临时循环日志文件偏移。如果在读取临时循环日志文件时连接器发生故障,即传送通道发生故障,则数据库重启后,工具根据已完成索引的临时循环日志文件偏移读取后续日志内数据并写入到搜索引擎中;如果工具在写入搜索引擎后、更新偏移前崩溃,则内容已被写入搜索引擎中,而偏移则无记录,此时数据库重启,工具根据之前记录的最后成功偏移重新读取相应的临时循环日志文件的内容并写入到搜索引擎中,其具体写入过程包括:如工具为INSERT操作,由于增加的内容已被写入到搜索引擎中,此操作被工具端忽略;如工具为UPDATE操作,由于更新的内容已被写入到搜索引擎中,再做一次更新,此操作被确认执行;如工具为DELETE操作,由于搜索引擎中相应内容已被删除,再进行删除时将找不到相应内容,故此操作被工具端忽略。
步骤4、工具根据已完成索引的临时循环日志文件偏移,持续读取临时循环日志文件直到最后,并将每次操作的相应内容通过连接器写入到搜索引擎中,完成搜索引擎内数据的建立。
此时搜索引擎内数据内容与数据库中需要进行全文检索字段的内容保持一致,为后续准确检索提供了依据。
步骤5、工具继续监听后续的数据到来,如有数据来到,重复上述步骤4;否则,继续步骤6。
步骤6、通过搜索引擎键入要检索的关键字,得到返回的主键ID,将主键ID通过连接器输入到数据库,并通过连接器读取该主键ID对应的数据库记录,全文检索完成。
整个过程在数据库内工具的帮助下,在连接器的支持下,通过临时循环日志文件的建立,使搜索引擎内的数据内容始终与数据库中需要进行全文检索字段的内容保持一致,保证了检索过程的准确性,提高了检索效率。

Claims (5)

1.一种实现高性能数据库最终一致性全文检索的方法,其特征在于,具体步骤包括:
步骤1、将搜索引擎通过连接器与数据库连接;
步骤2、当数据写入数据库后记录入一个临时循环日志文件中,临时循环日志文件中包括有需要索引的字段内容以及记录的ID;
步骤3、使用数据库内的工具顺序读取临时循环日志文件,并根据对临时循环日志文件的操作通过连接器将相应需要检索的字段内容写入到搜索引擎中,同时,工具记录已完成索引的临时循环日志文件偏移;
步骤4、工具根据已完成索引的临时循环日志文件偏移,持续读取临时循环日志文件直到最后,并将每次操作的相应内容通过连接器写入到搜索引擎中,完成搜索引擎内数据的建立;
步骤5、工具监听后续数据到来,如有数据来到,重复上述步骤4;否则,继续步骤6;
步骤6、通过搜索引擎键入要检索的关键字,得到返回的主键ID,将主键ID通过连接器输入到数据库,并通过连接器读取该主键ID对应的数据库记录,完成全文检索。
2.根据权利要求1所述的一种实现高性能数据库最终一致性全文检索的方法,其特征在于,所述步骤2还包括:如果数据在写入临时循环日志之前数据库发生故障,在下次数据库恢复时进行回滚,完成数据库和临时循环日志文件的建立。
3.根据权利要求1所述的一种实现高性能数据库最终一致性全文检索的方法,其特征在于,所述步骤3还包括:如果在读取临时循环日志文件时连接器发生故障,数据库重启后,工具根据已完成索引的临时循环日志文件偏移读取后续日志内数据并写入到搜索引擎中。
4.根据权利要求1所述的一种实现高性能数据库最终一致性全文检索的方法,其特征在于,所述步骤3还包括:如果工具在写入搜索引擎后、更新偏移前崩溃,数据库重启,工具根据之前记录的最后成功偏移重新读取相应的临时循环日志文件的内容并写入到搜索引擎中,具体写入过程包括:如工具为INSERT操作,此操作被工具端忽略;如工具为UPDATE操作,此操作被确认执行;如工具为DELETE操作,此操作被工具端忽略。
5.根据权利要求1所述的一种实现高性能数据库最终一致性全文检索的方法,其特征在于,所述步骤2中,字段内容包括:一个作为记录指针的记录RID,包括数据页和偏移,一个代表增删改操作的操作符和一个相对于增改操作需要索引的全文字段的长字符串。
CN201710013633.XA 2017-01-09 2017-01-09 一种实现高性能数据库最终一致性全文检索的方法 Active CN106855890B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710013633.XA CN106855890B (zh) 2017-01-09 2017-01-09 一种实现高性能数据库最终一致性全文检索的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710013633.XA CN106855890B (zh) 2017-01-09 2017-01-09 一种实现高性能数据库最终一致性全文检索的方法

Publications (2)

Publication Number Publication Date
CN106855890A true CN106855890A (zh) 2017-06-16
CN106855890B CN106855890B (zh) 2020-07-28

Family

ID=59126085

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710013633.XA Active CN106855890B (zh) 2017-01-09 2017-01-09 一种实现高性能数据库最终一致性全文检索的方法

Country Status (1)

Country Link
CN (1) CN106855890B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107330077A (zh) * 2017-07-01 2017-11-07 广东电网有限责任公司信息中心 一种数字档案馆档案的检索方法
CN114722125A (zh) * 2022-04-11 2022-07-08 京东科技信息技术有限公司 数据库事务处理的方法、装置、设备和计算机可读介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080313218A1 (en) * 2006-12-28 2008-12-18 International Business Machines Corporation Method for checking index consistency in database
CN103365914A (zh) * 2012-04-10 2013-10-23 北京易盟天地信息技术有限公司 基于搜索引擎的数据库查询系统和方法
CN103744913A (zh) * 2013-12-27 2014-04-23 高新兴科技集团股份有限公司 一种基于搜索引擎技术的数据库检索方法
CN104090987A (zh) * 2014-07-28 2014-10-08 华中科技大学 一种历史数据存储及索引方法
CN104572505A (zh) * 2015-02-03 2015-04-29 济南大学 一种保证海量数据缓存最终一致性的系统及方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080313218A1 (en) * 2006-12-28 2008-12-18 International Business Machines Corporation Method for checking index consistency in database
CN103365914A (zh) * 2012-04-10 2013-10-23 北京易盟天地信息技术有限公司 基于搜索引擎的数据库查询系统和方法
CN103744913A (zh) * 2013-12-27 2014-04-23 高新兴科技集团股份有限公司 一种基于搜索引擎技术的数据库检索方法
CN104090987A (zh) * 2014-07-28 2014-10-08 华中科技大学 一种历史数据存储及索引方法
CN104572505A (zh) * 2015-02-03 2015-04-29 济南大学 一种保证海量数据缓存最终一致性的系统及方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107330077A (zh) * 2017-07-01 2017-11-07 广东电网有限责任公司信息中心 一种数字档案馆档案的检索方法
CN107330077B (zh) * 2017-07-01 2020-07-14 广东电网有限责任公司信息中心 一种数字档案馆档案的检索方法
CN114722125A (zh) * 2022-04-11 2022-07-08 京东科技信息技术有限公司 数据库事务处理的方法、装置、设备和计算机可读介质

Also Published As

Publication number Publication date
CN106855890B (zh) 2020-07-28

Similar Documents

Publication Publication Date Title
CN106227800B (zh) 一种高度关联大数据的存储方法及管理系统
CN109299100B (zh) 管理内存数据及在内存中维护数据的方法和系统
EP2410442B1 (en) Optimizing search for insert-only databases and write-once data storage
CN103765393B (zh) 存储系统
US8122040B2 (en) Method of integrating remote databases by automated client scoping of update requests over a communications network
CN107423422B (zh) 基于网格的空间数据分布式存储及检索方法和系统
CN104933133B (zh) 分布式文件系统中的元数据快照存储和访问方法
CN109522290B (zh) 一种HBase数据块恢复及数据记录提取方法
US9665607B2 (en) Methods and apparatus for organizing data in a database
CN105373541B (zh) 数据库的数据操作请求的处理方法和系统
KR101429046B1 (ko) 키-밸류 구조를 가지는 데이터베이스에서 데이터를 검색, 입력, 삭제 및 가비지 컬렉션하는 방법
CN101566986A (zh) 联机事务处理中的数据处理方法和装置
CN108369587A (zh) 创建用于交换的表
CN102955792A (zh) 一种实时全文搜索引擎事务处理的实现方法
CN104424258A (zh) 多维数据查询的方法、查询服务器、列存储服务器及系统
CN104424219B (zh) 一种数据文件的管理方法及装置
US20140156603A1 (en) Method and an apparatus for splitting and recovering data in a power system
CN103778133A (zh) 一种数据库对象的变更方法及装置
CN102339315A (zh) 一种广告数据的索引更新方法和系统
CN103500183A (zh) 一种基于多个相关字段组合索引存储结构及建立、查询与维护方法
CN103744913A (zh) 一种基于搜索引擎技术的数据库检索方法
CN108984686A (zh) 一种基于日志合并的分布式文件系统索引方法和装置
CN106156227A (zh) 一种数据传输方法及装置
Kleppmann Designing data-intensive applications
CN102567415A (zh) 一种数据库的控制方法和装置

Legal Events

Date Code Title Description
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20191029

Address after: 518000 1005, 10th floor, Tsinghua Information Port scientific research building, North District, high tech Industrial Park, Nanshan District, Shenzhen City, Guangdong Province

Applicant after: Shenzhen Jushan Database Software Co.,Ltd.

Address before: 511400 Guangdong city of Guangzhou province Panyu District Xiaoguwei street two cross road No. 22 A1009-A1010

Applicant before: SEQUOIADB Corp.

GR01 Patent grant
GR01 Patent grant
CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: 511458 room 2101-2112, No. 167, Haibin Road, Nansha District, Guangzhou City, Guangdong Province (office only) (one address with multiple photos)

Patentee after: Guangzhou Jushan Database Software Co.,Ltd.

Address before: 518000 1005, 10th floor, scientific research building, Tsinghua information port, North District, high tech Industrial Park, Nanshan District, Shenzhen, Guangdong

Patentee before: Shenzhen Jushan Database Software Co.,Ltd.