数据采集之数据库:怎么实时采集数据库数据?


场景:
      用户的系统越来越复杂,多系统,多服务,分散在不同的主机或者容器中,AIops和数据分析,数据挖掘的需求越来越迫切,数据需要从不同的分散的系统采集出来,集中处理,那么数据库的数据采集也是比较重要的一块需求!用户对数据库采集的需求,主要是数据需要实时采集,数据完整性,不丢一条数据,另外采集程序的资源消耗要小,一般小于%5。
 
分析:
      1.数据库种类比较多,类别分为关系型数据库,nosql数据库
      2.数据表不固定
      3.数据采集效率依赖数据库的查询效率,所以采集需要最优
      4.需要考虑资源消耗
方案:
     1.关系型数据库:采集sql+driver层的结构,保证通用性
     2.nosql数据库:这个不具有通用性,需要单独适配
     3.出于采集端性能和资源的需求,不能在采集端排序
     4.出于数据库端的查询资源消耗,尽量要避免在查询中使用排序
     5.数据完整性需求,需要考虑数据落盘时间
     综上需求考虑,方案如下:
     关系型数据库:采用sql+driver层的结构,优先采用时间范围查询采集数据,为了保证数据的实时性,需要延时查询,同时支持索引,时间戳等
   方式
     nosql数据库:使用不同数据库的driver来采集数据,采集方式同关系型数据库
 
  为什么不使用排序?
       经过实践证明,在用户错中复杂的数据库使用环境中,大数据量,高负荷,即使最简单的排序查询,也需要较高的CPU消耗,  导致查询时间过长。
结束:
       采集器一般是和宿主机运行在一起的,即使是数据库通过网络查询,最终的查询压力也是传导到用户的数据库,所以,要求采集器的资源消耗一定要小,避免对用户的系统产生影响,这个是第一优先要考虑的因素,重中之重!
     


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM