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

网站优化软件wordpress网站如何与关联

网站优化软件,wordpress网站如何与关联,又做投资的网站吗,电子商务企业网站建设实训报告ClickHouse创建分布式表 当数据量剧增的时候#xff0c;clickhouse是采用分片的方式进行数据的存储的#xff0c;类似于redis集群的实现方式。然后想进行统一的查询的时候#xff0c;因为涉及到多个本地表#xff0c;可以通过分布式表的方式来提供统一的入口。由于是涉及到…ClickHouse创建分布式表 当数据量剧增的时候clickhouse是采用分片的方式进行数据的存储的类似于redis集群的实现方式。然后想进行统一的查询的时候因为涉及到多个本地表可以通过分布式表的方式来提供统一的入口。由于是涉及到分布式存储保证高可用就必须有数据冗余—即副本(replica)。Clickhouse依靠ReplicatedMergeTree引擎族与Zookeeper实现了复制表机制成为其高可用的基础。该引擎和 MergeTree 的不同之处在于它会删除排序键值相同的重复项。 同时Clickhouse具有数据分片shard的概念这也是分布式存储的特点之一即通过并行读写提高效率。ClickhouseHouse依靠Distributed引擎实现了分布式表机制在所有分片本地表上建立视图进行分布式查询。 本文使用ReplicatedMergeTree和Distributed引擎来构建Clickhouse的分布式表。分布式表包括了逻辑表和物理表逻辑表主要用于查询物理表是实际存储数据的。 官方给出的创建复制表示例 CREATE TABLE table_name (EventDate DateTime,CounterID UInt32,UserID UInt32 ) ENGINE ReplicatedMergeTree(/clickhouse/tables/{layer}-{shard}/table_name, {replica}) PARTITION BY toYYYYMM(EventDate) ORDER BY (CounterID, EventDate, intHash32(UserID)) SAMPLE BY intHash32(UserID) 贴上本文本地表的创建代码 -- 建本地表 CREATE TABLE test.countly_device_local on cluster ch_cluster (appKey String COMMENT appKey,deviceId String COMMENT deviceId,nginxTime DateTime COMMENT nginxTime,rooted String COMMENT rooted,charging String COMMENT charging,idfa String COMMENT idfa ) ENGINE ReplicatedMergeTree(/clickhouse/tables/{layer}-{shard}/test/countly_device_local, {replica}) PARTITION BY toYYYYMMDD(nginxTime) ORDER BY (nginxTime); 其中on cluster ch_cluster语法标识分布式DDL即执行一次就可以在集群所有实例上创建同样的本地表。 ReplicatedMergeTree ReplicatedMergeTree引擎族接受两个参数 zoo_path—Zookeeper中该表的路径replica_name—Zookeeper中的该表的副本名称 如上例所示这些参数可以包含宏替换的占位符即大括号的部分。它们会被替换为配置文件里macros那部分配置的值。 示例 macroslayer05/layershard02/shardreplicaexample05-02-1.yandex.ru/replica /macros «ZooKeeper 中该表的路径»对每个可复制表都要是唯一的。不同分片上的表要有不同的路径。 这种情况下路径应包含下面这些部分 /clickhouse/tables/ 是公共前缀官方推荐使用这个。 {layer}-{shard} 是分片标识部分。在此示例中由于 Yandex.Metrica 集群使用了两级分片所以它是由两部分组成的。但对于大多数情况来说你只需保留 {shard} 占位符即可它会替换展开为分片标识。 table_name 是该表在 ZooKeeper 中的名称。使其与 ClickHouse 中的表名相同比较好。 这里它被明确定义跟 ClickHouse 表名不一样它并不会被 RENAME 语句修改。 HINT你可以在前面添加一个数据库名称 table_name 也是 例如。 db_name.table_name 副本名称用于标识同一个表分片的不同副本。你可以使用服务器名称如上例所示。同个分片中不同副本的副本名称要唯一。 你也可以显式指定这些参数而不是使用宏替换。对于测试和配置小型集群这可能会很方便。但是这种情况下则不能使用分布式 DDL 语句ON CLUSTER。使用大型集群时官方建议使用宏替换因为它可以降低出错的可能性。 要删除副本使用 DROP TABLE。但它只删除那个 – 位于运行该语句的服务器上的副本。 想要删除集群上的所有副本可以使用drop table [if exists] table_name on cluster cluster_name Distributed Table Distributed Engine ClickHouse分布式表的本质并不是一张表而是一些本地物理表分片的分布式视图分布式引擎本身不存储数据, 但可以在多个服务器上进行分布式查询。读是自动并行的。读取时远程服务器表的索引如果有的话会被使用。 支持分布式表的引擎是Distributed建表DDL语句示例如下 Distributed(logs, default, hits[, sharding_key]) 分布式引擎参数服务器配置文件中的集群名远程数据库名远程表名数据分片键可选。 将会从位于«logs»集群中 default.hits 表所有服务器上读取数据。 建立上面的本地表的分布式的语句为: -- 建分布式表 create TABLE test.countly_device_dist on cluster ch_cluster as test.countly_device_local ENGINE Distributed(ch_cluster, test, countly_device_local, rand()); 远程服务器不仅用于读取数据还会对尽可能数据做部分处理。 例如对于使用 GROUP BY 的查询数据首先在远程服务器聚合之后返回聚合函数的中间状态给查询请求的服务器。再在请求的服务器上进一步汇总数据。 要查看集群的详细信息可以查看system.clusters表: select * from system.clusters r-clickhouse-m220-210.hd163.internal :) select * from system.clusters;SELECT * FROM system.clustersQuery id: bbf4a9fa-5a94-48b4-b485-e50bc9a2e891┌─cluster─────────┬─shard_num─┬─shard_weight─┬─replica_num─┬─host_name──────────────┬─host_address───┬─port─┬─is_local─┬─user────┬─default_database─┬─errors_count─┬─estimated_recovery_time─┐ │ ch_base_cluster │ 1 │ 10000 │ 1 │ clickhouse_node1_1_1 │ 10.105.220.210 │ 9000 │ 1 │ default │ │ 0 │ 0 │ │ ch_base_cluster │ 1 │ 10000 │ 2 │ clickhouse_node2_1_2 │ 10.105.220.211 │ 9001 │ 0 │ default │ │ 0 │ 0 │ │ ch_base_cluster │ 2 │ 10000 │ 1 │ clickhouse_node2_2_1 │ 10.105.220.211 │ 9000 │ 0 │ default │ ... 本文所使用的环境有一个名为ch_cluster的集群它由两个分片组成每个分片包含两个副本。 要注意区分分片和副本 分片是指包含数据不同部分的服务器要读取所有数据必须访问所有分片。副本是存储复制数据的服务器要读取所有数据访问任一副本上的数据即可。 向分布式表中写数据 向集群写数据的方法有两种 自已指定要将哪些数据写入哪些服务器并直接在每个分片上执行写入。换句话说在分布式表上«查询»在数据表上 INSERT。 这是最灵活的解决方案 – 你可以使用任何分片方案对于复杂业务特性的需求这可能是非常重要的。 这也是最佳解决方案因为数据可以完全独立地写入不同的分片。在分布式表上执行 INSERT。在这种情况下分布式表会跨服务器分发插入数据。 为了写入分布式表必须要配置分片键最后一个参数。当然如果只有一个分片则写操作在没有分片键的情况下也能工作因为这种情况下分片键没有意义。 每个分片都可以在配置文件中定义权重。默认情况下权重等于1。数据依据分片权重按比例分发到分片上。例如如果有两个分片第一个分片的权重是9而第二个分片的权重是10则发送 9 / 19 的行到第一个分片 10 / 19 的行到第二个分片。 选择将一行数据发送到哪个分片的方法是首先计算分片表达式然后将这个计算结果除以所有分片的权重总和得到余数。该行会发送到那个包含该余数的从prev_weight到prev_weights weight的半闭半开区间对应的分片上其中 prev_weights 是该分片前面的所有分片的权重和weight 是该分片的权重。例如如果有两个分片第一个分片权重为9而第二个分片权重为10则余数在 [0,9) 中的行发给第一个分片余数在 [9,19) 中的行发给第二个分片。 分片表达式可以是由常量和表列组成的任何返回整数表达式。例如您可以使用表达式 ‘rand()’ 来随机分配数据或者使用 ‘UserID’ 来按用户 ID 的余数分布 总结 Clickhouse采用了特殊的引擎设计结构和各种方案保证其查询和存储的高效。分布式的创建和使用还有很多的细节等待去深挖。
http://www.dnsts.com.cn/news/58198.html

相关文章:

  • 安全的网站建设推广医院网站
  • 在哪里可以免费做个人网站建设学校网站的意义
  • 工程建设资质单位网站黄村做网站的公司
  • 做网站哪里买空间好网站设计建设维护
  • 做外贸的网站怎么建立汽车租赁网站怎么做
  • 电子商务网站开发技术解决方案写代码做网站需要多好的cpu
  • php网站设计要学多久emlog与wordpress
  • 酒水销售网站模板金融网站开发公司
  • 雄安建设工程信息网站做分享衣服网站的初衷是什么意思
  • p2p网站建设方案做网站开发的笔记本配置
  • 深圳网站建设的客户在哪里wordpress roles
  • .net网站吃内存工商注册官方网站
  • 户外商品网站制作苏州企业网站设计开发
  • 网站制作与网页制作长沙网红打卡地
  • 湛江个人网站制作在哪里做做小程序的公司有哪些比较好
  • 电商网站建设源代码电子科技网站
  • 棋牌网站建设外贸网站设计风格
  • 上海网页设计公司山东济南兴田德润简介优化网站加载速度
  • 网站作弊盘锦市城乡建设厅网站
  • 小微型企业网站建立做网站链接怎么做
  • 做外贸要做什么网站许昌市做网站公司
  • 手机模板网站模板下载网站今天济南刚刚发生的新闻
  • 做微电影模板下载网站注册100万公司每年费用多少
  • 烟台网站建设方案推广洋桥网站建设
  • 化妆品商城网站方案服务器网站部署
  • 做权重网站建设企业网站就等于开展网络营销吗
  • 建设个人网站教程最超值的锦州网站建设
  • 网站提升权重成品网站哪个好
  • 海外贸易网站开发公司如果对外租房需要成立管理公司吗
  • 网站制作 万网连锁销售网站制作