YMatrix 文档
关于 YMatrix
标准集群部署
数据写入
数据迁移
数据查询
运维监控
参考指南
- MPP 架构
- 镜像分布策略
- 持续聚集
- 滑动窗口
- 全文搜索
- Grafana 监控指标解读
- Prometheus 监控指标解读
- 术语表
-
工具指南
- mxaddmirrors
- mxbackup
- mxbench
- mxdeletesystem
- mxgate
- mxinitstandby
- mxmoveseg
- mxpacklogs
- mxrecover
- mxrestore
- mxshift
- mxstart
- mxstate
- mxstop
- gpconfig
- pgvector
-
数据类型
-
存储引擎
-
执行引擎
-
系统配置参数
- 使用说明(必读)
- 参数目录
- 文件位置参数
- 连接与认证参数
- 客户端连接默认值参数
- 错误报告和日志参数
- 资源消耗参数
- 查询调优参数
- 运行中的统计信息参数
- 自动清理参数
- 数据表参数
- 锁管理参数
- 资源管理参数
- YMatrix 数据库集群参数
- 预写式日志参数
- 复制参数
- PL/JAVA 参数
- 版本和平台兼容性参数
-
索引
-
扩展
SQL 参考
- ABORT
- ALTER_DATABASE
- ALTER_EXTENSION
- ALTER_EXTERNAL_TABLE
- ALTER_FOREIGN_DATA_WRAPPER
- ALTER_FOREIGN_TABLE
- ALTER_FUNCTION
- ALTER_INDEX
- ALTER_RESOURCE_GROUP
- ALTER_RESOURCE_QUEUE
- ALTER_ROLE
- ALTER_RULE
- ALTER_SCHEMA
- ALTER_SEQUENCE
- ALTER_SERVER
- ALTER_TABLE
- ALTER_TABLESPACE
- ALTER_TYPE
- ALTER_USER_MAPPING
- ALTER_VIEW
- ANALYZE
- BEGIN
- CHECKPOINT
- COMMIT
- COPY
- CREATE_DATABASE
- CREATE_EXTENSION
- CREATE_EXTERNAL_TABLE
- CREATE_FOREIGN_DATA_WRAPPER
- CREATE_FOREIGN_TABLE
- CREATE_FUNCTION
- CREATE_INDEX
- CREATE_RESOURCE_GROUP
- CREATE_RESOURCE_QUEUE
- CREATE_ROLE
- CREATE_RULE
- CREATE_SCHEMA
- CREATE_SEGMENT_SET
- CREATE_SEQUENCE
- CREATE_SERVER
- CREATE_TABLE
- CREATE_TABLE_AS
- CREATE_TABLESPACE
- CREATE_TYPE
- CREATE_USER_MAPPING
- CREATE_VIEW
- DELETE
- DROP_DATABASE
- DROP_EXTENSION
- DROP_EXTERNAL_TABLE
- DROP_FOREIGN_DATA_WRAPPER
- DROP_FOREIGN_TABLE
- DROP_FUNCTION
- DROP_INDEX
- DROP_RESOURCE_GROUP
- DROP_RESOURCE_QUEUE
- DROP_ROLE
- DROP_RULE
- DROP_SCHEMA
- DROP_SEGMENT_SET
- DROP_SEQUENCE
- DROP_SERVER
- DROP_TABLE
- DROP_TABLESPACE
- DROP_TYPE
- DROP_USER_MAPPING
- DROP_VIEW
- END
- EXPLAIN
- GRANT
- INSERT
- LOAD
- LOCK
- REINDEX
- RELEASE_SAVEPOINT
- RESET
- REVOKE
- ROLLBACK_TO_SAVEPOINT
- ROLLBACK
- SAVEPOINT
- SELECT INTO
- SET ROLE
- SET TRANSACTION
- SET
- SHOW
- START TRANSACTION
- TRUNCATE
- UPDATE
- VACUUM
常见问题(FAQ)
时序场景下的数据写入特征
本文档介绍了时序场景下的数据写入特征,以及 YMatrix 在时序特征下的数据写入架构。
1 时序场景写入特征
存储是数据库的核心功能之一,完成数据建模和数据库连接后,就要向表写入数据。
时序场景的写入主要有以下特征:
- 数据规模大,对吞吐性能要求较高
- 写入场景复杂,如:分批合并、乱序、异频等场景
1.1 数据规模大
时序场景中数据写入的典型特点即数据规模大,反应到实际场景中包括 3 个方面:
- 实体(设备 / 顾客)规模大:设备总量达到几十万到百万量级,并会不断增长。
- 指标数量和类型多:以车联网为例,每辆车包含的指标数可能有几千个。
- 采集频率高:指标需要秒级别的频率采集,部分指标可能需要 10ms 采集一次。
综上,在不断增长的庞大的实体数量,以及高频的采集频率的影响下,时序场景产生的数据量巨大,对数据库的吞吐性能形成了极大挑战。
YMatrix 开发了 MatrixGate 高速写入工具,通过数据节点(Segment)并行接入数据的实现方式,最高可以达到亿级数据点/秒的写入速度。
注意!
mxgate 实现方式,请见 YMatrix - YMatrix 如何实现单机 5000万 数据点/秒写入速度;评测报告,请见 YMatrix - 时序数据库插入性能评测:YMatrix 是 InfluxDB 的 78 倍;工作原理请见 数据写入工具;
1.2 写入场景复杂
在实际场景中,数据写入面临的问题不仅仅是数据规模大、来源形式多样化,还包括一些复杂的异常情况,如:
- 分批上报自动合并
- 乱序、延迟上报
- 异频上报
1.2.1 分批
在某些场景中,设备在某个时刻的采集指标不会一次性的全部发送回来,而是分批次回传。多次回传的数据需要合并到一起,而不是分多条记录存放。
对于这种场景,YMatrix 支持通过 UPSERT 功能来应对。此场景的详细介绍与 UPSERT 功能用法见 数据分批合并场景(UPSERT)。
1.2.2 乱序、延迟
延迟指的是设备故障或者采集链条某个节点出现问题时,数据不能按时上报。在采集链条恢复正常时,再上报数据。譬如汽车进入无信号区后行驶数天,进入有信号区域时会恢复上报链路。这种延迟常常可以按照天来计算,甚至可以按照周来计算。
乱序则意为设备故障或者采集链条某个节点故障时,上报将延迟。故障修复后,有时需要先上报最新的数据,然后逐步补齐缺失的数据。这种情况就会发生乱序上报,即上报的数据可能是比已经上报过的数据还要旧。
因这两种场景常常无需数据库进行特别的数据合并处理,在此不再赘述。
1.2.3 异频
异频是指设备的不同指标分别按照不同的频率来采集,比如,有的是 1s 采集一次,有的是 2s 采集一次。如下图所示:
异频上报会导致在存储数据的时候,对于低频采集的指标值中会存在大量 NULL,而 NULL 值同样会占用一定的存储空间:对于 HEAP 表,存储开销为列数/ 8 字节;对于 MARS2 表,存储开销为 RowGroup 行数/ 8 字节。所以要根据 NULL 的情况综合考虑解决方案。
2 YMatrix 数据写入全景图
YMatrix 可以将多个来源,不同形式的数据接入到自己的系统中,下图包含了常见的接入数据来源和存储形式。
注意!
直接点击对应的图标即可跳转到相应文档。