公告:推痕网(www.tuihen.com)专业分类目录平台,收录各行业优秀网站,快审仅需20元/站,永久收录!合作QQ:160-204-68

快速审核,网站广告合作请联系我们
  • 网站:36829
  • 待审:6523
  • 文章:17320
  • 会员:6450

  为了简化UI工作并为运维人员供给一种加倍灵活的资本查询方法,ZStack在2.6版本中推出了首个面向IaaS的查询说话 —— ZStack Query Language,简称ZQL。

  IaaS治理着海量的数据中间资本,若何对这些资本进行灵活快速的查询是运维人员面对的一个难题。在以往的IaaS软件中,往往只对单个资本的某些字段供给有限的API查询支撑,例如可以经由过程虚拟机的IP字段查询,这不足够也不灵活。运维人员在做复杂查询时往往得绕开IaaS软件直接查询厥后端数据库,这既请求运维人员要懂得IaaS资本的内部关系,又带来了数据库误操作的风险。

  QueryVmInstance name~=web-vm state=Running

  这里查询所有名字包含web-vm字符串,正在运行中的VM。又例如

  背景

  http://www.zstack.io/product_downloads/

  QueryVmInstance vmNics.eip.vip.ip='22.22.22.22'

  从ZStack正式宣布的第一个版本ZStack0.6开端,我们就致力在API层面供给跟数据库级其余查询功能,ZStack的每个资本都包含一个Query API,可以或许经由过程资本的自身字段以及资本的接洽关系资本字段进行查询。例如

  EIP是虚拟机的接洽关系资本,这里查询网卡绑定了EIP为22.22.22.22的虚拟机。

  Query API功能强大年夜:

  用户可以经由过程count参数返回知足查询前提资本数量,类似SQL的count();

  经由过程fields参数指定要返回的字段,类似SQL的uuid,name from;

  经由过程sortBy、sortDirection参数指定排序的字段和偏向,类似SQL的order by;

  经由过程start、limit参数实现分页查询,类似SQL的limit和offset。

  Query API除了应用便利外,定义也很简单。法度榜样员在ZStack中增长了一种新资本后,只须要在代码中定义如下class:

  @AutoQuery(replyClass = APIQueryVmInstanceReply.class, inventoryClass = VmInstanceInventory.class)

  限制查询 (restrict by从句)

  }

  不须要写任何实现,对应资本就具有了Query API。

  ZStack内部包含一个Query Service负责处理所有资本的Query API,将他们翻译成响应的SQL语句,在查询前提中包含接洽关系资本前提时会生成对应的Join子句。

  基于Query API, ZStack0.6版本就包含了跨越400万个单项查询前提,组合查询前提数为400万的阶乘。极大年夜的便利了运维和复杂UI的设计。但Query API仍然包含一些缺点:

  查询前提之间只能是AND逻辑,无法履行OR逻辑,前提之间也无法加括号实现复杂逻辑组合

  不支撑类似SQL中的sub query子句

  单个API只能查询一种资本,查询多种资本时须要调用多个API

  不支撑跟监控体系的查询说话整合

  跟着ZStack UI的场景越来越丰富,Query API的限制使得UI端的工作越来越多,很多场景须要多次调用Query API进行数据组合。例如在监控Top 5页面(用于检测体系中CPU、内存、磁盘、收集等资本应用率最高5个资本的页面),须要先采取Query API将虚拟机、物理机等资本信息查询回来,再调用监控体系ZWatch的API查询对应的监控数据。

  ZQL经由过程return with子句解决这个问题。return with是一种插件机制,它许可子体系 经由过程插件将自身的查询前提注入ZQL中,ZQL会先履行关系数据库查询,将知足前提资本的原数据查询出来后,再将资本的主键(primary key)作为输入前提调用实现return with子句的插件,最后将插件的查询成果一并返回给ZQL的调用者。

  Query API在将来的ZStack版本中会一向保存并保护,厥后端实现已经从本来的Query Service调换成ZQL。

  ZStack Query Language

  应用过有名issue治理体系JIRA的开辟者都知道JIRA在进行高等搜刮的时刻供给一种查询说话JQL (JIRA Query Language),可以或许应用一种类似SQL的DSL(Domain Specific Language)对JIRA中ticket的各个字段进行高效的查询。ZQL跟JQL类似,也是一种类似SQL的DSL,先来看一个例子:

  query vminstance where name='webvm' or vmnics.ip='192.168.0.10' or (vmnics.eip = '172.20.100.100' (cpuNum >= 8 or clusterUuid in ('fe13b725c80e45709f0414c266a80239','73ca1ca7603d454f8fa7f3bb57097f80')))

  在这个简单例子中,可以看到很多熟悉的SQL元素,例如and/or前提、括号、>=/in操作符等。ZQL可以看作SQL的一个子集外加ZStack根据自身需求进行的加强的查询说话。它的根本构造如下:

  QUERY queryTarget (WHERE condition+)? restrictBy? returnWith? groupBy? orderBy? limit? offset? filterBy? namedAs?

    关键词: 连体双胞胎 世上最年长连体双胞胎 快速审核文章 织梦一键审核
    精彩推荐

    减轻服务器负载的建议和技巧

    时间:2019-11-18

    减轻服务器负载的建议和技巧...

    Solidworks在使用绘制的折弯时提示“没有能够制作绘制折弯”的解

    时间:2016-04-10

    现在用Solidworks来绘制钣金件的设计师已经越来越多了,部落自己也经常使用这个软件.当然,有很多时候还是会遇到一些问题,比如部落最常遇到的就是在使用绘制的折弯时提示没有...

    快审网站推荐
    随机网站推荐

    北京市地质2017.04.08

    北京市地质工程勘察院是原国家地矿部为解决首都供水问题而组建的...

    长春概念网2017.03.05

    长春概念网络科技有限公司,www.gainon.cn,概念(易63)网络成立于2...

    青岛颐丰园2017.03.05

    青岛颐丰园园林工程有限公司,www.qdhfw.com,青岛颐丰园园林工程...