分享

Apache Ignite 新一代数据库缓存系统


问题导读

1.Apache Ignite允许什么数据存储在内存中?
2.Apache Ignite如何实现自动化持久数据?
3.Ignite是否支持任何底层存储平台?





将数据存储在缓存中能够显著地提高应用的速度,因为缓存能够降低数据在应用和数据库中的传输频率。Apache Ignite允许用户将常用的热数据储存在内存中,它支持分片和复制两种方式,让开发者可以均匀地将数据分布式到整个集群的主机上。同时,Ignite还支撑任何底层存储平台,不管是RDBMS、NoSQL,又或是HDFS。

   1.png

  在集群配置好之后,数据集增加只需在Ignite集群中增加节点而不需要重启整个集群。节点数目可以无限增加,所以Ignite的扩展性是无穷的。在Ignite的配置上有下面这几个选项可供选择:

  Write-Through和 Read-Through

  在Write-Through模式中,缓存中的数据更新会被同步更新到数据库中。 Read-Through则是指请求的数据在缓存中不可用时,会自动从数据库中拉取。

  Write-Behind Caching

  Ignite还提供了一种叫做Write-Behind Caching的数据库异步更新模式。默认情况下,Write-Through中每一次更新都会对数据库发起一次请求。如果使用Write-Behind Caching后写,对缓存的更新会整合成批次然后再发送给数据库。这对改删频繁的应用来说可以达到相当的性能提升。

  自动化持久数据

  Ignite提供了易用的schema映射工具,从而系统可以自动地与数据库整合。这一工具可以自动地连接数据库,并生成所有需要的XML OR-mapping配置以及Java域模型POJOs。

  SQL查询

  查询Ignite缓存很简单,使用的就是标准的SQL。Ignite支持所有的SQL函数、聚合和group操作,甚至支持分布式SQL JOINs。下面Ignite中一个SQL查询示例:

  IgniteCachecache = ignite.cache("mycache"); // ‘Select’ query to concatenate the first and last name of all persons. SqlFieldsQuery sql = new SqlFieldsQuery( "select concat(firstName, ' ', lastName) from Person"); // Execute the query on Ignite cache and print the result. try (QueryCursor> cursor = cache.query(sql)) { for (Listrow : cursor) System.out.println("Full name: " + row.get(0)); }

  小结

  Apache Ignite是一个聚焦分布式内存计算的开源项目,它在内存中储存数据,并分布在多个节点上以提供快速数据访问。此外,可选地将数据同步到缓存层同样是一大优势。最后,可以支持任何底层数据库存储同样让 Ignite成为数据库缓存的首先。


已有(1)人评论

跳转到指定楼层
月如钩 发表于 2015-11-25 15:28:35
个人感觉 Apache Ignite如果能成为apache顶级项目,它的应用一定很广
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条