CN116204556B - 基于搜索引擎和关系型数据库的实时对象存储查询系统 - Google Patents
基于搜索引擎和关系型数据库的实时对象存储查询系统 Download PDFInfo
- Publication number
- CN116204556B CN116204556B CN202211716141.4A CN202211716141A CN116204556B CN 116204556 B CN116204556 B CN 116204556B CN 202211716141 A CN202211716141 A CN 202211716141A CN 116204556 B CN116204556 B CN 116204556B
- Authority
- CN
- China
- Prior art keywords
- data
- water level
- query
- database
- index
- 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
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 claims description 113
- 238000000034 method Methods 0.000 claims description 32
- 230000008569 process Effects 0.000 claims description 25
- 238000013500 data storage Methods 0.000 claims description 16
- 230000000977 initiatory effect Effects 0.000 claims description 6
- 230000008030 elimination Effects 0.000 claims description 4
- 238000003379 elimination reaction Methods 0.000 claims description 4
- 230000001960 triggered effect Effects 0.000 claims description 4
- 238000012544 monitoring process Methods 0.000 claims description 3
- 238000007493 shaping process Methods 0.000 claims description 3
- 230000001360 synchronised effect Effects 0.000 abstract description 5
- 231100000279 safety data Toxicity 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 6
- 230000008859 change Effects 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000008436 biogenesis Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013481 data capture Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008092 positive effect Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000006467 substitution reaction 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/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
-
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- 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/284—Relational databases
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了基于搜索引擎和关系型数据库的实时对象存储查询系统,在查询时,已经写入索引的安全数据通过索引获取,未完成CDC数据同步写入索引的不安全数据从主数据库获取,满足了对已经存储成功数据立即通查的使用需求,实现了真正的实时系统。由于绝大多数数据是通过索引获取,只有部分未完成CDC数据同步的数据从主数据库获取,可支持的业务数量级别取决于主数据库的性能,能够达到亿级别以上,即支持亿级数据低延时操作。对于少量的已成功存入主数据库,但尚未完成CDC同步写入索引的不安全数据,使用主数据库存储的JSON字段的特性从主数据库中获取数据,能够确保成功存入数据库的数据被立即查询,同时也符合数据量的要求。
Description
技术领域
本发明涉及数据库技术领域,特别是涉及基于搜索引擎和关系型数据库的实时对象存储查询系统。
背景技术
目前,绝大多数的互联网公司都采用RDS(RDS是关系型数据库服务,RelationalDatabase Service的简称)作为存储,同时将ES(ElasticSearch,分布式全文搜索引擎)作为搜索引擎存储索引数据进行搜索的查询。
现有的存储和查询系统,如图1所示,系统处理流程为:外部存储请求—>API存储—>关系型数据库存储—>搜索引擎索引创建—>索引可被索引到—>条件查询或全文检索;外部搜索请求—>条件查询或全文检索。由于搜索引擎索引创建到索引可被搜索到往往需要秒级以上的延时,所以无法实现对已经存储成功数据的立即通查。即该系统并非真正的实时系统,无法提供OLTP(OnLine Transaction Processsing,联机事务处理)级别的存储查询实时性,造成了很多业务场景的无法覆盖。
对此,虽然可以直接使用数据库的JSON字段的特性(JSON作为一种自带结构的文本使得结构信息与可以与数据库解耦)进行查询,无需等待搜索引擎创建的索引可见(系统架构如图2所示)。但是,这种架构往往在数据量不大时能产生良好的支持。
发明内容
有鉴于此,本发明提出了基于搜索引擎和关系型数据库的实时对象存储查询系统,以避免现有技术中的数据存储和查询系统存在的数据从存储成功到可被搜索的延时性,达到OLTP级别,同时可支持的业务数量级别在亿级别以上。
为此,本发明提供了以下技术方案:
本发明提供了一种基于搜索引擎和关系型数据库的实时对象存储查询系统,所述系统包括:数据存储子系统、数据查询子系统和水位控制器;
水位控制器,用于对数据写入过程和数据查询过程中的水位号进行管理;数据写入过程中每个存储过程将产生一个水位号,水位号为按照存储过程的存储顺序依次递增;数据查询过程中按照水位号进行查询;
数据存储子系统,包括用于数据存储和查询的主数据库、CDC数据同步装置和用于索引存储和查询索引库;所述主数据库采用关系型数据库构建;所述索引库采用搜索引擎构建;所述CDC数据同步装置进行主数据库存储的数据解析,并接入到水位控制器进行水位控制;所述水位控制包括:当数据的索引写入成功后,将解析出的该数据的水位号淘汰,完成系统水位提升;
数据查询子系统,基于所述系统水位进行主数据库和索引库两次查询,合并两次查询结果,得到最终的查询结果;所述主数据库安全区中数据的水位号大于等于当前系统的最小水位号;所述索引库安全区中数据的水位号小于当前系统的最小水位号。
进一步地,所述存储过程为事务级别。
进一步地,所述CDC数据同步装置写入主数据库到索引可见之间的延时要求小于30ms。
进一步地,所述CDC数据同步装置采用开源组件Canal实现。
进一步地,所述数据存储子系统的写入过程包括:
接收数据写入请求,并将请求的业务数据转为存储格式;
打开数据库事务,产生事务ID;
将事务中的数据写入主数据库,该事务中的每条写入数据都携带所述事务ID;
针对所述事务产生水位号,并将所述水位号作为所述事务ID中的所有已写入的未提交记录的水位号,执行数据库提交操作;
监听二进制日志的CDC数据同步装置可见所述事务ID中的数据时,将所述事务ID中的数据写入索引;
当索引写入完成后,将所述水位号淘汰,实现水位号提升;
写入操作完成。
进一步地,所述存储格式为JSON格式。
进一步地,所述数据查询子系统的数据查询过程包括:
读取当前的系统水位号;
发起主数据库查询请求,所述主数据库查询条件包括:查询的水位号大于等于当前系统的最小水位号;
发起索引库查询请求,所述索引库查询条件包括:查询的数据对应的水位号小于当前系统的最小水位号;
将主数据库查询结果和索引库查询结果合并,得到最终查询结果;
返回产生的最终查询结果。
进一步地,将主数据库查询结果和索引库查询结果合并时,当主数据库查询结果和索引库查询结果中存在重复记录时,以主数据库查询结果作为最终查询结果。
本发明的优点和积极效果:
本发明中的基于搜索引擎和关系型数据库的实时对象存储查询系统,在存储时,按照事务对数据进行存储,支持事务隔离能力。在查询时,已经写入索引的安全数据通过索引获取,未完成CDC数据同步写入索引的不安全数据从主数据库获取,满足了对已经存储成功数据立即通查的使用需求,实现了真正的实时系统。由于绝大多数数据是通过索引获取,只有部分未完成CDC数据同步的数据从主数据库获取,可支持的业务数量级别取决于主数据库的性能,能够达到亿级别以上,即支持亿级数据低延时操作。对于少量的已成功存入主数据库,但尚未完成CDC同步写入索引的不安全数据,使用主数据库存储的JSON字段的特性从主数据库中获取数据,能够确保成功存入数据库的数据被立即查询,由于使用了Json来存储每一个字段,理论上增加一个字段只是对Json中的元素进行增加,而不会实际操作数据库新建一个字段,同时由于搜索引擎的原理性,当增加一个索引字段时,只需要对该字段标明需要建立索引即可,同时,本发明中将逻辑字段类型和实际存储字段类型分离,逻辑字段通常分为(长整型、字符串、字符串集合、浮点数、枚举、布尔型等等),而存储在底层数据库中的类型只包括了长整型和字符串型。逻辑类型通过转换器转换为底层存储类型进行存储,底层存储通常使用[字段ID]+[存储类型Type]作为一个对应字段的存储名字,比如长整型的字段(ID为1,值为1000),将被转换为1L:1000类似的结构,而字符串的字段(ID为2,值为”abc”),将被转换为2S:abc类似的结构,浮点数比较负责,会拆分为整数部分和小数部分,然后分别由2个字段进行存储,比如(ID为3,值为300.30),将转换为(3L0=300,3L1=30000000000000000),其中3L0代表ID为3,底层存储类型为L长整型,0代表整数部分,而1代表小数部分。同理,在存储一个字符串集合时,通常为[ID][TYPE][POS]这样的结构,由于只支持字符串数组,则一般为4S0,4S1,4S2这样类似的结构来标示。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做以简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术中的存储和查询系统架构图;
图2为现有技术中的又一种存储和查询系统架构图;
图3为本发明实施例中的实时对象存储查询系统架构图;
图4为本发明实施例中主数据库和索引库中数据分区示意图;
图5为本发明实施例中最小提交号示意图;
图6为本发明实施例中主数据库中存储字段示例图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
术语说明:
事务号,是指某个事务的唯一标示,只需要保证大致偏序且全局唯一,此数据会记录在所有的数据中,是一个长整形数字。
水位号,是指某个事务提交的序号,此序号保证全局唯一并且一定是偏序的(偏序可以体现提交发生的先后顺序),但不需要保证连续,此数据会记录在所有的数据中,是一个长整形数字。
如图3所示,本发明实施例中的一种基于搜索引擎和关系型数据库的实时对象存储查询系统,具体包括:数据存储子系统、数据查询子系统和水位控制器。其中:
水位控制器,用于对数据写入过程和数据查询过程中的水位号进行管理,也就是说水位控制器主要负责水位号的产生与淘汰。
数据写入过程中,每个存储过程(事务级别)将产生一个水位号,水位号必须为偏序递增的。当写入完主数据库存储时,进行数据库提交(Commit)时将触发产生一个就绪(Ready)的水位号,并写入该数据事务中,此时将由数据存储子系统中的CDC数据同步装置进行主数据的二进制日志(binlog)同步数据解析,每一条数据中都存一个数据水位号,当读取完数据时将解析出该水位号,此时将触发写入索引,写入成功后,调用水位控制器提供的API将该水位号进行淘汰,每一次淘汰都会使当前的系统水位号进行提升。
数据查询时,读取当前的系统水位号,并发起2次查询请求,第一次将查询主数据库的数据,查询条件中除了业务条件外,还将加入水位号条件,主数据库的查询条件通常需要大于等于当前最小的未确认提交号(通常为最大的已淘汰号+1)。第二次查询将查询索引库的数据,索引查询条件也将加入水位条件,只不过通常需要小于最小提交号。之后将会把主数据库及索引的查询结果合并,对于查询结果重复的记录(通常为主键ID重复),将以主数据库的数据为准。将产生的最终结果返回给前段调用者。
数据存储子系统,包括主数据库、CDC数据同步装置和索引库。其中:
主数据库,用于数据存储和查询,可以采用关系型数据库,具体实施中,可以采用已有的关系型数据库(存储数据库,通常为关系型数据库即可,不同数据库之间可能需要做写入及查询层面的二次开发工作),要求数据库的写入效率满足写入实时性的要求,查询性能满足千级别数据量。
CDC数据同步装置(CDC是Change Data Capture的缩写,是一种捕获变更数据的技术),负责主数据库的binlog读取,解析,写入到索引中,通知水位控制器进行水位控制。在整个系统中,CDC的延时将被要求极低,通常写入主数据库到索引可见之间的延时被要求小于30ms,在具体实施中,可以使用开源组件Canal作为CDC数据同步装置进行主数据库存储的数据解析,并接入到水位控制器进行水位控制。Canal基于数据库增量日志解析,提供增量数据订阅&消费。
索引库,用于索引存储和查询,由搜索引擎创建和查询索引,具体实施中可以采用ES,或功能类似ES的搜索系统,采用的搜索系统需满足低延时查询的要求。
数据存储子系统的写入过程如下:
S101、接收数据写入请求,并将请求的业务数据转为存储格式(业务数据转Json)。
S102、打开数据库事务,产生事务ID。
S103、将事务中的数据写入主数据库,该事务中的每条写入数据都带该事务ID。
S104、针对该事务产生水位号,并将该水位号作为该事务ID中的所有已写入的未提交记录的水位号,最后执行提交;
提交之后,当前水位号为就绪水位号。
S105、监听二进制日志的CDC数据同步装置可见该事务数据时,将该事务ID中的数据写入索引;
S106、当索引写入完成后,执行提升水位操作,将该水位进行淘汰。
这里可以认为淘汰就是将该水位号从水位线记录(也就是水位容器)中排除出,从而实现水位号提升(通常情况下水位号的淘汰顺序是从小到大进行的)。新水位号的产生不取决于当前被淘汰的水位号,只取决于显示调用了水位控制器中的next方法,而产生的水位号不会放入到水位容器中,而是在写入主数据库库实际数据时,显示调用了水位控制器的save方法,这里很好理解为什么next方法产生的水位号不会放入,因为程序往往无法每一次获取水位号后都操作成功,常常产生例外等情况,所以就需要在出库数据提交后再进行未提交水位号的保存动作。
此时写入操作完成,数据存储控制装置返回前段写入成功。
数据查询子系统,基于系统水位进行主数据库和索引库两次查询,将查询条件组成查询主数据库的数据库查询语句(Sql语句)及查询索引库的Sql语句。如图4所示,主数据库包括安全区和旧区,两个区域以最小提交号区分,查询主数据库具体是查询主数据库安全区的数据,查询主数据库的查询条件要求查询数据的水位号大于等于最小提交号。索引库包括不安全区和安全区,不安全区中CDC数据同步装置正在进行主数据库的安全区中数据的数据同步,不安全区和安全区也以最小提交号区分,查询索引库也是查询索引库的安全区,所以查询索引库的查询条件要求查询数据的水位号小于最小提交号。如图5所示,当前未被CDC成功处理的最小提交号为1号(提交号和水位号都是指commitId,保存在数据中为提交号,存在于水位容器的最低水位被称作水位号)。
主数据库的查询条件为:
SELECT id,JSON_UNQUOTE(JSON_EXTRACT("attribute","$.F{排序字段id}{物理类型}"))as sort0 FROM bigentity
WHERE(commitid>=?and entityclassl0=?)and attribute->>'$.F{字段id}{物理类型}'=?ORDER BY sort0 ASC
索引的查询条件为:
SELECT id,bigint(attr.1y2p0ij32e8dzL)as sort0FROM index
WHERE attr.1y2p0ij32e8dzL>?AND MATCH('((@attrf(1y2p0i13354j32e8dzL01y2p0i99203446200000000j32e8dzL1)))
(@entityclassf?)')ORDER BY sort0ASC,id DESC LIMIT 0,1000
OPTION max_matches=1000,max_query_time=1000,ranker=none
最后将获取到2个id集合进行合并,获取最终的结果集。
数据查询子系统的数据查询过程包括:
S201、读取当前的系统水位号;
S202、发起主数据库查询请求,查询主数据库的数据(如图4中主数据库安全区),主数据库查询请求包括:业务条件和水位号条件,其中主数据库查询的水位号条件通常需要大于等于当前最小的未确认提交号(通常为最大的已淘汰号+1)。
S203、发起索引库查询请求,查询索引库的数据(如图4中索引库安全区),索引库查询请求包括:水位号条件,其中,索引查询的水位号条件通常需要小于最小提交号。
S204、将主数据库查询结果和索引库查询结果合并,当主数据库查询结果和索引库查询结果中存在重复记录时(通常为主键ID重复),以主数据库的数据为准。
由于主数据库水位线永远保持最新,所以当发生更新时(删除操作本身为逻辑删除),必须以主数据库为优先。
S205、将产生的最终查询结果返回给前段调用者。
上述搜索过程中,已经写入索引的安全数据通过索引获取,未完成CDC数据同步写入索引的不安全数据从主数据库获取,满足了对已经存储成功数据立即通查的使用需求,实现了真正的实时系统。由于绝大多数数据是通过索引获取,只有部分未完成CDC数据同步的数据从主数据库获取,可支持的业务数量级别取决于主数据库的性能,能够达到亿级别以上。
对于搜索的效率来说(不安全数据从主数据库获取),必须定义一种高效的结构,本发明中存储在底层的实现上理论上类型只有数字和字符串2种,对象的字段信息最终会被转换为一个JSON格式的结构写入主数据库,即主数据库字段的类型就是JSON。
下面以一具体示例进行说明。
如图6所示,假设一个对象有三个字段c1、c2、c3,其唯一标识ID分别是9223372036854775807、9223372036854775806和9223372036854775805。最终写入主数据库的是这样一段JSON字串:
{
"F9223372036854775807S":"v1",
"F9223372036854775806L":200,
"F9223372036854775805L":1652914144629
}
比如查询的业务条件为:c1=v1及c3=1652914144629,最终将转换为:
attribute->>'$.F9223372036854775807S'=‘v1’;
and attribute->>'$.F9223372036854775805L=1652914144629
对于少量的已成功存入主数据库,但尚未完成CDC同步写入索引的不安全数据,使用主数据库的上述JSON字段的特性从主数据库中获取数据,能够确保成功存入数据库的数据被立即查询,同时也符合数据量的要求。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (8)
1.一种基于搜索引擎和关系型数据库的实时对象存储查询系统,其特征在于,所述系统包括:数据存储子系统、数据查询子系统和水位控制器;
水位控制器,用于对数据写入过程和数据查询过程中的水位号进行管理,负责水位号的产生与淘汰;所述水位号,是指某个事务提交的序号,此序号保证全局唯一并且偏序,但不需要保证连续,此数据会记录在所有的数据中,是一个长整形数字;数据写入过程中每个存储过程将产生一个水位号,水位号为按照存储过程的存储顺序依次递增;当写入完主数据库存储时,进行数据库提交时将触发产生一个就绪的水位号,并写入该数据事务中,此时将由数据存储子系统中的CDC数据同步装置进行主数据的二进制日志同步数据解析,每一条数据中都存一个数据水位号,当读取完数据时将解析出该水位号,此时将触发写入索引,写入成功后,调用水位控制器提供的API将该水位号进行淘汰,每一次淘汰都会使当前的系统水位号进行提升;数据查询过程中按照水位号进行查询;
数据存储子系统,包括用于数据存储和查询的主数据库、CDC数据同步装置和用于索引存储和查询索引库;所述主数据库采用关系型数据库构建;所述索引库采用搜索引擎构建;所述CDC数据同步装置进行主数据库存储的数据解析,并接入到水位控制器进行水位控制;所述水位控制包括:当数据的索引写入成功后,将解析出的该数据的水位号淘汰,完成系统水位提升;
数据查询子系统,基于所述系统水位进行主数据库安全区和索引库安全区两次查询,合并两次查询结果,得到最终的查询结果;所述主数据库安全区中数据的水位号大于等于当前系统的最小水位号;所述索引库安全区中数据的水位号小于当前系统的最小水位号。
2.根据权利要求1所述的一种基于搜索引擎和关系型数据库的实时对象存储查询系统,其特征在于,所述存储过程为事务级别。
3.根据权利要求1所述的一种基于搜索引擎和关系型数据库的实时对象存储查询系统,其特征在于,所述CDC数据同步装置写入主数据库到索引可见之间的延时要求小于30ms。
4.根据权利要求1所述的一种基于搜索引擎和关系型数据库的实时对象存储查询系统,其特征在于,所述CDC数据同步装置采用开源组件Canal实现。
5.根据权利要求2所述的一种基于搜索引擎和关系型数据库的实时对象存储查询系统,其特征在于,所述数据存储子系统的写入过程包括:
接收数据写入请求,并将请求的业务数据转为存储格式;
打开数据库事务,产生事务ID;
将事务中的数据写入主数据库,该事务中的每条写入数据都携带所述事务ID;
针对所述事务产生水位号,并将所述水位号作为所述事务ID中的所有已写入的未提交记录的水位号,执行数据库提交操作;
监听二进制日志的CDC数据同步装置可见所述事务ID中的数据时,将所述事务ID中的数据写入索引;
当索引写入完成后,将所述水位号淘汰,实现水位号提升;
写入操作完成。
6.根据权利要求5所述的一种基于搜索引擎和关系型数据库的实时对象存储查询系统,其特征在于,所述存储格式为JSON格式。
7.根据权利要求2所述的一种基于搜索引擎和关系型数据库的实时对象存储查询系统,其特征在于,所述数据查询子系统的数据查询过程包括:
读取当前的系统水位号;
发起主数据库查询请求,所述主数据库查询条件包括:查询的水位号大于等于当前系统的最小水位号;
发起索引库查询请求,所述索引库查询条件包括:查询的数据对应的水位号小于当前系统的最小水位号;
将主数据库查询结果和索引库查询结果合并,得到最终查询结果;
返回产生的最终查询结果。
8.根据权利要求7所述的一种基于搜索引擎和关系型数据库的实时对象存储查询系统,其特征在于,将主数据库查询结果和索引库查询结果合并时,当主数据库查询结果和索引库查询结果中存在重复记录时,以主数据库查询结果作为最终查询结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211716141.4A CN116204556B (zh) | 2022-12-29 | 2022-12-29 | 基于搜索引擎和关系型数据库的实时对象存储查询系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211716141.4A CN116204556B (zh) | 2022-12-29 | 2022-12-29 | 基于搜索引擎和关系型数据库的实时对象存储查询系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116204556A CN116204556A (zh) | 2023-06-02 |
CN116204556B true CN116204556B (zh) | 2023-11-28 |
Family
ID=86510439
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211716141.4A Active CN116204556B (zh) | 2022-12-29 | 2022-12-29 | 基于搜索引擎和关系型数据库的实时对象存储查询系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116204556B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103714090A (zh) * | 2012-10-09 | 2014-04-09 | 阿里巴巴集团控股有限公司 | 多索引数据库事务处理方法及数据库 |
CN111767303A (zh) * | 2020-07-28 | 2020-10-13 | 腾讯科技(深圳)有限公司 | 一种数据查询方法、装置、服务器及可读存储介质 |
CN111797121A (zh) * | 2020-07-02 | 2020-10-20 | 中国工商银行股份有限公司 | 读写分离架构业务系统的强一致性查询方法、装置及系统 |
CN113297201A (zh) * | 2020-06-29 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 索引数据同步方法、系统及装置 |
CN113934733A (zh) * | 2021-11-24 | 2022-01-14 | 北京京东乾石科技有限公司 | 问题定位方法、装置、系统、存储介质及电子设备 |
CN114138785A (zh) * | 2021-11-30 | 2022-03-04 | 中国平安财产保险股份有限公司 | 适用于大数据量的数据检索方法、装置、设备及存储介质 |
CN114490735A (zh) * | 2021-12-20 | 2022-05-13 | 中盈优创资讯科技有限公司 | 基于mpp与全文索引构建分布式olap数据分析的方法及装置 |
-
2022
- 2022-12-29 CN CN202211716141.4A patent/CN116204556B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103714090A (zh) * | 2012-10-09 | 2014-04-09 | 阿里巴巴集团控股有限公司 | 多索引数据库事务处理方法及数据库 |
CN113297201A (zh) * | 2020-06-29 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 索引数据同步方法、系统及装置 |
CN111797121A (zh) * | 2020-07-02 | 2020-10-20 | 中国工商银行股份有限公司 | 读写分离架构业务系统的强一致性查询方法、装置及系统 |
CN111767303A (zh) * | 2020-07-28 | 2020-10-13 | 腾讯科技(深圳)有限公司 | 一种数据查询方法、装置、服务器及可读存储介质 |
CN113934733A (zh) * | 2021-11-24 | 2022-01-14 | 北京京东乾石科技有限公司 | 问题定位方法、装置、系统、存储介质及电子设备 |
CN114138785A (zh) * | 2021-11-30 | 2022-03-04 | 中国平安财产保险股份有限公司 | 适用于大数据量的数据检索方法、装置、设备及存储介质 |
CN114490735A (zh) * | 2021-12-20 | 2022-05-13 | 中盈优创资讯科技有限公司 | 基于mpp与全文索引构建分布式olap数据分析的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN116204556A (zh) | 2023-06-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8924365B2 (en) | System and method for range search over distributive storage systems | |
US8140495B2 (en) | Asynchronous database index maintenance | |
CN107818115B (zh) | 一种处理数据表的方法及装置 | |
CN112463886B (zh) | 一种数据处理方法、装置、电子设备及存储介质 | |
US20120166414A1 (en) | Systems and methods for relevance scoring | |
US9665607B2 (en) | Methods and apparatus for organizing data in a database | |
US20150142733A1 (en) | System and method for efficient management of big data in a database using streaming tables | |
US6122644A (en) | System for halloween protection in a database system | |
US8108375B2 (en) | Processing database queries by returning results of a first query to subsequent queries | |
US20080005183A1 (en) | Method And Apparatus for Propagating Tables While Preserving Cyclic Foreign Key Relationships | |
CN102955792A (zh) | 一种实时全文搜索引擎事务处理的实现方法 | |
US20070168334A1 (en) | Normalization support in a database design tool | |
US9245003B2 (en) | Method and system for memory efficient, update optimized, transactional full-text index view maintenance | |
WO2011130706A2 (en) | Methods and systems for performing cross store joins in a multi-tenant store | |
CN109947796B (zh) | 一种分布式数据库系统查询中间结果集的缓存方法 | |
US7136861B1 (en) | Method and system for multiple function database indexing | |
US20110113052A1 (en) | Query result iteration for multiple queries | |
CN101963993B (zh) | 一种数据库单表记录快速查找的方法 | |
US20080046473A1 (en) | Method and System For Using Index Lead Key Self-Join To Take Advantage of Selectivity of Non-Leading Key Columns of an Index | |
CN116204556B (zh) | 基于搜索引擎和关系型数据库的实时对象存储查询系统 | |
JP2017537398A (ja) | 一組の構造化データタームからの非構造化検索クエリの生成 | |
US20160004749A1 (en) | Search system and search method | |
Rats et al. | Using of cloud computing, clustering and document-oriented database for enterprise content management | |
CN114356966B (zh) | 数据库语句的处理方法及装置 | |
CN115631866B (zh) | 一种针对医疗大数据采集的快速精准去重方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | 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 |