CN111460229A - 单用户多工作负载之间json解析优化方法和系统 - Google Patents
单用户多工作负载之间json解析优化方法和系统 Download PDFInfo
- Publication number
- CN111460229A CN111460229A CN202010110669.1A CN202010110669A CN111460229A CN 111460229 A CN111460229 A CN 111460229A CN 202010110669 A CN202010110669 A CN 202010110669A CN 111460229 A CN111460229 A CN 111460229A
- Authority
- CN
- China
- Prior art keywords
- jsonpath
- user
- json
- query
- cache
- 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
Links
Images
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/80—Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
- G06F16/83—Querying
- G06F16/835—Query processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- 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)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Biophysics (AREA)
- Evolutionary Computation (AREA)
- Biomedical Technology (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了单用户多工作负载之间JSON解析优化方法和系统,属于软件开发领域。包括:基于用户的JSONPath历史访问信息,预测会被该用户重复访问的JSONPath;将预测的JSONPath对应的JSON字段提前缓存到缓存表;当用户的查询包含预测的JSONPath时,直接从缓存表中读取对应的JSON字段。本发明基于用户的查询历史记录,针对各个用户的查询习惯进行预测,预测用户在将来大概率会重复访问的JSON字段,并提前缓存到分布式存储中。减少了数据中心中关于JSON数据查询的重复解析时间,进而提高了查询的响应时间,节省了CPU运行时间。由于将JSONPath的值提前解析出来存储在缓存表中,当用户的Workload中有关于JSONPath的值过滤条件,可以提前在缓存表中进行过滤从而减少读表开销。
Description
技术领域
本发明属于软件开发领域,更具体地,涉及单用户多工作负载之间JSON解析优化方法和系统。
背景技术
在许多Web和企业应用程序中,JSON是一种非常受欢迎的数据交换格式。JSON吸引人的功能包括灵活性,简单性,可读性和高表达能力。因此,十个最受欢迎的WebAPI(主要由Google、Facebook和Twitter等大公司提供的API组成)中的九个以JSON格式公开数据。许多数据分析引擎(例如,Spark、Flink、Storm、Drill)本身都支持加载和查询JSON数据。但是,与关系型数据不同,JSON是半结构化格式,因此必须在进一步分析和查询之前对其进行解析。最近的研究表明,查询原始数据的关键瓶颈在于解析数据本身,大约80%的执行时间花费在解析JSON数据上。
以前的许多研究都集中在构建有效的解析器上以降低解析成本。有些研究者利用SIMD指令基于特殊结构字符(如方括号和冒号)为JSON字符串构建字段索引。另外一些研究者开发了一种新方法,该方法基于对许多真实世界应用的观察,在解析之前将过滤器应用于JSON原始字节流,由于应用具有高选择性,因此可以在解析前过滤大量的JSON记录。尽管这些工作使得解析速度有了显著提高,但是对于大量的JSON和复杂的JSONPath而言,开销仍然很大。实际上,许多企业面临着每天在数千台服务器上对大量JSON数据执行大量查询的挑战性问题,因此,除了提高解析速度外,研究如何减少解析的发生也很重要。
发明内容
针对现有技术的缺陷和改进需求,本发明提供了单用户多工作负载之间JSON解析优化方法和系统,其目的在于利用工作负载中JSONPath的高重复性,缓存被重复解析的JSONPath对应的JSON字段值以避免在不同查询之间的重复解析开销。
为实现上述目的,按照本发明的第一方面,提供了一种单用户多工作负载之间JSON解析优化方法,该方法包括以下步骤:
S1.基于用户的JSONPath历史访问信息,预测会被该用户重复访问的JSONPath;
S2.将预测的JSONPath对应的JSON字段提前缓存到缓存表;
S3.当用户的查询包含预测的JSONPath时,直接从缓存表中读取对应的JSON字段。
优选地,步骤S1包括以下子步骤:
S11.从历史数据表中按照用户名称,收集各个用户的所有Workload中访问的JSONPath的历史数据信息;
S12.根据收集的历史数据信息,基于长短期记忆网络和条件随机场,预测会被该用户重复访问的JSONPath。
优选地,所述历史数据信息包括:JSONPath路径、JSONPath所在的数据库名称、JSONPath所在的原用户表名、JSONPath所在的列名、JSONPath被访问的次数、查询被执行的日期。
优选地,步骤S12包括以下子步骤:
S121.对历史数据信息进行预处理,根据预处理后的历史数据信息构建训练样本,所述训练样本为:JSONPath路径、数据库名称、原用户表名、列名、JSONPath所在的查询被执行的日期与当前训练日期的时间差、JSONPath在查询被执行的日期中出现的次数;
S122.将训练样本集输入给LSTM和CRF,输出各个用户可能会被缓存的JSONPath序列。
优选地,步骤S2包括以下子步骤:
S21.根据单位存储空间内能获取的时间收益,对预测的JSONPath进行打分;
S22.按照JSONPath的分数由高到低,将JSONPath对应的JSON字段进行缓存至分布式文件系统。
优选地,步骤S21包括以下子步骤:
S211.使用原解析算法,通过对每个文件分片进行采样,计算JSON字段的平均大小Bj,并计算JSON字段的平均解析时间Pj,用下面公式计算出每字节加速Aj的大小:
S212.计算JSONPath潜在相关性Rj
其中,n表示一条JSONPath被n条查询访问,Mj表示在第j条查询中涉及的被预测的JSONPath出现的次数,Nj表示在第j条查询中所有JSONPath的数量;
S213.计算JSONPath在训练样本日期内出现的次数Oj;
S214.根据Aj、Rj以及Oj,计算第j条JSONPath的分数Scorej,公式如下:
Scorej=Aj*Rj*Oj。
优选地,在存储空间有限的情况下,分数高的JSONPath被优先缓存,直到缓存空间用尽为止;当存储空间用尽时,当天的缓存结束;在下一天的凌晨开始,缓存空间将被清理,重新按照前述逻辑缓存新的JSONPath值。
优选地,将缓存命中的JSONPath的值替换成对缓存表的引用,余下的未被缓存的值存放于用户原始数据表中;所述用户原始数据表和缓存表分区对齐。
优选地,被缓存命中的JSONPath从缓存表中读取值,其他未被命中的以及非JSON列则从原始数据表中读取,合并从原始数据表和缓存表读取的值。
为实现上述目的,按照本发明的第二方面,提供了单用户多Workload之间JSON解析优化系统,该系统包括:
JSONPath预测器,用于基于用户的JSONPath历史访问信息,预测会被该用户重复访问的JSONPath;
JSONPath缓存器,用于将预测的JSONPath对应的JSON字段提前缓存到缓存表;
查询处理器,用于当用户的查询包含预测的JSONPath时,直接从缓存表中读取对应的JSON字段。
总体而言,通过本发明所构思的以上技术方案,能够取得以下有益效果:
(1)本发明基于用户的查询历史记录,针对单个用户的查询习惯进行预测,预测用户在将来大概率会重复访问的JSON字段,并提前缓存到分布式存储中。减少了数据中心中关于JSON数据查询的重复解析时间,进而提高了查询的响应时间,节省了CPU运行时间。由于将JSONPath的值提前解析出来存储在缓存表中,当用户的Workload中有关于JSONPath的值过滤条件(假设JSONPath指代的是学生成绩,过滤学生成绩大于80分的学生),可以提前在缓存表中进行过滤从而减少读表开销。
(2)本发明的使用机器学习的离线缓存技术,相对于传统线上缓存技术如LRU等,可以避免第一个工作负载享受不到缓存收益的情况,并且可以高效利用机器的空闲时间,提高用户的工作负载的性能。
(3)本发明在存储空间有限的情形下,使用打分函数对预测的结果进行打分,按照分数由高到低的顺序进行缓存,直至缓存空间满了。缓存可以利用集群资源使用率低的时候,这样并不会影响集群用户的使用。
(4)本发明提出的JSON解析优化方法不需要修改数据分析引擎内核,仅需要对数据分析引擎扩展一定的功能即可。且扩展的功能对用户透明,无需用户修改原有的代码即可使用本方法,适合在生产环境中推广使用。此外本系统采用的方法不仅对JSON数据有用,同样也适合于其他半结构化数据,如XML。
附图说明
图1为本发明实施例提供的一种数据中心中多工作负载之间JSON解析优化的系统架构示意图;
图2为本发明实施例提供的JSONPath预测器;
图3为本发明实施例提供的写缓存示意图;
图4(a)为本发明实施例提供的物理计划修改前示意图;
图4(b)为本发明实施例提供的物理计划修改后示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
本发明的发明构思为:由于用户查询语句具有时间关联性和空间关联性,基于用户的查询历史记录,针对单个用户的查询习惯进行预测,预测用户在将来大概率会重复访问的JSON字段,并提前缓存到分布式存储中。
如图1所示,数据中心中多Workload之间JSON解析优化的系统的架构分为四部分,第一层是用户查询与系统的交互,第二层是查询语句的具体执行过程;第三层是数据库,主要用于存储本发明的原始数据,和已经缓存好的数据,第四层是离线缓存系统,进行预测、打分、缓存操作。其中,第一层、第二层是Spark已有的部分,本发明对第二层中Spark SQL解析器做了增强,作为本发明的MaxsonParser,使得该解析器能够利用缓存值。第三层和第四层是本发明新增的部分,为了利用缓存服务。
第一层:交互层:用户提交查询语句;系统执行完毕后将结果返回给用户。
第二层:执行层:MaxsonParser是更改过后的解析器。系统利用MaxsonParser对用户提交的语句进行解析,判断读取的列中是否存在缓存命中,如果某些列缓存命中,本发明会修改物理计划,使得Spark在执行期间会从缓存表(CacheTable)中读取已经缓存的值;对于未命中的列,本发明从原始用户表(Raw Data Table)中读取值,再利用Spark自带的解析函数进行解析。最后从缓存表和原始用户表中读取的值,通过值组合器(Value Combiner)组合成一组完整的记录返回给上层应用。
第三层:数据库层:HistoricalTable存放的是历史数据信息,存放的信息包括:JSONPath路径本身;JSONPath所在的数据库名称DatabaseName,JSONPath所在的原用户表名TableName,JSONPath所在的列名ColunmName;JSONPath被访问的次数Count,查询被执行的日期Date。Raw Data Table存放的是用户自定义表结构的原始用户数据。Cache Table存放的是被预测重复访问的JSONPath的值,这些值是通过打分函数,根据JSONPath的分数由高到低缓存的。这些表都是Hive表,存储格式是ORC格式。
第四层:离线缓存:JSONPath收集器(JSONPathCollector)主要用于收集第三层中历史数据表(HistoricalTable)所提到的信息,并把这些信息按照日期分区存放至HistoricalTable中。JSONPath预测器(JSONPathPredictor)根据HistoricalTable中的信息预测出可能被缓存的JSONPath。打分函数(ScoringFunction)的输入来自于JSONPathPredictor输出的JSONPath本身,以及JSONPath的值所占空间大小(Bj),被解析的时间(Pj),被解析的次数(Oj),与其他JSONPath的相关性(Rj)。它给预测出的JSONPath打分并排序。JSONPathCacher根据分数从高到低解析并缓存JSONPath的值,并将这些JSONPath的值存入到Cache Table中,直到空间塞满,停止缓存操作。
本发明提供了一种单用户多工作负载之间JSON解析优化方法,该方法包括以下步骤:
步骤S1.基于用户的JSONPath历史访问信息,预测会被该用户重复访问的JSONPath。
优选地,步骤S1包括以下子步骤:
S11.从历史数据表中按照用户名称,收集各个用户的所有Workload中访问的JSONPath的历史数据信息。
具体地,所述历史数据信息包括:JSONPath路径、JSONPath所在的数据库名称DatabaseName、JSONPath所在的原用户表名TableName、JSONPath所在的列ColunmName、JSONPath被访问的次数Count、查询被执行的日期Date。本实施例共收集150天这样的历史数据信息。
如图2所示,S12.根据收集的历史数据信息,基于长短期记忆网络和条件随机场,预测该用户重复访问的JSON字段。
S121.对历史数据信息进行预处理,根据预处理后的历史数据信息构建训练样本。
将150天的数据集做并集,填充未出现的JSONPath的被访问次数Count为0,并划分数据集70%为训练数据集,20%为验证数据,10%作为测试数据集。
训练样本为:JSONPath路径、数据库名称、原用户表名称、列名称、JSONPath所在的查询被执行的日期与当前训练日期的时间差、JSONPath在查询被执行的日期中出现的次数。
由于本发明是日期序列作为输入,所以本发明还需要日期序列,该日期序列是JSONPath产生的日期与预测日期的差值(Datediff Sequence),以及这些日期中JSONPath出现次数的序列(Count Sequence)。
S122.将训练样本集输入给LSTM和CRF,输出各个用户可能会被缓存的JSONPath序列。
LSTM能够很好地利用其核心部件c(单元状态)和h(隐藏状态)进行序列特征提取,其中,c用于保存长期状态,h用于保存模型学习到的内容即学习JSONPath出现的规律与日期和所属数据库名、表名、列名的关系。CRF可以学习标签的上下文关系,使得模型预测更加准确。最后得出的标签值即为所求,标签为0或者1,1表示可能会被缓存,输出可能会被缓存的JSONPath序列。本实施例中设置的训练窗口大小为两周即14天。
步骤S2.将预测的JSONPath对应的JSON字段提前缓存到缓存表。
在存储空间受限的情况下,预测出来的JSONPath并不会全被缓存。使用打分函数(ScoringFunction)对JSONPath打分,分数与JSONPath的值所占空间大小(Bj),被解析的时间(Pj),被解析的次数(Oj),与其他JSONPath的相关性(Rj)有关,按照分数从高到低排名,排名越高,越有机会被缓存。
优选地,步骤S2包括以下子步骤:
S21.根据JSON字段单位存储内能获取的时间收益,对预测的重复解析的JSON字段进行打分。
为了更高效地利用存储空间,本发明设计了打分函数。在用户指定缓存空间预算,打分函数根据单位存储单位能获得的时间收益为准则,将JSON字段根据分数的高低降序排序,优先缓存分数高的缓存字段。
S211.使用原解析算法,通过对表中的每个文件分片进行采样,计算JSON字段的平均大小Bj,并计算JSON字段的平均解析时间Pj,用下面公式计算出每字节加速Aj的大小:
S212.计算JSONPath潜在相关性Rj。
假设一条JSONPath被n条查询访问,用Mj表示在第j条查询中涉及的被预测的JSONPath数,Nj表示在第j条查询中所有JSONPath的数量即包括未被预测的和被预测的。用下面公式计算Rj的大小:
相关性Rj越大,说明缓存该JSONPath所在的查询能从缓存中获取更多的收益。
S213.计算JSONPath在训练样本日期内出现的次数Oj。
出现的次数Oj越多,能够减少的重复解析次数越多。
S214.根据Aj、Rj以及Oj,计算第j条JSONPath的分数Scorej,公式如下:
Scorej=Aj*Rj*Oj
S22.按照JSONPath的分数由高到低,将JSONPath对应的JSON字段进行缓存。
采用贪心策略,挑选在单位存储空间内,最能缩短的查询执行时间的字段进行缓存。
在磁盘大小有限的情况下,分数高的JSONPath被优先缓存,直到缓存空间用尽为止。当磁盘空间用尽时,当天的缓存动作就到此结束。在下一天的凌晨开始,缓存空间将被清理,重新按照前述逻辑缓存新的JSONPath值。值存储格式是列式存储格式(OptimizedRowColumnar,ORC)。
如图3所示,用户表(UserTable)是前述图一中的原始用户表(Raw Data Table),缓存表(CacheTable)是前述图一中的缓存表(CacheTable)。原始数据表和缓存表均以表格的ORC格式存储在分布式文件系统(HDFS)中,其中包含多个文件。在HDFS中,一个文件(File)可以分为一个或多个块(Block),一个块不能跨越多个文件。在Spark中,一个或多个块可以形成一个文件分片(InputSplit),它对应于一个Spark分区(Partition)。每个分片(InputSplit)中包含的块数是Spark中的可调参数。在写缓存表时,将一个文件视为一个文件分片(InputSplit),以确保将从原始数据表文件解析的值仅写入一个缓存表文件。然后,将JSONPath从相同的原始数据表缓存到同一缓存表中。为了记住高速缓存表和原始数据表之间的映射关系,根据对应的数据库名称和原始数据表名称来命名高速缓存表,并根据对应的列名和JSONPath命名一个高速缓存字段。
此外,为了正确查找在解析值所在的文件中,在写入缓存表文件时修改Spark命名功能,以使缓存表文件和原始数据表文件在读取表的过程中具有相同的排序顺序,两个读取器可以获取具有相同索引的正确文件。
如图4(a)所示,是物理计划修改前的一个例子。该例子从原始用户表(RawDataTable)中读取(scan)三列:non_json_column0、non_json_column1、json_column0。其中non_json_column、non_json_column1属于非JSON列,json_column0属于JSON列。再读取完三列后,json_column0通过JSON解析函数get_json_object解析投影(project)两个JSONPath:$.id和$.url形成成两个字段id和url,并且过滤(filter)id大于10000的记录输出给用户。图4(b)是物理计划修改后,本发明假设JSON列json_column0已经缓存命中。此时本发明会从原始数据表中读取non_json_column0、non_json_column1,从缓存表(CacheTable)中读取id和url字段。这样就避免了解析json_column0的过程。在过滤filter阶段本发明也可以直接过滤id而无需再进行解析。存在多个Workload解析同样的JSONPath的时,这种缓存策略可以有效地避免重复解析开销。
优选地,缓存对齐。这些缓存的JSONPath的值会以表格的形式存入到分布式文件系统中(如HDFS),本发明称这个表为缓存表。缓存时间安排在每天集群利用率较低的时间段。为了使查询能够利用缓存的JSONPath的值,避免重复解析已经缓存的值,减少解析工作量。本发明称用户原来的数据表格为原用户表。
修改的SparkSQL解析器将缓存命中的JSONPath的值替换成对缓存表的引用,通过这种引用,本发明可以大量的减少重复解析的时间开销,做到解析一次处处使用。当用户的工作负载中,JSONPath已经缓存时,本发明会从缓存表中读取该值,避免重复解析。余下的未被缓存的值,本发明从原用户表中读取。设计的读表协议使得原用户表中的数据和缓存表中的数据能正确拼凑成完整的记录。
本发明将缓存的内容存放在缓存表中,将未缓存存的内容存放于用户原始数据表中。因此Spark在读取数据,需要同时读取原始数据表和缓存表中的内容。为了保证这两张表中的各列内容最后能完整的组成行数据,本发明需要控制原始数据表和缓存表中的分区对齐。这样在读表时,按照分区依次读取用户原始数据表和缓存表,即可保证行对齐。
步骤S3.当用户的查询包含预测的JSONPath时,直接从缓存表中读取对应的JSON字段。
当用户的工作负载提交后,解析工作负载中的查询语句中是否含有JSON解析函数get_json_object,若有get_json_object函数,则进一步判断get_json_object中被访问的JSONPath是否被缓存,若JSONPath没有被缓存则还是通过系统自带的解析函数解析出JSONPath的值。当用户的缓存命中时,可以从缓存表中读取值,避免进行JSON字段的解析工作。
检查缓存合法性,即缓存时间是在用户表最后一次修改之后。若合法,则修改查询语句的物理计划,用占位符替换get_json_object,然后将列名ColumnName,列表达式的id和JSONPath放入占位符,供后续读取缓存表的值所用。若不合法则不做任何操作,仍然按照SparkSQL原有方法。
被缓存命中的JSONPath从缓存表中读取值,其他未被命中的以及非JSON列则从原始数据表中读取,合并从原始数据表和缓存表读取的值,具体步骤如下:
(1)定义两个reader,读取原始数据表的reader叫PrimaryReader,读取缓存表的reader叫CacheReader。获取被缓存命中的JSONPath所在的原数据库名和原用户表名,根据名字在缓存数据库中获取对应的缓存表,获取缓存表的文件分片(SplitFiles)。
(2)如果用户使用ORC过滤下推,则进入步骤(3),若不使用过滤下推,进入步骤(4)。
(3)PrimaryReader根据过滤条件获取RowGroups布尔型数组,该数组记录原始数据表的文件分片(SplitFile)中需要被读取的分片,Ture代表对应的分片需要读取,False代表对应的分片不需要读取。CacheReader根据过滤条件获取RowGroups布尔型数组,该数组记录缓存表的文件分片中需要被读取的分片,Ture代表对应的分片需要读取,False代表对应的分片不需要读取。将这两个布尔型数组做交集后传给两个reader。
(4)若Reader接收到步骤(3)所传递的布尔型数组,则PrimaryReader根据布尔型数组的真值读取文件,假值所对应的文件将会被跳过。若没有接收到(3)所传递的布尔型数组,则视为没有需要跳过的文件,即所有文件都需要读取。由于PrimaryReader和CacheReader的布尔型数组是一致的。所以PrimaryReader取一个原用户表的文件分片的一条记录,CacheReader也读取对应的缓存表的文件分片的一条记录,然后按照修改后的物理计划的读表输出模式(output schema)的顺序将两条记录合并成一个完整的记录。
(5)重复步骤(2)~(4),重复次数为文件分片的个数,读取数据阶段完毕。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种单用户多工作负载之间JSON解析优化方法,其特征在于,该方法包括以下步骤:
S1.基于用户的JSONPath历史访问信息,预测会被该用户重复访问的JSONPath;
S2.将预测的JSONPath对应的JSON字段提前缓存到缓存表;
S3.当用户的查询包含预测的JSONPath时,直接从缓存表中读取对应的JSON字段。
2.如权利要求1所述的方法,其特征在于,步骤S1包括以下子步骤:
S11.从历史数据表中按照用户名称,收集各个用户的所有Workload中访问的JSONPath的历史数据信息;
S12.根据收集的历史数据信息,基于长短期记忆网络和条件随机场,预测会被该用户重复访问的JSONPath。
3.如权利要求2所述的方法,其特征在于,所述历史数据信息包括:JSONPath路径、JSONPath所在的数据库名称、JSONPath所在的原用户表名、JSONPath所在的列名、JSONPath被访问的次数、查询被执行的日期。
4.如权利要求2或3所述的方法,其特征在于,步骤S12包括以下子步骤:
S121.对历史数据信息进行预处理,根据预处理后的历史数据信息构建训练样本,所述训练样本为:JSONPath路径、数据库名称、原用户表名、列名、JSONPath所在的查询被执行的日期与当前训练日期的时间差、JSONPath在查询被执行的日期中出现的次数;
S122.将训练样本集输入给LSTM和CRF,输出各个用户可能会被缓存的JSONPath序列。
5.如权利要求1至4任一项所述的方法,其特征在于,步骤S2包括以下子步骤:
S21.根据单位存储空间内能获取的时间收益,对预测的JSONPath进行打分;
S22.按照JSONPath的分数由高到低,将JSONPath对应的JSON字段进行缓存至分布式文件系统。
6.如权利要求5所述的方法,其特征在于,步骤S21包括以下子步骤:
S211.使用原解析算法,通过对每个文件分片进行采样,计算JSON字段的平均大小Bj,并计算JSON字段的平均解析时间Pj,用下面公式计算出每字节加速Aj的大小:
S212.计算JSONPath潜在相关性Rj
其中,n表示一条JSONPath被n条查询访问,Mj表示在第j条查询中涉及的被预测的JSONPath出现的次数,Nj表示在第j条查询中所有JSONPath的数量;
S213.计算JSONPath在训练样本日期内出现的次数Oj;
S214.根据Aj、Rj以及Oj,计算第j条JSONPath的分数Scorej,公式如下:
Scorej=Aj*Rj*Oj。
7.如权利要求5或6所述的方法,其特征在于,在存储空间有限的情况下,分数高的JSONPath被优先缓存,直到缓存空间用尽为止;当存储空间用尽时,当天的缓存结束;在下一天的凌晨开始,缓存空间将被清理,重新按照前述逻辑缓存新的JSONPath对应的JSON字段值。
8.如权利要求1所述的方法,其特征在于,将缓存命中的JSONPath对应的字段值替换成对缓存表的引用,余下的未被缓存的值存放于用户原始数据表中;所述用户原始数据表和缓存表分区对齐。
9.如权利要求8所述的方法,其特征在于,被缓存命中的JSONPath从缓存表中读取值,其他未被命中的以及非JSON列则从原始数据表中读取,合并从原始数据表和缓存表读取的值。
10.一种单用户多工作负载之间JSON解析优化系统,其特征在于,该系统包括:
JSONPath预测器,用于基于用户的JSONPath历史访问信息,预测会被该用户重复访问的JSONPath;
JSONPath缓存器,用于将预测的JSONPath对应的JSON字段提前缓存到缓存表;
查询处理器,用于当用户的查询包含预测的JSONPath时,直接从缓存表中读取对应的JSON字段。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010110669.1A CN111460229B (zh) | 2020-02-23 | 2020-02-23 | 单用户多工作负载之间json解析优化方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010110669.1A CN111460229B (zh) | 2020-02-23 | 2020-02-23 | 单用户多工作负载之间json解析优化方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111460229A true CN111460229A (zh) | 2020-07-28 |
CN111460229B CN111460229B (zh) | 2023-06-09 |
Family
ID=71685180
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010110669.1A Active CN111460229B (zh) | 2020-02-23 | 2020-02-23 | 单用户多工作负载之间json解析优化方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111460229B (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102999563A (zh) * | 2012-11-01 | 2013-03-27 | 无锡成电科大科技发展有限公司 | 基于资源描述框架的网络资源语义检索方法及系统 |
CN103678338A (zh) * | 2012-09-07 | 2014-03-26 | 中国科学院计算机网络信息中心 | 一种带智能缓存模块的物联网标识解析方法 |
CN106161669A (zh) * | 2015-04-28 | 2016-11-23 | 阿里巴巴集团控股有限公司 | 一种快速域名解析方法和系统、及其终端和服务器 |
US20170091265A1 (en) * | 2015-09-30 | 2017-03-30 | International Business Machines Corporation | System and method of query processing with schema change in json document store |
CN107967335A (zh) * | 2017-12-04 | 2018-04-27 | 华中科技大学 | 一种分布式sql处理方法及系统 |
CN108446340A (zh) * | 2018-03-02 | 2018-08-24 | 哈尔滨工业大学(威海) | 一种面向海量小文件的用户热点数据访问预测方法 |
CN109558128A (zh) * | 2018-10-25 | 2019-04-02 | 平安科技(深圳)有限公司 | json数据解析方法、装置及计算机可读存储介质 |
WO2019144066A1 (en) * | 2018-01-22 | 2019-07-25 | Jack Copper | Systems and methods for preparing data for use by machine learning algorithms |
CN110442810A (zh) * | 2019-08-08 | 2019-11-12 | 广州华建工智慧科技有限公司 | 一种基于DeepFM推荐算法的移动端BIM模型智能缓存方法 |
JP2019204472A (ja) * | 2018-05-22 | 2019-11-28 | 広東技術師範学院 | Hadoopに基づいて、データマージモジュールとHBaseキャッシュモジュールを備えるHDFSから複数の2MB以下の小さなファイルを読み込む方法 |
-
2020
- 2020-02-23 CN CN202010110669.1A patent/CN111460229B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103678338A (zh) * | 2012-09-07 | 2014-03-26 | 中国科学院计算机网络信息中心 | 一种带智能缓存模块的物联网标识解析方法 |
CN102999563A (zh) * | 2012-11-01 | 2013-03-27 | 无锡成电科大科技发展有限公司 | 基于资源描述框架的网络资源语义检索方法及系统 |
CN106161669A (zh) * | 2015-04-28 | 2016-11-23 | 阿里巴巴集团控股有限公司 | 一种快速域名解析方法和系统、及其终端和服务器 |
US20170091265A1 (en) * | 2015-09-30 | 2017-03-30 | International Business Machines Corporation | System and method of query processing with schema change in json document store |
CN107967335A (zh) * | 2017-12-04 | 2018-04-27 | 华中科技大学 | 一种分布式sql处理方法及系统 |
WO2019144066A1 (en) * | 2018-01-22 | 2019-07-25 | Jack Copper | Systems and methods for preparing data for use by machine learning algorithms |
CN108446340A (zh) * | 2018-03-02 | 2018-08-24 | 哈尔滨工业大学(威海) | 一种面向海量小文件的用户热点数据访问预测方法 |
JP2019204472A (ja) * | 2018-05-22 | 2019-11-28 | 広東技術師範学院 | Hadoopに基づいて、データマージモジュールとHBaseキャッシュモジュールを備えるHDFSから複数の2MB以下の小さなファイルを読み込む方法 |
CN109558128A (zh) * | 2018-10-25 | 2019-04-02 | 平安科技(深圳)有限公司 | json数据解析方法、装置及计算机可读存储介质 |
CN110442810A (zh) * | 2019-08-08 | 2019-11-12 | 广州华建工智慧科技有限公司 | 一种基于DeepFM推荐算法的移动端BIM模型智能缓存方法 |
Non-Patent Citations (1)
Title |
---|
王为;金海;吴松;熊慕舟;: "GDSS系统中文件缓存副本策略及其性能研究", 华中科技大学学报(自然科学版), no. 1 * |
Also Published As
Publication number | Publication date |
---|---|
CN111460229B (zh) | 2023-06-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Mehmood et al. | Challenges and solutions for processing real-time big data stream: a systematic literature review | |
CA3088695C (en) | Method and system for decoding user intent from natural language queries | |
US8150723B2 (en) | Large-scale behavioral targeting for advertising over a network | |
Zhang et al. | Towards high-throughput Gibbs sampling at scale: A study across storage managers | |
WO2006121536A2 (en) | Performant relevance improvements in search query results | |
CA2919878A1 (en) | Refining search query results | |
CN115391495B (zh) | 在中文语境中检索关键词的方法、装置及设备 | |
CN108475266A (zh) | 用来移除匹配文档的匹配修复 | |
Filip et al. | Comparison of MySQL and MongoDB with focus on performance | |
Meduri et al. | Evaluation of machine learning algorithms in predicting the next SQL query from the future | |
Munir et al. | A cost-based storage format selector for materialized results in big data frameworks | |
Xin et al. | Enhancing the interactivity of dataframe queries by leveraging think time | |
Niu | Optimization of teaching management system based on association rules algorithm | |
CN111460229B (zh) | 单用户多工作负载之间json解析优化方法和系统 | |
Shi et al. | Maxson: Reduce duplicate parsing overhead on raw data | |
Yang et al. | An evolutionary algorithm for column family schema optimization in HBase | |
Chen | Multi-perspective evaluation of relational and graph databases | |
Wu et al. | Research on search optimization based on Oracle database | |
Chen | Reducing web page complexity to facilitate effective user navigation | |
Hong et al. | Evaluating Presto and SparkSQL with TPC-DS | |
Li | Automatic Synonym Extraction and Context-based Query Reformulation for Points-of-Interest Search | |
Siedlaczek | Efficiency and Scalability of Large Search Architectures | |
Chen | Research and Simulation of Improved Topic Web Crawler Algorithm based on Deep Learning | |
Shouyu et al. | Question Answering Retrieval Method for Knowledge-Based with Dynamic Programming Algorithm | |
Raines et al. | Semantic Vector Search using an HNSW Index for Twitter Data |
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 |