tidb作为指标监控数据存储数据库的使用场景

需求反馈
【需求涉及的问题场景】
tidb的使用场景:使用tidb作为监控指标的存储数据库。具体使用层面:一个大的业务线的各种指标数据会使用一个database,这个database实例中只有一个表。进一步,使用json字段表示这个业务线中的各种业务场景的指标数据。
【期望的需求行为】

  1. 这种使用方式存储指标监控数据在技术层面是否合理?比如如果对不同的业务场景做索引,在json中定义的索引较多的话,是否会对单一的表产生问题?
  2. 是否有类似公司这么做过,能支持什么数据量?
    【需求可替代方案】

【背景信息】
使用grafna读取tidb的表进行图表聚合,做指标监控展示和告警

目前 TiDB 有在中国银行替代 MySQL 作为监控数据存储的案例:https://www.infoq.cn/article/xcivmcvwwi7o8vwpyabp

但是用 json 字段表示这个业务线中的各种场景的指标数据,这个目前应该还没有对应的案例,最好是先测试一下目前 TiDB 对于 json 字段的支持程度是否能够满足监控的需求,可能存在部分兼容不完善的情况。先在功能上验证一下。

好的。谢谢。案例里面没有提到更细的细节,比如不同的指标是什么存储形式。zabbix比较早了,应该不是使用json存储的,所以业务实现上差别比较大。

最好是先测试一下目前 TiDB 对于 json 字段的支持程度是否能够满足监控的需求,可能存在部分兼容不完善的情况。

这块应该不会有问题。json字段我们用了简单的功能,按照json查询的’->'语法获取json内部的字段,以及给json中的字段创建索引。都在测试环境验证了。

另外的问题就是存储层面的细节:
场景:如果给把这个表中的json当成一个宽表,举个例子,实际业务场景可能出现这个json里面的字段一共有几百个个不同的field,但是每条json数据大概仅包含10个左右的field。另外,json中的索引一共有50个,但是每条数据中存在的字段属于索引的仅仅有3-5个。
问题:这种情况对tidb的存储和查询效率是否影响?具体的存储细节可以解释一下吗?谢谢

首先,目前 TiDB 的 JSON 类型支持,还是属于实验特性,并不建议在生产环境中使用
其次,你们通过 json 字段存储多个 field 并在字段上创建索引,等于是通过 json 字段类型达到 nosql 的效果,这个对于 TiDB 来说并不是一开始设计想要解决的问题,TiDB 对于这个场景的支持可能并不好。对于监控指标的存储,目前应该有比较多的时序数据库可以考虑选择,时序数据库本身就是为了监控指标之类的场景设计的数据库,专门的数据库做专业的事情,感觉更合适。

TiDB5.0有计划加强对json这块的支持么?目前确实是为了数据监控。我们这边会再沟通一下。
目前了解下来tidb集群已经有千万级别每天的数据了。暂时用起来还没出现什么问题。
再问下,从TiDB底层存储方面,这块支持不好的原因是什么呢?比如数据量到达亿/天,json中的字段或者索引过多就会出现问题?能从技术角度讲一下么?
谢谢

从研发的角度来看,目前暂时没有人力投入在这一块的。估计至少2-4个月内是没有计划的。

TiDB 目前以 sprint 来规划功能,大概是 2 月一个 sprint,决定做哪些事情。
几个 sprint 之后会不会把 json 的优先级提高不确定。