一种基于Geode的大数据查询服务方法及系统与流程

文档序号:33037269发布日期:2023-01-24 20:21阅读:26来源:国知局
一种基于Geode的大数据查询服务方法及系统与流程
一种基于geode的大数据查询服务方法及系统
技术领域
1.本发明属于电信及互联网领域,涉及到缓存架构对外提供服务的方法及系统,尤其是一种基于geode的大数据查询服务方法及系统。


背景技术:

2.随着互联网技术和电信通信业务的高速发展以及公司业务的扩大,对海量数据的查询往往耗费较长的时间,特别是针对一些复杂的热点查询,在高并发下往往对计算层和存储层都具有较高的压力,在实际应用中往往更会出现查询延迟的情况。当前复杂的项目中数据存储可能会涉及rdbms(关系数据库管理系统)、nosql(泛指非关系型的数据库)和hdfs(分布式文件系统)等,其存储的介质较多,不同的查询会路由到不同的数据源,当下业界可能会对各个数据存储层本身做缓存,如druid(一个开源的分布式数据存储)针对实时热点数据做segment(片段)缓存、es(全称elasticsearch,分布式搜索和分析引擎)对结果的filter cache(缓存过滤)以及mysql(数据库)对sql文本和结果缓存,用kv(key-value,即键值对)形式保存在服务器缓存中等,但是他们存放的都是实时的热点数据,对于查询同期数据,还得从历史节点中查询,另外缺一个对各种数据源统一管理的中间层缓存,数据大多只是缓存在各自的容器中,无法灵活处理跨数据源经过逻辑处理后再缓存。当下业界针对大规模、大数据量、高并发企业级或者互联网应用,为了解决数据缓存、降低数据库负载喝提高查询性能等突出问题,也有一些缓存方案,如hazelcast(开源的分布式内存级别的缓存数据库)、redis(一个kv存储系统)、memcache(一套分布式的高速缓存系统)以及cassandra(开源分布式nosql数据库系统)等,这些方案对于处理复杂的缓存场景并不理想,多数都是分布式kv(key-value,即键值对)存储系统,对缓存结果的过滤查询、数据权限控制、聚合后的二次过滤和sql查询均不支持。


技术实现要素:

3.为解决复杂项目中多个数据源缓存数据问题以及查询方式最终统一化问题,本发明提供一种基于geode的大数据查询服务方法及系统,基于geode设计的中间层缓存,该中间层缓存对下提供服务可以任意抽取rdbms、nosql和hdfs等不同类型的数据源数据,将数据统一缓存到中间层中,基于中间层可以对跨数据源的数据进行逻辑处理,将处理后的结果存储在geode中,基于中间层还可以对上为用户提供统一查询服务,直接对其结果进行查询。
4.为实现上述目的,本发明采用下述技术方案:
5.在本发明一实施例中,提出了一种基于geode的大数据查询服务方法,该方法包括:
6.将不同数据源的数据需要缓存对象放入缓存池中,按照优先级进行topn排序,再根据热度排序将需要缓存对象依次放入缓存队列中;
7.从缓存队列中取出需要缓存对象进行缓存,并将需要缓存对象的数据从不同数据
源抽取到中间层geode中进行缓存;
8.通过指定需要持久化,实现需要缓存对象的数据持久化;
9.根据缓存队列,每天提前预计算出前一天的离线数据缓存到中间层geode中,并采用先清理再插入的方式对需要缓存对象的数据进行更新;
10.为用户提供统一对外查询服务接口对需要缓存对象的数据进行查询;
11.将不同数据源的数据缓存到中间层geode中进行关联分析,并为用户提供统一对外查询服务接口进行关联查询。
12.进一步地,将查询高频且耗时长的维度和指标锁定为缓存对象,同时支持手工指定或配置进行特定对象的缓存。
13.进一步地,根据热点排序,将在缓存队列长度以外的需要缓存对象视为无效缓存,从缓存队列中删除。
14.进一步地,用户发起请求后,若命中需要缓存对象,则通过统一对外查询服务接口进行查询,并从中间层geode获取需要缓存对象的数据;若未命中需要缓存对象,则进行常规olap查询。
15.在本发明一实施例中,还提出了一种基于geode的大数据查询服务系统,该系统包括:
16.智能缓存模块,用于将不同数据源的数据需要缓存对象放入缓存池中,按照优先级进行topn排序,再根据热度排序将需要缓存对象依次放入缓存队列中;
17.缓存创建和初始化模块,用于从缓存队列中取出需要缓存对象进行缓存,并将需要缓存对象的数据从不同数据源抽取到中间层geode中进行缓存;
18.缓存持久化模块,用于通过指定需要持久化,实现需要缓存对象的数据持久化;
19.缓存数据更新模块,用于根据缓存队列,每天提前预计算出前一天的离线数据缓存到中间层geode中,并采用先清理再插入的方式对需要缓存对象的数据进行更新;
20.缓存数据查询模块,用于为用户提供统一对外查询服务接口对需要缓存对象的数据进行查询;
21.跨数据源查询模块,用于将不同数据源的数据缓存到中间层geode中进行关联分析,并为用户提供统一对外查询服务接口进行关联查询。
22.进一步地,将查询高频且耗时长的维度和指标锁定为缓存对象,同时支持手工指定或配置进行特定对象的缓存。
23.进一步地,根据热点排序,将在缓存队列长度以外的需要缓存对象视为无效缓存,从缓存队列中删除。
24.进一步地,用户发起请求后,若命中需要缓存对象,则通过统一对外查询服务接口进行查询,并从中间层geode获取需要缓存对象的数据;若未命中需要缓存对象,则进行常规olap查询。
25.在本发明一实施例中,还提出了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现前述基于geode的大数据查询服务方法。
26.在本发明一实施例中,还提出了一种计算机可读存储介质,计算机可读存储介质存储有执行基于geode的大数据查询服务方法的计算机程序。
27.有益效果:
28.1、本发明使缓存数据得到了统一的管理,不同的数据源可以动态的添加,只需要增加对应的数据源服务接口即可,完美的支持了动态的横向扩展。
29.2、本发明将数据统一存放在中间层,很方便的实现了跨数据源的数据逻辑处理,可将处理后的结果数据存储在中间层。
30.3、本发明由中间层缓存提供统一对外提供查询服务接口,用户无需关注具体针对不同存储介质的查询语法,更不用关注数据具体存储在哪里,只需调用统一对外查询服务接口就会返回想要的结果数据。
附图说明
31.图1是本发明一实施例的基于geode的大数据查询服务方法流程示意图;
32.图2是本发明一实施例的基于geode的大数据查询服务系统结构示意图;
33.图3是本发明一实施例的计算机设备结构示意图。
具体实施方式
34.下面将参考若干示例性实施方式来描述本发明的原理和精神,应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
35.本领域技术人员知道,本发明的实施方式可以实现为一种系统、系统、设备、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
36.根据本发明的实施方式,提出了一种基于geode的大数据查询服务方法及系统,解决复杂项目中多个数据源缓存数据方案问题以及查询方式最终统一化问题,并且查询性能得到显著提升;其次数据分析支持sql,易用性较好,oql支持复杂的数据分析场景;最后采用此方法及装置,数据存储支持分布式的支持横向扩展和高并发的查询。
37.下面参考本发明的若干代表性实施方式,详细阐释本发明的原理和精神。
38.图1是本发明一实施例的基于geode的大数据查询服务方法流程示意图。如图1所示,该方法包括:
39.1、智能缓存(算法)
40.根据特定的算法(记录对象被查询的次数,每天利用快速排序算法取前n个缓存)将查询高频且耗时长的维度和指标(基于对每个维度和指标平均查询耗时的预估以及对每个维度和指标查询的次数(频率)统计,计算出查询耗时长且高频的维度和指标的组合)锁定为缓存对象,同时也支持手工指定或配置进行特定对象的缓存,在算法不精确的情况下可提高命中率,在特殊场景下运用,如给特定的业务人群进行缓存;然后将存于不同数据源的数据需要缓存对象放入缓存池中,按照优先级进行topn需要缓存对象,可对其前100(可设置)个进行缓存,再根据热度(记录对象被查询的次数,即为热度,次数越大则热度越高,并存放在中间层geode中)排序,智能将优先级较高的需要缓存对象放入缓存队列,将热度降低到缓存队列长度以外的需要缓存对象视为无效缓存,从缓存队列中删除。
41.2、缓存创建和初始化
42.通过创建类的形式进行缓存对象的创建,可以采用geode本身支持的oql语法进行创建,如create region
‑‑
name=casha
‑‑
type=replicate_persistent,casha则表示缓存的结果对象,可以认为数据库里的表,后续对缓存数据的查询可用oql直接对casha进行操作,插入数据put
‑‑
region=casha
‑‑
key="1"
‑‑
value="one",可以用java类对象作为缓存对象的值(数据)。
43.将缓存队列中取出需要缓存对象进行缓存,启动调度任务分别从不同数据源进行任务调度,将需要缓存对象的数据从不同数据源抽取到中间层geode中进行缓存,完成缓存初始化。其中缓存对象的设计方式可以参考标准的oql方式,缓存对象的创建和缓存数据初始化完全采用oql的方式。表代表要缓存的结果集,里面的字段代表要缓存的对象。
44.3、缓存持久化
45.采用类的形式进行缓存数据的存储,如region.put(1,new casha(1,2,3))。关于中间层geode缓存的持久化,和纯缓存的使用场景一样,当打开持久化时,每个独立的节点只会持久化数据的一个子集,不管是主节点还是备节点,都是只包括节点所属的分区的数据,总的来说,整个集群包括了完整的数据集。持久化是可选的,可以打开也可以关闭,当关闭时就会变成一个纯缓存存储,重启服务后数据丢失,打开持久化,则数据存入磁盘和缓存,重启服务后,数据会自动加载到缓存。缓存的结果是对指标和维度的整个数据集进行缓存,不区分不同用户的权限,缓存的结果集包括查询的维度和指标、涉及到的权限维度和查询条件等。
46.4、缓存数据更新
47.根据智能缓存所缓存的队列,每天提前预计算好前一天的离线数据(数据包括:hdfs数据,es数据,druid数据和关系型数据库数据等。计算:根据业务需要做计算,比如根据相关维度做聚合计算,或者根据某些维度做分组去重计算等)存储到中间层geode中,可以根据指定的不同数据源,根据指定的抽取数据规则(如:根据日期条件抽取明细数据,或者根据手机号抽取用户上网聚合数据等),自动抽取需要缓存的数据存入到中间层geode进行缓存,更新的方式采用先清理再插入的方式。
48.5、缓存数据查询
49.用户发起请求后,如果命中了需要缓存对象(根据条件查询中间层geode,查询到需要缓存对象,即命中,否则未命中),则从中间层geode中获取对应的缓存数据,如果未命中,则进行常规的olap查询。其中,中间层geode的缓存数据面向用户,用户可根据提供的统一对外查询服务接口进行查询,可对不同用户的同一结果集进行操作包括涉及到对缓存数据的过滤、缓存数据权限以及缓存数据聚合后的二次过滤等,均可采用标准oql的方式,此种方式的查询与标准数据库方式一样简单易用。
50.6、跨数据源查询
51.在实际的业务场景中,用户往往需要从不同的数据源中获取到数据后再进行关联查询,而本发明设计的中间层缓存方案可以将不同数据源数据很容易的进行关联查询。场景举例:比如销售订单数据存放在elasticsearch,会员数据存放在postgresql(一种关系型数据库),现在想获取新买家和老买家的销售数据,就可以先将销售数据从elasticsearch缓存到中间层geode,将这个数据集合命名为表a,把会员数据从postgresql
中缓存到中间层geode,将这个数据集合命名为表b,对这两个来自不同数据源的数据进行关联分析操作,只要拿a表和b表进行关联oql分析即可,用户可根据提供的统一对外查询服务接口进行关联查询。
52.综上,基于中间层缓存架构设计的查询方案比普通的olap查询性能提高10倍以上。
53.geode全称apache geode,是一个开源项目,提供低延迟、高并发数据管理解决方案,geode可用作redis和memcached的替代品,同时支持类似sql的查询。
54.jvm是javavirtualmachine(java虚拟机)的缩写,是java程序运行的必要环境。
55.需要说明的是,尽管在上述实施例及附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
56.基于同一发明构思,本发明还提出一种基于geode的大数据查询服务系统。该系统的实施可以参见上述方法的实施,重复之处不再赘述。以下所使用的术语“模块”,可以是实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的系统较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
57.图2是本发明一实施例的基于geode的大数据查询服务系统结构示意图。如图2所示,该系统包括:
58.智能缓存模块101,用于将不同数据源的数据需要缓存对象放入缓存池中,按照优先级进行topn排序,再根据热度排序将需要缓存对象依次放入缓存队列中;
59.将查询高频且耗时长的维度和指标锁定为缓存对象,同时支持手工指定或配置进行特定对象的缓存;
60.根据热点排序,将在缓存队列长度以外的需要缓存对象视为无效缓存,从缓存队列中删除;
61.缓存创建和初始化模块102,用于从缓存队列中取出需要缓存对象进行缓存,并将需要缓存对象的数据从不同数据源抽取到中间层geode中进行缓存;
62.缓存持久化模块103,用于通过指定需要持久化,实现需要缓存对象的数据持久化;
63.缓存数据更新模块104,用于根据缓存队列,每天提前预计算出前一天的离线数据缓存到中间层geode中,并采用先清理再插入的方式对需要缓存对象的数据进行更新;
64.缓存数据查询模块105,用于为用户提供统一对外查询服务接口对需要缓存对象的数据进行查询;
65.用户发起请求后,若命中需要缓存对象,则通过统一对外查询服务接口进行查询,并从中间层geode获取需要缓存对象的数据;若未命中需要缓存对象,则进行常规olap查询;
66.跨数据源查询模块106,用于将不同数据源的数据缓存到中间层geode中进行关联分析,并为用户提供统一对外查询服务接口进行关联查询。
67.应当注意,尽管在上文详细描述中提及了基于geode的大数据查询服务系统的若干模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本发明的实施方式,上
文描述的两个或更多模块的特征和功能可以在一个模块中具体化。反之,上文描述的一个模块的特征和功能可以进一步划分为由多个模块来具体化。
68.基于前述发明构思,如图3所示,本发明还提出一种计算机设备200,包括存储器210、处理器220及存储在存储器210上并可在处理器220上运行的计算机程序230,处理器220执行计算机程序230时实现前述基于geode的大数据查询服务方法。
69.基于前述发明构思,本发明还提出一种计算机可读存储介质,计算机可读存储介质存储有执行前述基于geode的大数据查询服务方法的计算机程序。
70.本发明提出的基于geode的大数据查询服务方法及系统,具备以下优点:
71.1、针对复杂项目中多个数据源问题,统一提供了中间层缓存存储服务,提供相关的服务可以将rdbms、nosql和hdfs等不同类型的数据源数据都拉入到中间层,存储在geode集群中。
72.2、基于中间层提供统一对外查询服务接口,用户无需关心底层数据从不同数据源获取问题,对于用户来说,存储在不同介质中的数据查询方式已经得到统一。
73.3、在中间层中,可以把不同数据源缓存的数据做二次处理,做完跨数据源的数据处理后结果仍可保存在中间层geode中,最后提供服务供用户查询。
74.4、解决了查询在历史节点上存放的同期非缓存数据问题,比如druid自身的缓存存放的都是实时的热点数据在实时节点中,同期数据在历史节点上,查询同期数据就无法命中缓存;而利用本设计的缓存方案可以将同期和本期数据(可以缓存比如前一天的数据,或者去年的数据,或者上个月的数据;同期和本期根据业务场景:比如本期是今天,那同期就是昨天,或者上个月的今天;如果本期是这个月,那同期可能是上个月;比如下文提到“每天提前预计算好前一天的离线数据”,那每一个前一天都是下一天的同期)同时缓存起来,查询的时候直接从缓存中读取,性能得到较大的提高。
75.虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包含的各种修改和等同布置。
76.对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1