@liyuj
2018-08-09T09:53:32.000000Z
字数 3707
阅读 2142
GridGain
GridGain内存计算平台是一个高性能、集成化、混合式的企业级分布式架构解决方案,功能强大,有先进的集群管理功能,对于分布式内存数据库、流处理技术、分布式计算、分布式服务、分布式数据结构、持久化、Hadoop和Spark加速等功能,提供了广泛的支持,用于大规模的数据处理,比传统的基于磁盘或闪存的技术在性能上有指数级的提升。最新的版本在基于ZooKeeper的发现机制基础上,支持扩展至上千个节点。该软件由美国GridGain公司提供,分为开源版(Apache Ignite)、企业版等不同版本,可以根据需要进行选择。
Oracle TimesTen Scaleout
TimesTen Scaleout是Oracle TimesTen 18.1版本的一个新的产品分支,是Oracle第一个商用关系型内存分布式数据库,支持分布式,横向扩展。这种新的体系结构使TimesTen内存数据库能够扩展至几十台主机,达到数百TB的容量,并且每秒支持数百万次事务,而无需手动数据库分片或应用程序分区,特别适合有着高并发、高吞吐量事务处理需求的业务场景。
基本属性
序号 | 对比项目 | GridGain | TimesTen Scaleout |
---|---|---|---|
1 | 是否支持开源 | 分为开源版(Apache Ignite)和企业版 | 商业软件 |
2 | 技术支持 | 有开源社区技术支持,也有商业技术支持 | 商业技术支持 |
3 | 线性扩展 | 支持,使用ZooKeeper的发现机制,支持扩展至上千个节点。 | 支持,最多扩展至64个节点 |
4 | 内存分布式数据库 | 内存分布式数据库是GridGain的主打功能之一。 | 是Oracle第一个商用的内存分布式数据库。之前的TimesTen为非分布式架构 |
5 | 扩展功能 | GridGain基于自己特有的分布式架构,开发了完整的企业级分布式架构解决方案,包括分布式内存数据库、流处理技术、分布式计算、分布式服务、分布式数据结构、NoSQL数据库集成、Hadoop和Spark加速等 | 作为Oracle的商用内存分布式数据库产品,定位明确,功能专注 |
6 | 部署模式 | 支持多种部署模式,支持独立部署,嵌入式部署,也可以部署在云环境中,对Kubernetes等新技术也有广泛的支持 | 支持嵌入式和独立部署,可以脱离Oracle独立部署为内存分布式数据库。安装配置较为复杂,对于新的技术,云环境等支持较差。 |
7 | 客户端协议 | 支持SQL、ODBC/JDBC、除了Java还支持.NET平台,也支持Python、Ruby、PHP或者NodeJS,也可以考虑使用GridGain的二进制客户端协议 | 支持SQL和PL/SQL、支持ODBC/JDBC、OCI、ODP .NET,另外许多开源数据库API和适配器也可以与TimesTen一起使用,包括 PHP、node.js、Ruby、Python、Go、R和REST等 |
8 | 监控等企业级功能 | 企业版有完善的监控管理工具、安全、滚动更新、数据中心复制等功能,有完善的图形界面。 | 提供命令行界面、图形界面、存储过程、API调用等多种形式的相关支持。 |
9 | 开发支持 | 因为GridGain功能的强大性,提供了各种可能的方式方便开发,具体代码改动工作量,取决于架构设计模式以及软件使用方式。已有的代码可能改动较多,也可能改动很少。 | 对应用开发透明,可以轻易地将TimesTen部署进已有的系统中,代码改动较少。 |
10 | 多平台支持 | 支持常见操作系统平台和CPU架构 | 支持常见操作系统平台和CPU架构 |
11 | 综合成本 | 综合成本较低,技术支持有开源社区技术支持,也可以购买商业技术支持。 | Oracle的综合成本高昂,包括软件授权费、技术支持费、培训费用等 |
12 | 成熟度 | 在内存计算平台领域有十余年的经验,有众多的商用案例。 | TimesTen有近20年的历史,但是TimesTen Scaleout为Oracle的第一款商用内存分布式数据库产品。 |
13 | 行业趋势 | 国内一直在推进去IOE的工作,国内对成熟的开源项目和开源社区的认可度、参与度不断提高,为GridGain这样的开源公司提供了更多的机会。 | 不符合行业发展趋势,国内会逐步进行Oracle相关产品替代工作。 |
内存分布式数据库
序号 | 对比项目 | GridGain | TimesTen Scaleout |
---|---|---|---|
1 | SQL支持 | 支持兼容ANSI-99的SQL标准,支持DDL、DML语句。 | 支持兼容ANSI-99的SQL标准,支持DDL、DML语句,透明支持Oracle的相关技术 |
2 | 事务 | 不完整,在键值API层次支持ACID事务,基于经过一阶段提交优化后的二阶段提交机制。SQL层,仅支持原子性。 | 支持完整的ACID事务、多语句事务、约束和全局二级索引。 |
3 | 数据库支持 | 支持提供JDBC/ODBC协议的传统关系型数据库,包括Oracle,也包括MySQL等其他数据库。 | 只支持Oracle。 |
4 | 数据同步 | 支持数据库的通读和通写,支持多种数据同步方式,提供开发人员接口,自定义能力强。 | 有非常完善的数据同步方式。 |
5 | 故障恢复 | 基于WAL和检查点等相关技术,有完善的故障恢复机制。同时也支持通过复制、备份等机制提高可用性。 | TimesTen有事务日志和检查点文件存放在磁盘上。当系统重启或者意外宕机,内存数据库可以从检查点文件和事务日志中得到恢复。另外,还可以通过复制技术来提高可用性。 |
6 | 数据库模型 | 键值存储,通过H2引擎提供关系型功能。 | 关系型数据库 |
7 | 并置处理 | 通过将计算带到数据实际驻留的服务端节点,会在数据实际存储的地方执行高级的业务逻辑或者分布式SQL,甚至关联,避免了昂贵的序列化和网络开销 | 不支持 |
8 | 索引 | 支持 | 支持 |
9 | 缓存维护操作 | 使用标准DDL语法,添加了部分专有属性。 | 专有的CREATE CACHE等语法,需要一段时间的学习。 |
10 | 开发工具 | 支持JDBC协议的工具,都可以接入GridGain。 | Oracle SQL Developer对TimesTen有更好的支持 |
11 | 开发便利性 | GridGain为常见的、主流开发框架提供了集成的支持,包括Spring、Hibernate、MyBatis、Spring Data JPA等等。 | 仅提供JDBC/ODBC等标准协议的支持。 |
12 | 数据预热 | 如果开启了原生持久化,系统重启无需预热数据。 | 不支持 |
扩展特性
在内存分布式SQL数据库功能之外,GridGain相比TimesTen,还提供了大量的扩展特性,比如:
分布式服务
:分布式服务可以在集群中任意部署自定义的服务,可以实现和部署任意服务,比如自定义计数器,ID生成器,分级映射等;数据注入和流计算
:GridGain流式计算可以以可扩展和容错的方式处理连续不中断的数据流。可以与主要的流处理技术和框架进行集成,比如Kafka、Camel、Storm或者JMS等,它们为基于GridGain的架构带来非常强大的功能;分布式计算
:分布式计算是通过并行处理的方式来获得更高的性能,更低的延迟以及线性可扩展性,GridGain提供了一组简单的API,在集群内的多台计算机中执行分布式计算和数据处理,该功能针对传统的数据库存储过程,形成了完整的替代方案;分布式数据结构
:GridGain以分布式的形式支持基于java.util.concurrent
框架的大部分数据结构。比如,可以在一个节点上使用java.util.concurrent.BlockingQeque
加入一些东西,然后在另一个节点上获取它。或者有一个分布式的ID生成器,它可以保证所有节点上的ID唯一性;消息和事件
:GridGain提供了集群范围的高性能的消息功能,支持基于发布-订阅以及直接点对点通信模型的数据交换。当在分布式网格环境中发生各种事件时,GridGain的分布式事件功能可以使应用收到通知。可以自动地收到集群内的本地和远程节点上发生的任务执行、读写和查询操作的通知;机器学习
:GridGain的机器学习是一套简单、可扩展以及高效的工具,可以构建可预测的机器学习模型,而不需要昂贵的ETL;大数据组件支持
:GridGain为Apache体系的很多技术提供了广泛的支持,包括与Apache旗下的NoSQL数据库集成,比如Cassandra等,为Hadoop和Spark进行加速等。如果将GridGain作为一个内存分布式数据库,那么从功能性来说,与Oracle的TimesTen Scaleout产品基本对等,TimesTen具有的功能,GridGain大体都有,但是TimesTen Scaleout作为一个专业的内存分布式数据库,在部分功能的细节设计上,在与Oracle产品的功能整合上,做的更好。但就GridGain来说,它不仅仅是一个内存分布式数据库,在已有的系统中,如果引入了GridGain软件,相当于引入了一个多功能的数据处理平台,为已有系统的未来发展和演进,提供了更多的可能,会极大地增强已有系统的扩展性,保护用户原有的投资。
而如果引入了Oracle的TimesTen软件,会进一步增强与Oracle的绑定,不管是从行业发展的趋势来说,还是从降低大型企业的IT支出成本来说,TimesTen都未必是最佳的选择。