用于数据库缓存的 Apache Ignite

一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡/ 赠书活动

目前,正在 星球 内带小伙伴们做第一个项目:全栈前后端分离博客项目,采用技术栈 Spring Boot + Mybatis Plus + Vue 3.x + Vite 4手把手,前端 + 后端全栈开发,从 0 到 1 讲解每个功能点开发步骤,1v1 答疑,陪伴式直到项目上线,目前已更新了 204 小节,累计 32w+ 字,讲解图:1416 张,还在持续爆肝中,后续还会上新更多项目,目标是将 Java 领域典型的项目都整上,如秒杀系统、在线商城、IM 即时通讯、权限管理等等,已有 870+ 小伙伴加入,欢迎点击围观

企业正在以极快的速度积累数据,需要大量的存储空间。管理大数据很困难,但处理大数据更具挑战性。由于要存储和处理数 TB 的数据,开发人员常常发现自己在如何在速度、可扩展性和成本之间取得适当平衡方面陷入困境。

将数据存储在缓存中可以显着提高应用程序的速度。它减少了由于应用程序和数据库之间频繁的数据移动而导致的网络开销。

Apache Ignite 允许您将最常访问的数据存储在内存中。它以分区或复制的方式在计算机集群中均匀分布数据。 Ignite 允许您从任何底层数据存储(RDBMS、NoSQL 或 HDFS)访问数据。

你可能会问——一旦一个集群由n个节点组成,如果数据集的大小增加了怎么办?在这种情况下,您可以动态地将节点添加到 Ignite 集群,而无需重新启动整个集群。 Ignite 的规模几乎是无限的。

Ignite 数据库缓存提供以下可配置选项:

直写和直读

write-through 模式下,当数据在缓存中更新时,它也会在底层数据库中更新。在 read-through 模式的情况下,当请求的数据在缓存中不可用时,它会自动从数据库中加载。

后写缓存

Ignite 提供了一个选项来异步执行对数据库的更新。默认情况下, 直写 模式下的每个更新都涉及对底层数据库的相应请求。启用 write-behind 缓存后,缓存数据更新被累积并分批发送到数据库。对于频繁放置和删除操作的应用程序, write-behind 缓存可以提供性能提升。

自动持久化

Ignite 附带了它自己的用户友好的数据库模式映射向导,该向导为与持久存储的集成提供了自动支持。该实用程序自动连接到底层数据库并生成所有必需的 XML OR 映射配置和 Java 域模型 POJO。

SQL 查询

要查询 Ignite 缓存,您可以简单地使用标准 SQL 语法 (ANSI 99)。 Ignite 允许您使用任何 SQL 函数、聚合或分组。它还支持 分布式 SQL JOIN 。以下是如何在 Ignite 中执行 SQL 查询的示例:


 IgniteCache<Long, Person> cache = 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<List<?>> cursor = cache.query(sql)) { for (List<?> row : cursor) System.out.println("Full name: " + row.get(0)); }


结论

Apache Ignite 是一个开源项目,专注于分布式内存计算。 Ignite 将数据存储在内存中,分布在多个节点上,提供快速的数据访问。将数据异步传播到持久层的选项是一个额外的优势。此外,与各种数据库集成的能力也使 Ignite 成为开发人员将其用于数据库缓存的简单选择。

有关更多信息、文档和截屏视频,请访问 Apache Ignite 网站