CN111190929B - 数据存储查询方法、装置、电子设备及存储介质 - Google Patents
数据存储查询方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN111190929B CN111190929B CN201911379887.9A CN201911379887A CN111190929B CN 111190929 B CN111190929 B CN 111190929B CN 201911379887 A CN201911379887 A CN 201911379887A CN 111190929 B CN111190929 B CN 111190929B
- Authority
- CN
- China
- Prior art keywords
- apache
- couchdb
- data
- plug
- 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
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
- G06F16/24552—Database cache management
-
- 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
-
- 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)
- Databases & Information Systems (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种数据存储查询方法、装置、电子设备及存储介质。该方法通过Apache Drill引擎将用户输入的批量数据获取指令发送给CouchDB插件;由CouchDB插件根据批量数据获取指令从Apache CouchDB数据库获取对应的目标数据集,并将目标数据集发送给Apache Drill引擎;由Apache Drill引擎根据目标数据集对缓存空间中存储的Apache CouchDB数据库中的数据进行更新。使得Apache CouchDB数据库支持标准SQL语句的同时,利用Apache Drill引擎的缓存空间提高Apache CouchDB数据库获取批量数据时的性能。
Description
技术领域
本申请涉及计算机领域,具体而言,涉及一种数据存储查询方法、装置、电子设备及存储介质。
背景技术
目前,Apache CouchDB数据库是一个新兴的面向文档的数据库,它提供以JSON(JavaScript Object Notation,JS对象简谱)作为数据格式的REST(RepresentationalState Transfer,表述性状态传递)接口,并可以通过视图来对文档进行操纵以及呈现。其中,相较与目前流行的MongoDB数据库,该Apache CouchDB数据库具有如下优点:
Apache CouchDB的数据模型是JSON,这比目前流行的MongoDB数据库所使用的BSON(BinaryJSON)更易于扩展。Apache CouchDB数据库的查询接口是HTTP/RESTAPI,所以任何支持HTTP协议的程序语言均可操作Apache CouchDB数据库。作为一个crash-only系统,用户可以随时停止Apache CouchDB数据库的服务并能保证数据一致性。ApacheCouchDB数据库的服务端操作系统支持Android、BSD等操作系统。
然而,Apache CouchDB数据库目前自身存在获取批量数据时性能低下,且不支持标准的SQL(Structured Query Language,结构化查询语言)语句等问题,这极大的限制了Apache CouchDB数据库的应用、推广和普及。
发明内容
本申请实施例提供一种数据查询方法、装置、电子设备及存储介质,旨使得ApacheCouchDB数据库能够支持SQL语句的同时,提高Apache CouchDB数据库获取批量数据时的性能。
为了克服现有技术中的至少一个不足,本申请的目的之一在于提供一种数据存储查询方法,应用于配置有数据存储查询系统的电子设备,该数据存储查询系统包括ApacheDrill引擎、Apache CouchDB数据库以及CouchDB插件,所述CouchDB插件用于将所述ApacheDrill引擎的操作命令转换成所述Apache CouchDB数据库的操作命令,所述Apache Drill引擎提供缓存空间用以存储所述Apache CouchDB数据库中的数据,所述方法包括:
由所述Apache Drill引擎获取用户对所述Apache CouchDB数据库的批量数据获取指令,将所述批量数据获取指令发送给所述CouchDB插件;
由所述CouchDB插件根据所述批量数据获取指令从所述Apache CouchDB数据库获取对应的目标数据集,并将所述目标数据集发送给所述Apache Drill引擎;
由所述Apache Drill引擎根据所述目标数据集对所述缓存空间中的数据进行更新。
可选地,所述方法还包括:
由所述Apache Drill引擎获取用户对所述Apache CouchDB数据库的数据操作指令,将所述数据操作指令发送给所述CouchDB插件;
由所述CouchDB插件解析所述数据操作指令,获取所述数据操作指令的操作目标以及对应的筛选条件;
由所述CouchDB插件获取所述操作目标对应的目标数据,将所述目标数据与所述筛选条件发送所述Apache Drill引擎;
由所述Apache Drill引擎根据所述筛选条件对所述目标数据进行筛选,并将筛选后的结果提供给用户。
可选地,数据操作指令为标准SQL语句,所述CouchDB插件解析所述数据操作指令,获取所述数据操作指令的操作目标以及对应的筛选条件的步骤包括:
由所述CouchDB插件根据所述标准SQL语句的关键字以及语法结构对所述数据操作指令进行解析,获取数据操作指令的操作目标以及对应的筛选条件。
可选地,所述方法还包括:
由所述Apache Drill引擎提供一配置界面,响应用户在该配置界面的配置操作,获得对应的配置参数,所述配置参数包括所述Apache CouchDB数据库的地址;
由所述Apache Drill引擎件将所述地址发送给所述CouchDB插件;
由所述CouchDB插件根据所述地址与所述Apache CouchDB数据库连接。
可选地,CouchDB插件预设有对应的配置文件,所述方法还包括:
由所述Apache Drill引擎获取所述配置文件,根据所述配置文件中的配置信息加载该CouchDB插件并进行相应的初始化。
本申请实施例的目的之二在于提供一种数据存储查询装置,应用于电子设备,所述数据存储查询装置包括Apache Drill引擎、Apache CouchDB数据库以及CouchDB插件,所述CouchDB插件用于将所述Apache Drill引擎的操作命令转换成所述Apache CouchDB数据库的操作命令,所述Apache Drill引擎提供缓存空间用以存储所述Apache CouchDB数据库中的数据;所述Apache Drill引擎用于提供缓存空间用以存储所述Apache CouchDB数据库中的数据;
所述Apache Drill引擎用于获取用户对所述Apache CouchDB数据库的批量数据获取指令,将所述批量数据获取指令发送给所述CouchDB插件;
所述CouchDB插件用于根据所述批量数据获取指令从所述Apache CouchDB数据库获取对应的目标数据集,并将所述目标数据集发送给所述Apache Drill引擎;
所述Apache Drill引擎还用于根据所述目标数据集对所述缓存空间中的数据进行更新。
可选地,所述Apache Drill引擎还用于获取用户对所述Apache CouchDB数据库的数据操作指令,将所述数据操作指令发送给所述CouchDB插件;
所述CouchDB插件还用于解析所述数据操作指令,获取所述数据操作指令的操作目标以及对应的筛选条件;
所述CouchDB插件还用于获取所述操作目标对应的目标数据,将所述目标数据与所述筛选条件发送所述Apache Drill引擎;
所述Apache Drill引擎还用于根据所述筛选条件对所述目标数据进行筛选,并将筛选后的结果提供给用户。
可选地,所述操作指令为标准SQL语句,所述CouchDB插件通过如下方式取所述数据操作指令的操作目标以及对应的筛选条件:
根据所述标准SQL语句的关键字以及语法结构对所述数据操作指令进行解析,获取数据操作指令的操作目标以及对应的筛选条件。
本申请实施例的目的之三在于提供一种电子设备,包括处理器和存储器,所述存储器存储有能够被所述处理器执行的机器可执行指令,所述处理器可执行所述机器可执行指令,以实现数据存储查询方法。
本申请实施例的目的之四在于提供一种存储介质,其上存储有计算机程序,所述计算机程序被执行时,实现所述数据存储查询方法。
相对于现有技术而言,本申请具有以下有益效果:
本申请实施例提供一种数据查询方法、装置、电子设备及存储介质。将ApacheDrill引擎与Apache CouchDB数据库结合,通过CouchDB插件将Apache Drill引擎的操作命令转换成Apache CouchDB数据库的操作命令,并将Apache CouchDB数据库中的数据缓存到Apache Drill引擎的缓存空间。如此,使得该Apache CouchDB数据库支持标准SQL语句的同时,利用Apache Drill引擎的缓存空间提高Apache CouchDB数据库获取批量数据时的性能。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的电子设备的结构示意图;
图2为本申请实施例提供的数据存储查询方法步骤流程图;
图3为本申请实施例提供的CouchDB插件下批量数据获取性能对比图;
图4为本申请实施例提供的Apache CouchDB数据库工作流程示意图;
图5为本申请实施例提供的Apache Drill引擎的框架结构示意图;
图6为本申请实施例提供的数据存储查询装置的结构示意图。
图标:100-电子设备;110-数据存储查询装置;120-存储器;130-处理器;1101-Apache Drill引擎;1102-Apache CouchDB数据库;1103-CouchDB插件。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。
如本背景技术部分所描述,Apache CouchDB数据库目前自身存在获取批量数据时性能低下,且不支持标准的SQL语句等问题,这极大的限制了,Apache CouchDB数据库的应用、推广和普及。
鉴于此,本申请实施例提供一种数据存储查询方法,应用于配置有数据存储查询系统的电子设备。请参照图1,所述电子设备100包括数据存储查询装置110、存储器120以及处理器130。
所述存储器120及处理器130各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。所述数据存储查询装置110包括至少一个可以软件或固件(firmware)的形式存储于所述存储器120中或固化在所述电子设备100的操作系统(operatingsystem,OS)中的软件功能模块。所述处理器130用于执行所述存储器120中存储的可执行模块,例如所述数据存储查询装置110所包括的软件功能模块及计算机程序等。
其中,所述存储器120可以是,但不限于,随机存取存储器(RandomAccessMemory,RAM),只读存储器(ReadOnlyMemory,ROM),可编程只读存储器(ProgrammableRead-OnlyMemory,PROM),可擦除只读存储器(ErasableProgrammableRead-OnlyMemory,EPROM),电可擦除只读存储器(ElectricErasableProgrammableRead-OnlyMemory,EEPROM)等。其中,存储器120用于存储程序,所述处理器130在接收到执行指令后,执行所述程序。
所述处理器130可能是一种集成电路芯片,具有信号的处理能力。上述的处理器可以是通用处理器,包括中央处理器(CentralProcessingUnit,简称CPU)、网络处理器(NetworkProcessor,简称NP)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
该数据存储查询系统包括Apache Drill引擎、Apache CouchDB数据库以及CouchDB插件,所述CouchDB插件用于将所述Apache Drill引擎的操作命令转换成ApacheCouchDB数据库的操作命令,所述Apache Drill引擎提供缓存空间用以存储所述ApacheCouchDB数据库中的数据。请参照图2,图2为本申请实施例提供的数据存储查询方法的步骤流程示意图。以下将对所述方法包括各个步骤进行详细阐述。
步骤S100,由所述Apache Drill引擎获取用户对所述Apache CouchDB数据库的批量数据获取指令,将所述批量数据获取指令发送给所述CouchDB插件。
应理解,在进行大数据分析时,需要获取数据库中大量的数据以方便对其他相应的大数据分析程序对其进行分析处理。数据库批量数据获取能力,对大数据分析的效率具有重要意义。该Apache Drill引擎作为目前流行的大数据实时查询引擎,包括以下优点:
(1)Apache Drill引擎使用易于学习、使用广泛的SQL语句作为查询语句。
(2)Apache Drill引擎是第一个也是唯一不需要定义数据表结构的分布式SQL查询引擎,它可以自动理解数据的结构而无需定义和维护模式,也无需做额外的数据转换工作。
(3)Apache Drill引擎的数据源是可扩展的,用户可将Apache Drill引擎连接到文件系统、Hbase数据库和Hive数据库等,用户也可自行实现存储插件使其与Apache Drill引擎连接,Apache Drill引擎可以在单个查询中动态组合来自多个数据源的数据。ApacheDrill不仅支持结构化的数据源,同时也支持MongoDB数据库、logfile数据库等半结构化与非结构化数据源。
上述优点使得Apache Drill引擎逐渐成为最为流行的开源大数据分布式实时查询引擎之一。
步骤S200,由所述CouchDB插件根据所述批量数据获取指令从所述ApacheCouchDB数据库获取对应的目标数据集,并将所述目标数据集发送给所述Apache Drill引擎。
步骤S300,由所述Apache Drill引擎根据所述目标数据集对所述缓存空间中的数据进行更新。
应理解,该Apache Drill引擎提供缓存空间为Apache Drill引擎基于Infinispan(Infinispan为一种分布式键值存储系统)所提供的分布式缓存,Infinispan是一个带有可选模式的分布式键值存储系统,可在协议ApacheLicense2.0下使用。该Apache Drill引擎既可以用作嵌入式Java库,也可以用作通过各种协议远程访问的与计算机语言无关的服务(HotRod,REST,Memcached和WebSockets)。同时,Apache Drill引擎提供了诸如事务,事件,查询和分布式处理等高级功能,以及与JCacheAPI标准,CDI,Hibernate,WildFly,SpringCache,SpringSession,Lucene,Spark和Hadoop等框架的大量集成。Apache Drill使用分布式缓存来管理各个节点之间的元数据和配置信息,但不存储数据。存储在缓存中的元数据信息包括查询计划片段,查询执行的中间状态和统计信息。
其中,Apache Drill引擎提供缓存空间主要使用数据结构ValueVector用以提高缓存能力,以及查询效率。该ValueVector为Apache Drill为了在其他大数据分析的程序之间传递列存储数据所定义的数据结构。为了从ValueVector中以常量时间进行随机读取元素的操作,元素的位置由它们从缓冲区起始处的偏移量来标识。可重复的、可为空的以及宽度可变的元素可以利用额外的数据结构fixedwidthValueVector来索引每个元素。
一旦ValueVector被构造出来,将不再支持写访问。ValueVector由一个或多个连续缓冲区组成,一个用于存储一系列值,零个或多个用于存储任意与ValueVector关联的元数据。ValueVector将值存储在一个连续的内存区域中,额外的一个或多个ValueVector用于支持对宽度可变、可为空的、可重复的元素查找,这些空间主要用于构建查找表。而不可为空、不可重复的元素可以直接通过乘以步幅执行访问操作。由于该Apache Drill引擎根据缓存空间中已有的数据,只对部分数据进行更新,极大的缩短了批量数据获取时的耗时。
如此,将Apache Drill引擎与Apache CouchDB数据库结合,通过CouchDB插件将Apache Drill引擎的操作命令转换成Apache CouchDB数据库的操作命令,并将ApacheCouchDB数据库中的数据缓存到Apache Drill引擎的缓存空间。使得该Apache CouchDB数据库支持标准SQL语句的同时,利用Apache Drill引擎的缓存空间提高Apache CouchDB数据库获取批量数据时的性能。
可选地,该电子设备100通过所述Apache Drill引擎获取用户对所述ApacheCouchDB数据库的数据操作指令,将所述数据操作指令发送给所述CouchDB插件。
该电子设备100通过所述CouchDB插件解析所述数据操作指令,获取所述数据操作指令的操作目标以及对应的筛选条件;通过所述CouchDB插件获取所述操作目标对应的目标数据,将所述目标数据与所述筛选条件发送所述Apache Drill引擎。
该电子设备100通过所述Apache Drill引擎根据所述筛选条件对所述目标数据进行筛选,并将筛选后的结果提供给用户。
应理解,该Apache Drill引擎的数据操作指令为标准SQL语句。标准SQL语句主要用于对关系型数据进行操作,如MySQL数据库。本申请实施例中的CouchDB数据库为非关系关系型数据库。因此,该CouchDB插件需要将Apache Drill引擎的数据操作指令进行转换。
该电子设备100通过CouchDB插件根据所述标准SQL语句的关键字以及语法结构对所述数据操作指令进行解析,获取数据操作指令的操作目标以及对应的筛选条件。
请参见图3,图3为本申请实施例提供的Apache CouchDB数据库与Apache Drill引擎结合后,批量数据获取能力的测试对比图。
例如,在一种可能示例中,该数据操作指令的形式为:
“select*fromstudentss,teacherstwheres.teacherid=t.tid”
其中,“select”、“where”为SQL语句的关键字,“studentss”、“teacherst”为操作目标,“s.teacherid=t.tid”为筛选条件。
该电子设备100通过CouchDB插件,基于该数据操作指令的特征进行解析,获取数据操作指令中的操作对象以及筛选条件。
进一步地,该电子设备100通过CouchDB插件通过Apache CouchDB数据库的原生访问指令(原生操作接口),从Apache CouchDB数据库中获取该操作对象对应的全部数据以及该操作对象对应的筛选条件,发送给Apache Drill引擎。
该电子设备100通过Apache Drill引擎根据该筛选条件对该操作对象对应的全部数据进行筛选,将筛选结果提供给用户。
具体的,请参见图4,图4为本申请实施例提供的Apache CouchDB数据库工作流程示意图。
Apache CouchDB对于客户端来说是一个Web服务器,客户端进行HTTP请求并获取HTML(Hypertext Marked Language,超文本标记语言)或JSON格式文档响应。在ApacheCouchDB作为优秀的文档数据库,其内部包含了文档、设计文档和预先计算出查询结果的视图。ApacheCouchDB的数据是作为JSON文档的集合存储在磁盘上的,每个文档都有一个唯一标识符,可用于构造唯一的URL(uniform resource locator,统一资源定位系统)访问资源,设计文档定义了可以在数据库上创建的查询或视图,每个视图的响应结果都是预先计算并存储在磁盘上的。Web应用程序可以通过使用标准的AJAX协议(例如jQuery)进行数据交互,用户可以使用HTTP的GET、POST、PUT以及DELETE方法对Apache CouchDB进行常用的增删查改操作。
具体的,请参照图5,针对每个Apache Drill引擎用于协调、计划和执行查询的进程,包括RPC(Remote Procedure Call,远程过程调用)端点单元、SQL解析单元、优化单元、执行单元、数据源接口单元以及缓存单元。
RPC端点单元用于采用基于protobuf(protobuf是google团队开发灵活的、高效的用于序列化数据的协议)的RPC协议与客户端进行通信。使得客户端应用程序还可以使用C++或者JavaAPI层与RPC端点单元进行交互。
SQL解析单元用于解析传入SQL语句。
优化单元用于基于规则、成本、数据位置和存储引擎公开的其他优化规则来重写和拆分传入SQL语句。优化单元的输出是分布式物理查询计划,它表示在群集中的不同节点上执行查询的最有效和最快速的方法。
执行单元用于供了一个MPP(Massively Parallel Processing,大规模并行处理)执行引擎,用于跨群集中的各个节点执行分布式查询处理。
数据源接口单元用于充当多个数据库的数据源之上的查询层抽象地表示ApacheDrill引擎与数据源交互的操作接口,用于对数据源提供可用元数据以及目标数据在数据源中的位置等。可选的,CouchDB插件位于该数据源接口单元。
缓存单元用于通过分布式缓存管理各种数据源的元数据和配置信息,包括查询计划片段、查询执行的中间状态以及统计信息。具体的,缓存单元使用Infinispan作为其缓存技术。
在一种可能的示例中,为了实现本申请实施例所提供CouchDB插件的相应功能,需要实现Apache Drill引擎所提供的6个接口,分别为AbstractGroupScan、SubScan、RecordReader、BatchCreator、AbstractStoragePlugin以及StoragePluginConfig。上述各接口分别提供如下功能:
AbstractGroupScan:该AbstractGroupScan接口为整个CouchDB插件的主体之一,提供进本的信息查询功能。例如,查询Apache CouchDB数据库中的某一行。
SubScan:该SubScan接口提供Apache CouchDB数据库特定片段数据的扫描。
RecordReader:该RecordReader接口提供读取Apache CouchDB数据库中的数据并将其返回到Apache drill引擎。
BatchCreator:该BatchCreator接口提供获取batchcreator接口的实现类功能。
AbstractStoragePlugin:该AbstractStoragePlugin提供对CouchDB插件进行配置的功能。具体的,提供JSON序列化/反序列化的,Apache Drill会把CouchDB插件的配置存储到/tmp/drill/sys.storage_plugins。ApacheDrill启动时会自动扫描AbstractStoragePlugin实现类中的StoragePluginRegistry方法,并建立StoragePluginConfig.class到AbstractStoragePlugin构造函数的映射。
StoragePluginConfig:该接口StoragePluginConfig提供为AbstractStoragePlugin提供配置。例如,CouchDB插件开关使能、检测CouchDB插件启用状态、设置数据源登陆认证以及设置服务器等。
相应的,为了实现上诉接口,在本申请实施例提供一种可能的示例。提供CouchBatchCreator类用以实现BatchCreator接口;CouchGroupScan类用实现AbstractGroupScan接口,CouchSubScan类用以实现SubScan接口,CouchStoragePlugin类用以实现AbstractStoragePlugin接口,CouchPluginConfig类用以实现StoragePluginConfig接口;CouchRecordReader类用以实现RecordReader接口。
其中,针对CouchBatchCreator类至少需要实现如下方法:
CouchRecordReader(FragmentContext context,CouchSubScan subScan);
该方法为CouchBatchCreator类的构造函数,用以对CouchBatchCreator类的对象进行初始化。
setup(OperatorContext context,OutputMutator output);
该方法提供查询配置、设置查询参数、设置查询模式等功能。
next();
该方法提供查询迭代的功能,根据配置进行查询,并将查询结果写入到ApacheDrill引擎提供存储容器中。
cleanup();
该方法的功能是清理CouchRecordReader类的具体对象。
针对CouchBatchCreator类,至少需要实现如下方法:
getBatch(FragmentContext context,CouchSubScan subScan,List<RecordBatch>children)。
针对CouchGroupScan类至少需要实现如下方法:
CouchGroupScan(String userName,CouchStoragePluginConfig config,CouchScanSpec spec);
该构造方法用以对CouchGroupScan类的对进行初始化。
CouchGroupScan(CouchGroupScan that);
该构造方法用于传入现有的CouchGroupScan对象作为参数,并根据实例化一个新的CouchGroupScan,返回该新的CouchGroupScan对象。
getScanSpec();
该方法的用于获取扫描条件。
getSpecificScan(int minorFragmentId);
该方法用于获取子扫描对象,返回一个新的SubScan对象。
getStorageConfig();
该方法用于获取存储插件的配置信息,返回值为couchConfig对象。
针对CouchStoragePlugin类,至少需要实现如下方法:
CouchStoragePlugin(CouchStoragePluginConfig CouchConfig,DrillbitContext context,String name);
该用于根据参数实例化一个存储插件的对象。
CouchStoragePluginConfig getConfig();
该方法用于获取当前存储插件实例的配置信息。
void registerSchemas(SchemaConfig schemaConfig,SchemaPlus parent);
针对CouchPluginConfig类,至少需要实现如下方法:
CouchStoragePluginConfig(@JsonProperty("connection")Stringconnection,@JsonProperty("resultKey")String resultKey);
该方法用于获取用户在web控制台中的配置参数,生成对应的对象。
getConnection();
该方法用于获取CouchDB的链接信息。
可选地,由于Apache Drill引擎支持多种数据库作为数据源,该电子设备100通过Apache Drill引擎提供一配置界面,响应用户在该配置界面的配置操作,获得对应的配置参数,所述配置参数包括所述Apache CouchDB数据库的地址,将所述地址发送给所述CouchDB插件。
该电子设备100通过所述CouchDB插件根据所述地址与所述Apache CouchDB数据库连接。如此,使得CouchDB插件能够访问Apache CouchDB数据库。
其中,该电子设备100通过CouchDB插件与CouchDB数据库建立连接建立连接之前。该电子设备100通过Apache Drill引擎获取所述配置文件,根据所述配置文件中的配置信息加载该CouchDB插件并进行相应的初始化。
可选地,请参照图6,图6为本申请实施例提供的数据存储查询装置110的结构示意图,从功能上划分,该数据存储查询装置110包括Apache Drill引擎1101、Apache CouchDB数据库1102以及CouchDB插件1103。
所述CouchDB插件1103用于将所述Apache Drill引擎1101的操作命令转换成Apache CouchDB数据库1102的操作命令,所述Apache Drill引擎1101提供缓存空间用以存储所述Apache CouchDB数据库1102中的数据;所述Apache Drill引擎1101用于提供缓存空间用以存储所述Apache CouchDB数据库1102中的数据。
所述Apache Drill引擎1101用于获取用户对所述Apache CouchDB数据库1102的批量数据获取指令,将所述批量数据获取指令发送给所述CouchDB插件1103。
在本实施例中,该Apache Drill引擎1101用于执行图2中的步骤S100,关于该Apache Drill引擎1101详细描述,请参见步骤S100的详细描述。
所述CouchDB插件1103用于根据所述批量数据获取指令从所述Apache CouchDB数据库1102获取对应的目标数据集,并将所述目标数据集发送给所述Apache Drill引擎1101。
在本实施例中,该CouchDB插件1103用于执行图2中的步骤S200,关于该CouchDB插件1103的详细描述,请参见步骤S100的详细描述。
所述Apache Drill引擎1101还用于根据所述目标数据集对所述缓存空间中的数据进行更新。
在本实施例中,该Apache Drill引擎1101还用于执行图2中的步骤S300,关于该Apache Drill引擎1101的进一步地详细描述,可以参见步骤S300的详细描述。
可选地,所述CouchDB插件1103还用于解析所述数据操作指令,获取所述数据操作指令的操作目标以及对应的筛选条件;
所述CouchDB插件1103还用于获取所述操作目标对应的目标数据,将所述目标数据与所述筛选条件发送所述Apache Drill引擎1101;
所述Apache Drill引擎1101还用于根据所述筛选条件对所述目标数据进行筛选,并将筛选后的结果提供给用户。
可选地,所述CouchDB插件1103通过如下方式取所述数据操作指令的操作目标以及对应的筛选条件:
根据所述标准MySQL语句的关键字以及语法结构对所述数据操作指令进行解析,获取数据操作指令的操作目标以及对应的筛选条件。
本申请实施例还提供一种电子设备100,包括处理器和存储器,所述存储器存储有能够被所述处理器执行的机器可执行指令,所述处理器可执行所述机器可执行指令,以实现所述数据存储查询方法。
本申请实施例还提供一种存储介质,其上存储有计算机程序,所述计算机程序被执行时,实现所述数据存储查询方法。
综上所述,本申请实施例提供一种数据查询方法、装置、电子设备及存储介质。将Apache Drill引擎与Apache CouchDB数据库结合,通过CouchDB插件将Apache Drill引擎的操作命令转换成Apache CouchDB数据库的操作命令,并将Apache CouchDB数据库中的数据缓存到Apache Drill引擎的缓存空间。如此,使得该Apache CouchDB数据库支持标准SQL语句的同时,利用Apache Drill引擎的缓存空间提高Apache CouchDB数据库获取批量数据时的性能。
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述,仅为本申请的各种实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。
Claims (10)
1.一种数据存储查询方法,其特征在于,应用于配置有数据存储查询系统的电子设备,该数据存储查询系统包括Apache Drill引擎、Apache CouchDB数据库以及CouchDB插件,所述CouchDB插件用于将所述Apache Drill引擎的操作命令转换成所述Apache CouchDB数据库的操作命令,所述Apache Drill引擎提供缓存空间用以存储所述Apache CouchDB数据库中的数据,所述方法包括:
由所述Apache Drill引擎获取用户对所述Apache CouchDB数据库的批量数据获取指令,将所述批量数据获取指令发送给所述CouchDB插件;
由所述CouchDB插件根据所述批量数据获取指令从所述Apache CouchDB数据库获取对应的目标数据集,并将所述目标数据集发送给所述Apache Drill引擎;
由所述Apache Drill引擎根据所述目标数据集对所述缓存空间中的数据进行更新。
2.根据权利要求1所述的数据存储查询方法,其特征在于,所述方法还包括:
由所述Apache Drill引擎获取用户对所述Apache CouchDB数据库的数据操作指令,将所述数据操作指令发送给所述CouchDB插件;
由所述CouchDB插件解析所述数据操作指令,获取所述数据操作指令的操作目标以及对应的筛选条件;
由所述CouchDB插件获取所述操作目标对应的目标数据,将所述目标数据与所述筛选条件发送所述Apache Drill引擎;
由所述Apache Drill引擎根据所述筛选条件对所述目标数据进行筛选,并将筛选后的结果提供给用户。
3.根据权利要求2所述的数据存储查询方法,其特征在于,数据操作指令为标准SQL语句,所述CouchDB插件解析所述数据操作指令,获取所述数据操作指令的操作目标以及对应的筛选条件的步骤包括:
由所述CouchDB插件根据所述标准SQL语句的关键字以及语法结构对所述数据操作指令进行解析,获取数据操作指令的操作目标以及对应的筛选条件。
4.根据权利要求1所述数据存储查询方法,其特征在于,所述方法还包括:
由所述Apache Drill引擎提供一配置界面,响应用户在该配置界面的配置操作,获得对应的配置参数,所述配置参数包括所述Apache CouchDB数据库的地址;
由所述Apache Drill引擎件将所述地址发送给所述CouchDB插件;
由所述CouchDB插件根据所述地址与所述Apache CouchDB数据库连接。
5.根据权利要求1所述的数据存储查询方法,其特征在于,CouchDB插件预设有对应的配置文件,所述方法还包括:
由所述Apache Drill引擎获取所述配置文件,根据所述配置文件中的配置信息加载该CouchDB插件并进行相应的初始化。
6.一种数据存储查询装置,其特征在于,应用于电子设备,所述数据存储查询装置包括Apache Drill引擎、Apache CouchDB数据库以及CouchDB插件,所述CouchDB插件用于将所述Apache Drill引擎的操作命令转换成所述Apache CouchDB数据库的操作命令,所述Apache Drill引擎提供缓存空间用以存储所述Apache CouchDB数据库中的数据;所述Apache Drill引擎用于提供缓存空间用以存储所述Apache CouchDB数据库中的数据;
所述Apache Drill引擎用于获取用户对所述Apache CouchDB数据库的批量数据获取指令,将所述批量数据获取指令发送给所述CouchDB插件;
所述CouchDB插件用于根据所述批量数据获取指令从所述Apache CouchDB数据库获取对应的目标数据集,并将所述目标数据集发送给所述Apache Drill引擎;
所述Apache Drill引擎还用于根据所述目标数据集对所述缓存空间中的数据进行更新。
7.根据权利要求6所述的数据存储查询装置,其特征在于,所述Apache Drill引擎还用于获取用户对所述Apache CouchDB数据库的数据操作指令,将所述数据操作指令发送给所述CouchDB插件;
所述CouchDB插件还用于解析所述数据操作指令,获取所述数据操作指令的操作目标以及对应的筛选条件;
所述CouchDB插件还用于获取所述操作目标对应的目标数据,将所述目标数据与所述筛选条件发送所述Apache Drill引擎;
所述Apache Drill引擎还用于根据所述筛选条件对所述目标数据进行筛选,并将筛选后的结果提供给用户。
8.根据权利要求7所述的数据存储查询装置,其特征在于,所述操作指令为标准SQL语句,所述CouchDB插件通过如下方式取所述数据操作指令的操作目标以及对应的筛选条件:
根据所述标准SQL语句的关键字以及语法结构对所述数据操作指令进行解析,获取数据操作指令的操作目标以及对应的筛选条件。
9.一种电子设备,其特征在于,包括处理器和存储器,所述存储器存储有能够被所述处理器执行的机器可执行指令,所述处理器可执行所述机器可执行指令,以实现权利要求1-5任一项所述的数据存储查询方法。
10.一种存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被执行时,实现权利要求1-5中任意一项所述的数据存储查询方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911379887.9A CN111190929B (zh) | 2019-12-27 | 2019-12-27 | 数据存储查询方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911379887.9A CN111190929B (zh) | 2019-12-27 | 2019-12-27 | 数据存储查询方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111190929A CN111190929A (zh) | 2020-05-22 |
CN111190929B true CN111190929B (zh) | 2023-07-14 |
Family
ID=70709553
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911379887.9A Active CN111190929B (zh) | 2019-12-27 | 2019-12-27 | 数据存储查询方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111190929B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112115150B (zh) * | 2020-08-03 | 2024-03-19 | 上海金仕达软件科技股份有限公司 | 嵌入式内存数据库的数据管理方法、终端设备及介质 |
CN112015877A (zh) * | 2020-09-01 | 2020-12-01 | 陈小河 | 一种常用书籍精细化速查引擎系统 |
CN112925768B (zh) * | 2021-03-03 | 2024-02-27 | 北京中安星云软件技术有限公司 | 一种基于Protobuf协议的HBASE数据库解析方法及系统 |
CN113239070B (zh) * | 2021-06-18 | 2024-07-19 | 广州小鹏汽车科技有限公司 | 数据查询方法、装置及电子设备 |
CN114168942A (zh) * | 2021-12-06 | 2022-03-11 | 北京天融信网络安全技术有限公司 | 语句提取方法、装置、电子设备和计算机可读存储介质 |
CN114449052B (zh) * | 2022-01-28 | 2023-08-29 | 苏州浪潮智能科技有限公司 | 一种数据压缩方法、装置、电子设备及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103258019A (zh) * | 2013-04-28 | 2013-08-21 | 百度在线网络技术(北京)有限公司 | 一种用于提供查询结果的方法和设备 |
CN103365847A (zh) * | 2012-03-27 | 2013-10-23 | 腾讯科技(深圳)有限公司 | 一种自定义网页文件的生成方法和装置 |
CN105122243A (zh) * | 2013-03-15 | 2015-12-02 | 亚马逊科技公司 | 用于半结构化数据的可扩展分析平台 |
CN106294695A (zh) * | 2016-08-08 | 2017-01-04 | 深圳市网安计算机安全检测技术有限公司 | 一种面向实时大数据搜索引擎的实现方法 |
CN107590282A (zh) * | 2017-09-29 | 2018-01-16 | 深圳市安诺软件有限公司 | 一种工作流引擎的处理方法及工作流引擎 |
CN108037973A (zh) * | 2017-12-20 | 2018-05-15 | 苏州优圣美智能系统有限公司 | 一种与数据处理工具交互的数据流建模和处理系统 |
CN110287185A (zh) * | 2019-05-29 | 2019-09-27 | 南京理工大学 | 面向文档键值数据库的一对多关系查询的存储结构及方法 |
-
2019
- 2019-12-27 CN CN201911379887.9A patent/CN111190929B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103365847A (zh) * | 2012-03-27 | 2013-10-23 | 腾讯科技(深圳)有限公司 | 一种自定义网页文件的生成方法和装置 |
CN105122243A (zh) * | 2013-03-15 | 2015-12-02 | 亚马逊科技公司 | 用于半结构化数据的可扩展分析平台 |
CN103258019A (zh) * | 2013-04-28 | 2013-08-21 | 百度在线网络技术(北京)有限公司 | 一种用于提供查询结果的方法和设备 |
CN106294695A (zh) * | 2016-08-08 | 2017-01-04 | 深圳市网安计算机安全检测技术有限公司 | 一种面向实时大数据搜索引擎的实现方法 |
CN107590282A (zh) * | 2017-09-29 | 2018-01-16 | 深圳市安诺软件有限公司 | 一种工作流引擎的处理方法及工作流引擎 |
CN108037973A (zh) * | 2017-12-20 | 2018-05-15 | 苏州优圣美智能系统有限公司 | 一种与数据处理工具交互的数据流建模和处理系统 |
CN110287185A (zh) * | 2019-05-29 | 2019-09-27 | 南京理工大学 | 面向文档键值数据库的一对多关系查询的存储结构及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111190929A (zh) | 2020-05-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111190929B (zh) | 数据存储查询方法、装置、电子设备及存储介质 | |
US20200183932A1 (en) | Optimizing write operations in object schema-based application programming interfaces (apis) | |
AU2017269108B2 (en) | Optimizing read and write operations in object schema-based application programming interfaces (APIS) | |
JP7322119B2 (ja) | ネットワーク上のデータソースへの照会 | |
US8195706B2 (en) | Configuration management visualization | |
US11023500B2 (en) | Systems and methods for code parsing and lineage detection | |
US9959310B2 (en) | Accessing single entities in OData entity sets | |
US11113305B1 (en) | Modeling of a non-relational database as a normalized relational database | |
CN103645951A (zh) | 一种跨平台的移动数据管理系统及其方法 | |
US20100293161A1 (en) | Automatically avoiding unconstrained cartesian product joins | |
US11361149B2 (en) | Techniques for web framework detection | |
US9558307B1 (en) | System and method for providing a scalable server-implemented regression query environment for remote testing and analysis of a chip-design model | |
US20150358383A1 (en) | Odbc access to external services | |
US20200278969A1 (en) | Unified metrics computation platform | |
US10223086B2 (en) | Systems and methods for code parsing and lineage detection | |
US11216477B2 (en) | System and method for performing semantically-informed federated queries across a polystore | |
Yang | Design and implementation of data acquisition system based on scrapy technology | |
US12001458B2 (en) | Multi-cloud object store access | |
US20150286725A1 (en) | Systems and/or methods for structuring big data based upon user-submitted data analyzing programs | |
Aracil et al. | Towards distributed ecore models | |
JP2007087241A (ja) | 多言語複層サイト作成システムおよび多言語複層サイト作成プログラム | |
US20240160627A1 (en) | Efficiently accessing shared operators in database query plans | |
CN115935946B (zh) | Hl7v3标准/fhir标准的解析映射处理方法及装置 | |
CN116991370A (zh) | 基于数据引擎和流程引擎的应用程序接口生成系统及方法 | |
JP2023059456A (ja) | 情報処理方法、プログラムおよび情報処理装置 |
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 |