前言:

Ignite是一个以内存为中心的数据平台,具有数据强一致、高可用、支持标准SQL的特性。Ignite从2015年加入apache以来备受关注,截至发文ignite已更新至2.7版本,本文推荐版本2.6以上(支持copy关键字)。此次应用Ignite的计算网格部分,代替Mysql关联查询,降低业务库压力,提升平台效率。

一、 应用场景

数据云及云计算数据缓存层

背景:业务数据库越来越大,全量抽取更新及关联查询维表对业务库Mysql造成巨大压力,较长sql关联查询耗时20分钟以上。

结论:重新改变原始的数据加工逻辑后,引入ignite框架完成分钟级数据同步。单任务提高效率,由每小时同步一次数据,提升至15分钟,性能提高4倍。并且关联计算由ignite完成,减少了业务端Mysql的压力。

二、 应用场景架构对比

image.png

在之前的架构中耗时较长的部分为:

Mysql关联查询,并对业务库Mysql造成较大压力,随着数据量的增加,较长关联查询已经到达20分钟以上。

文件读写,利用spark将csv转orc文件并写入hive表。

数据分发,由hive写入hdfs文件,通过BulkLoad加载到hbase,后续使用phoenix做业务关联查询。

优化后的ignite架构:

Mysql关联查询移到Ignite中。Ignite的内存关联查询部分优于Mysql数据库。

取消数据的文件读写,使用Mysql binlog接入kafka实时更新ignite表数据,规避csv转orc过程。

同时将ignite数据分发到hive和phoenix做业务关联查询使用。

三、 详细架构图

image.png

四、 Ignite SQL数据网格优势

为了提升性能Ignite对sql查询做了很多优化,并且支持事务。

分布式查询

Ignite借用了H2的SQL查询解析器以及优化器还有执行计划器。H2会在一个特定的节点执行本地化的查询(一个分布式查询会被映射到节点或者查询是以本地模式执行的),然后会将本地的结果集传递给分布式SQL引擎用于后续处理。

数据和索引,通常是存储于Ignite数据网格端的,而Ignite以分布式以及容错的方式执行SQL查询。

Ignite SQL网格执行查询

首先,如果查询在一个部署有REPLICATED模式缓存的节点上执行,那么Ignite会假定所有的数据都是本地化的,然后将其直接传递给H2数据库引擎执行一个简单的本地化SQL查询,对于LOCAL模式的缓存,也是同样的执行流程。

第二,如果查询执行于PARTITIONED模式缓存,那么执行流程如下:

查询会被解析然后拆分为多个映射查询以及一个汇总查询;

所有的映射查询都会在持有缓存数据的所有数据节点上执行;

所有的节点都会将本地执行的结果集提供给查询发起者(汇总节点),它会通过正确地合并结果集完成汇总的过程。

处理带有ORDER BY以及GROUP BY的结果集

带有ORDER BY语句的SQL查询不需要将所有结果集都加载到查询发起(汇总)节点来完成排序。而是查询映射的每个节点都会对自己那部分数据进行排序然后汇总节点以流的方式进行合并。

对于有序的GROUP BY查询也是同样的优化方式,不需要在将其返回给应用之前将所有数据加载到汇总节点用于分组。在Ignite中,来自单独节点的部分结果集可以被逐步地流化、合并、聚合以及返回给应用。

Ignite SQL对事务的支持

原子化模式、跨缓存事务和近缓存事务、阶段提交(2PC)、并发模型和隔离级别、悲观事务、乐观事务、死锁检测、无死锁事务。

五、 当前版本存在的不足及解决方法

在Ignite sql 存在与Mysql不同的函数和语法

修改原sql为当前Ignite支持的sql,如:collect_set

编写自定义函

开启多备份和磁盘存储效率下降

为提高性能,关闭磁盘同步,因此存在数据安全和恢复问题,我们编写高效的数据加载模块,快速的加载数据提高集群的恢复能力。

Mysql与Ignite表的元数据管理,以及kafka任务管理

使用数据云的元数据管理

开发任务管理模块、包括启动、监控、自启等功能

Ignite数据批量导入导出

2.6以上版本,使用copy命令初始化导入数据

使用binlog解析模块,解析kafka中的Mysql binlog对Ignite进行更改操作

使用客户端执行导出文件到csv,设置参数:!outputformat csv

六、 未来规划

目前ignite的稳定性无法攀比当前应用广泛的数据仓库架构,无法成为核心的应用进行大规模部署。为了满足业务场景构建10台ignite集群。未来随着ignite 的发展,我们将不断进行集群扩容,逐渐加入更复杂、数据量更大的业务场景。

Ignite能替代mysql吗_IGNITE应用实践相关推荐

  1. MySQL数据库企业级应用实践

    MySQL数据库企业级应用实践 标签(空格分隔): linux学习知识整理 一,概述 1.1 MySQL介绍 MySQL属于传统关系型数据库产品,它开放式的架构使得用户选择性很强,同时社区开发与维护人 ...

  2. mysql分布式数据库实践论文_新浪微博基于MySQL的分布式数据库实践

    提起微博,相信大家都是很了解的.但是有谁知道微博的数据库架构是怎样的呢?在今天举行的2011数据库技术大会上,新浪首席DBA杨海潮为我们详细解读了新浪微博的数据库架构--基于MySQL的分布式数据库实 ...

  3. python入门与提高实践 老男孩_跟老男孩学Linux运维:MySQL入门与提高实践

    第10章 MySQL数据库日志知识与企业应用实践 10.1 MySQL常用日志文件知识 10.2 错误日志的介绍与配置 10.3 普通查询日志的介绍与配置 10.4 二进制日志的介绍与配置 10.5  ...

  4. (面试踩坑)redis可以替代MySQL吗?

    背景: 面试官:redis你学过吧,听你的语气我想你redis学的不错吧? 我:- 面试官:那好,我问你一个很简答的问题哈,你说一下redis可以替换MySQL吗?你简单说一下就好. 我:(一般面试官 ...

  5. MySQL 索引的最佳实践分享

    作者爱说话 忙忙碌碌的一周又过去了,这周最大的乐趣就是买了个小音箱,又可以下班的时候开始愉快的开始练琴了,程序员嘛,还是得培养点艺术细菌.哈哈 这周本来没想好写什么东西,刚好周五公司进行了内部技术分享 ...

  6. mysql索引总结与实践

    https://juejin.cn/post/6997578033179656229 – 2021-08 黄壮壮 mysql索引总结与实践; (纸上得来终觉浅 绝知此事要躬行) 复制到 navicat ...

  7. java mysql_num_rows_JAVA MYSQL sql_calc_found_rows和found_rows()实践

    一.背景 1.百万级数据库,数据量持续增加.每张数据表的字段数大于50(时间字段,分组字段,指标字段) 2.JDBCTemplate,java,mysql 二.问题描述 通过分析接口返回数据响应时间过 ...

  8. 12 条用于 Linux 的 MySQL/MariaDB 安全最佳实践

    MySQL 是世界上最流行的开源数据库系统,MariaDB(一个 MySQL 分支)是世界上增长最快的开源数据库系统.在安装 MySQL 服务器之后,在默认配置下是不安全的,确保数据库安全通常是通用数 ...

  9. 后端传输大量log数据_京东智联云MySQL读写分离最佳实践 ,轻松搞定数据库高性能扩展...

    数字化时代,数据库对任何企业而言都是其应用的核心资源.MySQL作为当前最流行的关系型数据库,虽然是开源软件,但是其简单易懂.易于部署管理,且具有ACID特性.强大的SQL查询等特点,被各种业务系统作 ...

最新文章

  1. 中石油-高精度除法-java版
  2. 《剑指offer》第十八题(在O(1)时间删除链表结点)
  3. BLE 包结构及传输速率
  4. vue cli3.0 修改配置文件
  5. 动物行为检测计算机视觉_当动物行为研究遇见机器视觉——“红外热成像+计算机视觉”动物行为研究系统...
  6. ping32终端安全管理系统_通过Ping32工单管理功能使用教程
  7. mybatis传统方式开发DAO
  8. 为什么要序列化Serialization
  9. error processing request什么意思_从processing到Touchdesigner小教程
  10. linux内核打印%us,linux-kernel-使用us计时器跟踪Linux内核,按功能(仅最大)
  11. 小王子星球调色Web版 - the little prince
  12. 图像处理领域公认的重要英文期刊(SCI收录)
  13. 百家讲坛全集免费下载
  14. oracle启动实例界面,oracle 11g 启动数据库实例
  15. 力扣1438.绝对差不超过限制——python
  16. python+selenium实现淘宝双十一自动下单
  17. 为什么你的大数据项目会失败?
  18. 软件开发Share the Cakes
  19. SaaSpace:适合游戏开发者的最佳 3D 建模软件
  20. 艾永亮:2年内赚50亿,名创优品背后的超级产品战略凭什么嚣张

热门文章

  1. Python|“套娃”算法-递归算法解决全排列
  2. 关于Jmeter一直报红
  3. 计算机网络安全人为因素,计算机网络安全问题
  4. 视频教程-赵强老师:Oracle数据库从10g到11g(5)过程、函数和触发器-Oracle
  5. leetcode刷题(53)——52. N皇后 II
  6. xbeta精心荐精品之免费软件列表
  7. Android加载动画
  8. 2021年潮阳一中的高考成绩查询,2020潮阳区普通高中录取分数线
  9. 美团三面:消息中间件实现高可用架构,你会怎么设计?
  10. 安卓电视大屏显示UI