当前位置: 首页 > news >正文

ps个人网站首页怎么制作河南住房和城乡建设厅一体化平台网站

ps个人网站首页怎么制作,河南住房和城乡建设厅一体化平台网站,友点cms,青岛百度优化本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。 本作品 (李兆龙 博文, 由 李兆龙 创作)#xff0c;由 李兆龙 确认#xff0c;转载请注明版权。 文章目录 引言样例SHOW SERIES比较原理结论结束语 引言 influxdb的计算引擎为了做到自底而上的…本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。 本作品 (李兆龙 博文, 由 李兆龙 创作)由 李兆龙 确认转载请注明版权。 文章目录 引言样例SHOW SERIES比较原理结论结束语 引言 influxdb的计算引擎为了做到自底而上的合并逻辑必然存在某种row的排序规则这些规则在查询计划的创建阶段就已经确定。 比如group by tags此类查询基于tag的排序而group by time的查询则基于time去做排序group by tags, time 则是基于tags和time至于show则是基于field排序特殊的比如show series cardinality在改写为select后实际是基于tags排序 事实上要完成一个流式引擎必须自底而上遵循某种排序规则例如子查询内部的排序规则和内部排序规则不同是则需要重排这就没法做到流式返回。 样例 show series不是基于serieskey或者基于展开后的tag做排序简单的看两个show series 返回的case yottadb_partition_replicas_num_lzl_ywq,account_id2Mqw0vQ\\\\ yottadb_partition_replicas_num_lzl_ywq,account_id4Mqw0vQ\\\\ yottadb_partition_replicas_num_lzl_ywq,account_id5Mqw0vQ\\\\ yottadb_partition_replicas_num_lzl_ywq,account_id7Mqw0vQ\\\\ yottadb_partition_replicas_num_lzl_ywq,account_id8Mqw0vQ\\\\ yottadb_partition_replicas_num_lzl_ywq,account_id9Mqw0vQ\\\\account_id2account_id4account_id5account_id7account_id8account_id9Mqw0vQ\\nullnullnullnullnullnullMqw0vQ\\nullnullnullnullnullnullMqw0vQ\\nullnullnullnullnullnullMqw0vQ\\nullnullnullnullnullnullMqw0vQ\\nullnullnullnullnullnullMqw0vQ\\ 这个case表示不是以serieskey内部的tag本身做排序因为以这个规则排序展开后account_id9应该排在最前面因为null本身小于任何值。 car1,citycity_0dddd,id2,typetype_2 car1,citycity_0dddd\\ ,id2,typetype_2 car1,citycity_1,id3,typetype_0空格的ascall码小于 ‘,’ 所以也不是以serieskey排序 SHOW SERIES比较原理 我们回到show series引擎内部迭代器调用栈帧如下 v1/coordinator/statement_executor.go:createIteratorsV2influxql/query/select.go:Selectinfluxql/query/compile.go: (c *compiledStatement) Prepare 已经把shards赋值给preparedStatement.icinfluxql/query/select.go: (p *preparedStatement) Selectinfluxql/query/select.go:buildCursorinfluxql/query/select.go:buildAuxIteratortsdb/shard.go:(a Shards) CreateIteratortsdb/shard.go:(s *Shard) CreateIteratortsdb/engine/tsm1/engine.go:CreateIteratortsdb/shard.go:(a Shards) CreateIteratortsdb/shard.go:(a Shards) createSeriesIteratortsdb/index.go:NewSeriesPointIteratortsdb/index.go:MeasurementIterator (is IndexSet) measurementIterator()tsdb/index/tsi1/index.go: (i *Index) MeasurementIterator()tsdb/index/tsi1/partition.go (p *Partition) MeasurementIterator()tsdb/index/tsi1/file_set.go (fs *FileSet) MeasurementIterator()tsdb/index/tsi1/log_file.go (f *LogFile) MeasurementIterator() 事实上createSeriesIterator之下的MeasurementIterator都是基于measurement name做比较真正的比较是shards中的seriesPointIterator其首先会获取每一个measurement的全部时间序列对应的tsid随后从sfile中获取tsid对应的serieskey直接原地调用sort 排序seriesKeys实际调用CompareSeriesKeys作为比较函数。 核心比较函数为CompareSeriesKeys func CompareSeriesKeys(a, b []byte) int {// Handle nil keys.if len(a) 0 len(b) 0 {return 0} else if len(a) 0 {return -1} else if len(b) 0 {return 1}// Read total size._, a ReadSeriesKeyLen(a)_, b ReadSeriesKeyLen(b)// Read names.name0, a : ReadSeriesKeyMeasurement(a)name1, b : ReadSeriesKeyMeasurement(b)// Compare names, return if not equal.if cmp : bytes.Compare(name0, name1); cmp ! 0 {return cmp}// Read tag counts.tagN0, a : ReadSeriesKeyTagN(a)tagN1, b : ReadSeriesKeyTagN(b)// Compare each tag in order.for i : 0; ; i {// Check for EOF.if i tagN0 i tagN1 {return 0} else if i tagN0 {return -1} else if i tagN1 {return 1}// Read keys.var key0, key1, value0, value1 []bytekey0, value0, a ReadSeriesKeyTag(a)key1, value1, b ReadSeriesKeyTag(b)// Compare keys values.if cmp : bytes.Compare(key0, key1); cmp ! 0 {return cmp} else if cmp : bytes.Compare(value0, value1); cmp ! 0 {return cmp}} }结论 所以事实上show series返回的真正顺序遵循以下规则 以measurement name排序每个measuremnet基于serieskey内部的tag本身做排序 其实很好理解因为从tsi中获取measurement对应的tsid后又从sfile获取对应的serieskey此时的serieskey为了解析的性能事实上进行了二进制编码的无法直接拿来比较其次此时是没有schema的概念的所以如果基于tag去排序效率会及其低下因为需要先计算合并后的schema结构然后再生成新的row所以搞了个这么个性能不错但是奇奇怪怪的排序方法 这种比较方式可以应用到流式框架但是意义不大因为本身这种排序就没有规定一个全局顺序不同的tagkey都直接拿来比较了而且与influxql本来的排序方式差别很大额外的开发工作很多 从用户的角度看show series的顺序没有什么意义就算希望有意义当前的show series也无法满足所以最好的方式就是直接hash merge不给用户保证show series的返回顺序influxdb的官网也没有保证show series的顺序。 结束语 花了三十分钟迅速写完这篇文章倒不是这个点很重要关键在于我在半年前实现某些特性时假设其顺序是serieskey在第二次实现假设其是以tag为顺序最后发现与想的完全不同。 以后做任何事前都需要提醒自己合理的规划可以节省大量时间。
http://www.pierceye.com/news/628331/

相关文章:

  • wordpress建站比较淘宝客网站怎么建设
  • 网站结构有哪些安徽省建设工程信息网官方网站
  • 如何查看网站是否备案直播网站怎么做啊
  • 广西做网站的公司投资融资理财网站模板
  • 做网站的颜色游戏推广员拉人犯法吗
  • 金融审核网站制作站长之家网址ip查询
  • 石家庄做家教网站网络营销网站建设
  • 怎么做淘宝网站赚钱吗怎样提高百度推广排名
  • 购物网站建设成本u9u8网站建设
  • 抚州市住房和城乡建设局网站手机网站素材
  • 用dw做音乐网站模板策划公司收费明细
  • 大气手机网站模板免费下载南昌seo排名
  • 做卖衣服网站源代码seo搜索引擎优化名词解释
  • 东营免费建网站网络运维必备知识
  • 盐城建设网站备案 网站负责人
  • 外贸营销网站怎么建设网站域名注册证书
  • 安徽网站建设首选-晨飞网络甘肃泾川县门户网站两学一做
  • 360°网站标签旋转显示特效建筑设计专业比较好的学校
  • 郫县建设局网站中文wordpress模版
  • 塔里木油田公司档案馆网站建设研究响应式网站建设教程
  • wordpress侧边栏怎么加php代码重庆seo优化公司
  • 自做建材配送网站做的比较好的游戏网站
  • 建设网站公司兴田德润在哪里秦皇岛海港区
  • 做网站阜阳百度投放广告
  • 北京互联网金融公司排名网站栏目优化
  • 教育网站解决方案用wordpress制作表单
  • 整站wordpress下载phpcms 网站标题
  • 湛江市建设局官网站品牌网络营销方法分析
  • 做网站数据库表各字段详情福建省港航建设发展有限公司网站
  • 潍坊 营销型网站建设游戏设计师网站有哪些