首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

干货 | 携程机票数据仓库建设之路

2018年,为了支持数仓数据可视化运营平台,我们先后引入了ClickHouse和CrateDB作为后台存储和查询引擎,特别是引入CrateDB以后,亿级体量表四个维度聚合耗时P90下降到了4秒...DB到Hive同步需要依赖两个数据源,1)Schema表元数据信息,简单地包括各个字段信息、字段类型及主键定义;2)统计数据,它主要描述是这个表在数据产生后有没有UPDATE和DELETE,这个决定着后续表分区方式...对基础数据,整个表数据增加、更新频率都非常低,ods层我们会每天全量同步一份到最新数据分区,并且会建立一个无分区下游维表,将数据状态为有效数据放到这张下游无分区维表中方便流程使用。...数据转化成json字符串,这个json字符串可以直接作为一个字段写入到Hive表里,也可以根据事先配置提取出对应节点和值作为值写入到Hive,甚至可以通过JsonSchema推断出Hive表结构...,并将Json各节点对应写到Hive表

1.4K41

文本处理,第2部分:OH,倒排索引

这是我文本处理系列第二部分。在这篇博客,我们将研究如何将文本文档存储可以通过查询轻松检索表单。我将使用流行开源Apache Lucene索引进行说明。 系统中有两个主要处理流程......p6.png 文档分区,文档随机分布构建索引不同分区术语分区,术语分布不同分区上。我们将讨论文档分区,因为它更常用。...分布式索引是由Lucene构建其他技术提供,例如ElasticSearch。典型设置如下...在此设置,机器和行组织。每列表示文档分区,而每行表示整个语料库副本。...每台机器将在其本地索引执行搜索,并将TopM元素返回给查询处理器,该查询处理器将在返回给客户端之前合并结果。请注意,K / P <M <K,其中K是客户期望TopK文档,P是机器数。...不做更改:在这里我们假设文档均匀分布不同分区上,所以本地IDF代表了实际IDF一个很好比例。 额外第一轮,查询被广播到返回其本地IDF每一

2K40
您找到你想要的搜索结果了吗?
是的
没有找到

干货 | CrateDb携程机票BI实践

这种查询方式简单唯一值查询中比较有效,但是当遇到,同一个数据源多关键字查询时候,就得维护多份数据源。举例:价格趋势接口中,我们提供了多种价格趋势组合:国内、国际、单程、往返、航线、航班。...2)数据同步 提供给外部使用数据大部分都是存储hive不使用presto api方式访问时,我们需要将hive数据导入到redis或者mysql,供接口访问。...并且zeus平台上,使用spark shell方式将hive数据导入到CrateDB,抛弃了以前jar包方式。...图4 zeus流程配置页面 3)容器化 如何更加有效地管理、维护CrateDB集群?为此我们上了k8s,将CrateDB容器化。...图7 CrateDB webUI 五、数仓实现 目前在数仓应用主要体现在各种指标dashboard、metrics展示,比如fltinsight。

46820

MySQL表分区选择与实践小结

一些系统中有时某张表会出现百万或者千万数据量,尽管其中使用了索引,查询速度也不一定会很快。这时候可能就需要通过分库,分表,分区来解决这些性能瓶颈。一. 选择合适解决方法1....RANGE分区:基于属于一个给定连续区间值,把多行分配给分区。2. LIST分区:类似于RANGE分区,区别在于LIST分区是基于值匹配一个离散值集合某个值来进行选择。3....HASH分区:基于用户定义表达式返回值来进行选择分区,该表达式使用将要插入到表这些行进行计算。这个函数可以包含MySQL 中有效、产生非负整数值任何表达式。4....KEY分区:类似于HASH分区,区别在于KEY分区只支持计算一或多,且MySQL服务器提供其自身哈希函数。必须有一或多包含整数值。具体介绍可以搜索以下"mysql表分区分区类型"。三....从上面两张截图可以看出使用了分区查询速度要比使用分区快差不多1倍,但是如果不使用id为查询条件或没有使用到,速度二者是一样,甚至有时分区还要慢于未分区,所以使用上还需结合当前业务做合理选择

9910

kudu可视化工具:kudu-plus

压缩) 二进制(最多64KB压缩) kudu分区 范围分区: Kudu允许在运行时动态添加和删除范围分区,而不会影响其他分区可用性。...范围分区键必须是主键一个子集 没有散分区范围分区,每个范围分区将恰好对应于一个tablet kudu允许在运行时添加或删除范围分区,而不会影响其他分区可用性。...哈希分区: 散分区值将行分配到许多存储桶之一。单级散分区,每个桶只对应一个tablet。表创建期间设置桶数量。...通常,主键用作要散,但与范围分区一样,可以使用主键任何子集。 当不需要对表进行有序访问时,散分区是一种有效策略。...散分区对于tablet之间随机传播写入非常有效,这有助于缓解热点和不均匀tablet大小。

28930

支撑700亿数据量ClickHouse高可用架构实践

大概2016年,我开始部分场景应用ES,其实这几年ES很多公司里面都有应用,大家也应该比较了解,ES搜索上面有很大优势,速度也是非常快。...CrateDB底层是基于ES,但CrateDB解决了ES不能join问题,但是一样高并发时候一样会把内存打爆,ES大家应用时候发现它语法比较复杂,CrateDB解决了这个问题,我们可以通过写...我们去取数据时候,经常会只取某几个字段,存储对IO比较友好,减少IO次数,也是查询速度上一个辅助。...先拿到缓存标志值,构建成为一个查询缓存key,然后查缓存里面有没有数据,如果有则直接从缓存返回数据,如果没有才到ClickHouse里面拿数据同时写入缓存,下一次同样请求就会走缓存了。...A7:这个问题我还真没有遇到过,如果丢数据我这里也会很容易发现,你模式与我不同是中间多了一个CSV中转,这个我不建议,CSV有各种分隔符分数据方法,可能某些数据包含一些特殊字符,你也不可能打开CSV

1.8K12

Mysql海量数据处理

9)应用服务和数据库分离 10)使用搜索引擎搜索数据库数据 11)进行业务拆分 千万级数数据,mysql实际上确实不是什么压力,InnoDB存贮引擎,使用B+数存储结构,千万级数据量...* LIST分区:类似于RANGE分区,区别在于LIST分区是基于值匹配一个离散值集合某个值来进行选择。...* HASH分区:基于用户定义表达式返回值来进行选择分区,该表达式使用将要插入到表这些行进行计算。这个函数可以包含MySQL 中有效、产生非负整数值任何表达式。...* KEY分区:类似于HASH分区,区别在于KEY分区只支持计算一或多,且MySQL 服务器提供其自身哈希函数。必须有一或多包含整数值 6....* 分区只是一张表数据存储位置发生变化,分表是将一张表分城多个表 * 访问量大,且数据比较大时,两种方式可以互相配合使用 * 访问量不大,但表数据比较多时,可以只进行分区 7.

1.1K20

增强文本搜索SQL向量数据库

它检索满足 SQL 过滤条件所有行 ID,并将这些行 ID 存储称为 roaring bitmap 高级位图数据结构。...TextSearch 函数搜索文本时从表检索前一千个(或 k)最相关结果。执行方面,MyScaleDB 对所有数据分区并发执行 TextSearch 文本检索。...因此,每个分区收集一千个 BM25 分数排序最相关结果。MyScaleDB 然后根据 BM25 分数汇总从数据分区获得结果。...这是因为每个分区计算 BM25 分数时只考虑当前分区“总文档数”、“总标记数”和“文档频率”,而不考虑其他分区其他与 BM25 算法相关参数。因此,这会导致最终合并结果准确性下降。...这些增强不仅提升了 MyScaleDB 性能,还扩展了其各种应用程序中进行高效且准确文本搜索用例。

10010

经验分享|MySQL分区实战(RANGE)

概述分区概述 MySQL , InnoDB存储引擎长期以来一直支持表空间概念。 MySQL 8.0 ,同一个分区所有分区必须使用相同存储引擎。...类似于分区 by RANGE,不同之处在于分区是根据与一组离散值一个匹配来选择。哈希分区。 使用这种类型分区,根据用户定义表达式返回值选择分区,该表达式对要插入表进行操作。...子分区(也称为 复合分区(Subpartitioning))是对分区每个分区进一步划分。数据库分区一个非常常见用途是日期分隔数据。...但是, MySQL 创建基于[DATE]、 [TIME]、 或 [DATETIME]或基于使用这些表达式分区方案并不困难 。...重要:要记住——无论您使用哪种分区类型——分区总是创建时自动顺序编号,从 0. 当新行插入到分区时,这些分区号用于标识正确分区

32401

专家指南:大数据数据建模常见问题

请记住,大数据,我们可以在数据摄取后定义结构,并按需定义结构,从而让我们利用更现代方法来获益。 4. 在对关系结构建模时,我们通常依靠索引来加快搜索速度。...请记住,大数据系统,我们将数据分布成百上千个分区文件, 5. 连接事实和维表以进行报告时需要哪种分区或存储分区分区可能非常有用,具体取决于所使用存储。...大数据环境分区对于减少返回返回搜索结果所需检查文件数量非常有帮助(有关更多信息,请参见上面关于Bloom Filters响应)。...例如,我们通常会日期或非常大数据集(甚至小时)对事实表进行分区。对于维度,我们可以根据用例进行划分,例如,如果我们用户定期在其区域内寻找结果,则可以地理位置进行划分。...但是,您不仅限于一种分区方法,因为您也可以进行逻辑分区,这非常有帮助,因为相同数据将以不同动机由不同用户使用,因此,我们每个人都可以有多个分区服务于不同业务需求。 6.

1.1K20

数据结构与算法 - 排序与搜索排序与搜索

选择排序每次交换一对元素,它们当中至少有一个将被移到其最终位置上,因此对n个元素进行排序总共进行至多n-1次交换。在所有的完全依靠交换去移动元素排序方法,选择排序属于非常好一种。...3.插入排序 插入排序(英语:Insertion Sort)是一种简单直观排序算法。它工作原理是通过构建有序序列,对于排序数据,已排序序列从后向前扫描,找到相应位置并插入。...但是不难观察到分区运算,数组元素都会在每次循环中走访过一次,使用O(n)时间。使用结合(concatenation)版本,这项运算也是O(n)。...希尔排序过程 希尔排序基本思想是:将数组一个表并对分别进行插入排序,重复这过程,不过每次用更长(步长更长了,数更少了)来进行。最后整个表就只有一了。...8.搜索 搜索一个项目集合中找到一个特定项目的算法过程。搜索通常答案是真的或假,因为该项目是否存在。

78530

专家指南:大数据数据建模常见问题

请记住,大数据,我们可以在数据摄取后定义结构,并按需定义结构,从而让我们利用更现代方法来获益。 4. 在对关系结构建模时,我们通常依靠索引来加快搜索速度。...请记住,大数据系统,我们将数据分布成百上千个分区文件, 5. 连接事实和维表以进行报告时需要哪种分区或存储分区分区可能非常有用,具体取决于所使用存储。...大数据环境分区对于减少返回返回搜索结果所需检查文件数量非常有帮助(有关更多信息,请参见上面关于Bloom Filters响应)。...例如,我们通常会日期或非常大数据集(甚至小时)对事实表进行分区。对于维度,我们可以根据用例进行划分,例如,如果我们用户定期在其区域内寻找结果,则可以地理位置进行划分。...但是,您不仅限于一种分区方法,因为您也可以进行逻辑分区,这非常有帮助,因为相同数据将以不同动机由不同用户使用,因此,我们每个人都可以有多个分区服务于不同业务需求。 6.

86200

Hudi关键术语及其概述

,与此同时也有效地支持到达顺序数据检索。...这有效地提供了更改流来支持增量数据管道。 读优化查询:查询给定提交/压缩操作时最新快照。 仅公开最新文件片中基/文件,并保证与非hudi列表相比具有相同查询性能。...写表复制目的,是从根本上改进目前表管理方式 支持文件级原子更新数据,而不是重写整个表/分区 量地消费更改,而不是浪费扫描或启发式搜索 制文件大小以保持优异查询性能(小文件会极大地影响查询性能...Merge On Read Table 读表合并是写表复制超集,某种意义上,它仍然支持对表进行读优化查询,方法是只查询最新文件片中基/文件。...压缩只适用于MOR类型表,且什么样文件片被压缩是写操作之后由压缩算法决定(默认是选择具有最大压缩日志文件大小文件片) 从高层次来说,有两种类型压缩方法,一种是同步,另一种则是异步

1.5K20

数据湖 | Apache Hudi 设计与架构最强解读

3.1 时间轴 在其核心,Hudi维护了一条包含在不同即时时间(instant time)对数据集做所有instant操作timeline,从而提供表即时视图,同时还有效支持到达顺序进行数据检索...,我们先对输入进行采样,获得一个工作负载profile,这个profile记录了输入记录insert和update、以及分区分布等信息。...根据查询是读取日志合并快照流还是变更流,还是仅读取合并基础文件,MOR表支持多种查询类型。 高层次上,MOR writer在读取数据时会经历与COW writer 相同阶段。...以这种方式,Cleaner会保留最近N次commit/delta commit提交写入所有文件切片,从而有效提供在任何即时范围内进行增量查询能力。...通常,查询引擎可在适当大小文件上提供更好性能,因为它们可以有效地摊销获取统计信息等成本。即使某些云数据存储上,列出包含大量小文件目录也会产生成本。

2.9K20

Hive 和 Spark 分区策略剖析

Hive分区可以基于多个进行,这些值组合形成目录名称。例如,如果我们将“t_orders_name”表按照日期和地区分区,那么目录名称将包含日期和地区值组合。...5.4.3 重新分区 重新分区接收目标Spark分区计数,以及要重新分区序列,例如,df.repartition(100,$"date")。...重新分区使用HashPartitioner,将具有相同值数据,分发给同一个分区,实际上,它将执行以下操作: 但是,这种方法只有每个分区键都可以安全写入到一个文件时才有效。...这是因为无论有多少特定Hash值,它们最终都会在同一个分区重新分区仅在你写入一个或者多个小Hive分区时才有效。...5.4.5 范围重新分区 范围重新分区是一个特,它不使用RoundRobin和Hash Partitioner,而是使用一种特殊方法,叫做Range Partitioner。

1.3K40

mysql经典面试题及答案_常见SQL面试题

下图就描述了一个多个数据库间主从复制与读写分离模型(来源网络): 一主多从数据库体系,多个从服务器采用异步方式更新主数据库变化,业务服务器执行写或者相关修改数据库操作是主服务器上进行...可以支持a 、 a,b 、 a,b,c 3种组合进行查找,但不支持 b,c进行查找 .当最左侧字段是常量引用时,索引就十分有效。...利用索引附加,您可以缩小搜索范围,但使用一个具有两索引 不同于使用两个单独索引。...复合索引结构与电话簿类似,人名由姓和名构成,电话簿首先按姓氏对进行排序,然后名字对有相同姓氏的人进行排序。...按照list分区,与RANGE区别是,range分区区间范围值是连续 3、HASH分区:这种模式允许通过对表一个或多个Hash Key进行计算,最后通过这个Hash码不同数值对应数据区域进行分区

70420

Oracle 错误总结及问题解决 ORA「建议收藏」

ORA-14187: LOCAL 索引分区方法与基本表分区方法不一致 ORA-14188: 子分区必须形成 UNIQUE 索引关键字子集 ORA-14189: 该物理属性不能指定给索引子分区...ORA-14241: 无效分区方法 ORA-14242: 表未被系统或散方法分区 ORA-14243: 表未被范围, 系统或散方法分区 ORA-14244: 对系统或组合范围/系统分区非法操作...14254: 不能为 (组合)“范围”或“列表”分区表指定 ALLOCATE STORAGE ORA-14255: 未按范围, 组合范围或列表方法对表进行分区 ORA-14256: 无效结果分区说明...-14268: 分区分区 \’\’ 驻留在脱机表空间中 ORA-14269: 不能交换范围或散分区以外分区 ORA-14270: 未按范围, 散或列表方法对表进行分区 ORA-14271:... ORA-14313: 值 不在分区 ORA-14314: 所得到“列表”分区必须至少包含 1 个值 ORA-14315: 不能合并分区自身 ORA-14316: 未按“列表”方法对表进行分区

18.7K20

❤️爆肝新一代大数据存储宠儿,梳理了2万字 “超硬核” 文章!❤️

Ad_hoc Index是主键索引,用于定位keyDiskRowSet具体哪个偏移位置。 BaseData是MemRowSet flush下来数据,存储,主键有序。...Run Length Encoding     Runs(连续重复值)压缩值通过存储值和值计数。Run Length Encoding对主键排序时具有许多连续重复值有效。...这在冲洗期间(flush)进行评估 Prefix Encoding     公共前缀以连续值压缩。前缀编码对于共享公共前缀值或主键第一可能有效,因为行片中主键排序。...数据分配到tablet方法是由创建表时候指定分区方式决定。     ...3.5.2 散分区案例 对metrict进行分区分区方法是:根据host和metrict进行分区,如下图: 上面的案例,metrict表按照host,metric散分区,把数据写入到四个bucket

81440

DDIA 读书分享 第六章 :分区索引和分区均衡

分区和次级索引 次级索引(secondary index),即主键以外索引;由于分区都是基于主键针对有分区数据建立次级索引时,就会遇到一些困难。...但大部分场景,因为我们不可能只单一维度对数据进行检索,因此次级索引很有用。尤其对于搜索场景,比如 Solr 和 Elasticsearch,次级索引(搜索领域称为倒排索引)更是其实现基石。...由于搜索中都是 term→ document id list 映射,document-based 是指 document id 进行分区,每个分区索引都是本地 document ids,而不管其他分区...索引进行分片(by term) 当然,与数据本身一样,对于索引进行分区,也可基于 Range 或基于 Hash,同样也是各有优劣(面向扫描还是均匀散)。...另外,散分区策略也可以支持动态分区,即,哈希空间中对相邻数据集进行合并和分裂。 与节点成比例分区 前文所述, 静态均衡分区数量一开始就固定,但是单分区尺寸会随着总数量增大而增大。

17520

24 个必须掌握数据库面试问题!

(而B 树非终节点也包含需要查找有效信息) 七、为什么说B+比B树更适合实际应用操作系统文件索引和数据库索引?...可以支持a 、 a,b 、 a,b,c 3种组合进行查找,但不支持 b,c进行查找 .当最左侧字段是常量引用时,索引就十分有效。...2、利用索引附加,您可以缩小搜索范围,但使用一个具有两索引不同于使用两个单独索引。...复合索引结构与电话簿类似,人名由姓和名构成,电话簿首先按姓氏对进行排序,然后名字对有相同姓氏的人进行排序。...3、HASH分区 :这模式允许通过对表一个或多个Hash Key进行计算,最后通过这个Hash码不同数值对应数据区域进行分区。例如可以建立一个对表主键进行分区表。

44420
领券