2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

使用 Space4J 进行 Java 的内存持久化

  • 2008-10-03
  • 本文字数:882 字

    阅读完需:约 3 分钟

Space4J 是一个简单的数据库系统,它使你可以在内存中与 Java 集合协同工作。由于内存对数据的随机访问速度要比磁盘快几个数量级,所以 Space4J 为性能关键的“实时”Web 应用和系统提供了更好的可伸缩性。

通过使用 Space4J,如果想从数据库表中取出一个 User,开发者就无需执行 SQL SELECT 语句了,而只需访问一个 users map(java.util.Map),然后调用 users.get(id)。因为所有的数据都保存在 JVM 所管理的内存中,所以就无需额外的数据库应用、socket 连接、JDBC 驱动、SQL 语句或者任何 ORM 工具等。数据就在那儿,在对象中,在 Java maps 中。如果你想修改数据,那么你需要创建一个 Command 对象,然后将其序列化并保存到磁盘上的一个日志文件中。当重启时,上次的 commands 就会从日志文件中被读取进来并被再次使用,然后生成与系统崩溃前一样的数据集。

应用会不时地将所有数据的快照存储到磁盘上以防止日志文件变得过大。Space4J 将所有数据都保存在 Space 对象中。当进行快照时,整个 Space 对象会被序列化并存储到磁盘上。因此当重启时,只有上次快照后的 commands 而不是全部需要重新应用。快照的大小取决于应用。除非使用了 Space4J 集群,否则系统必须进入只读模式才能将快照保存到磁盘上。这方面的一个例子就是处于负载平衡下的 Web 应用,这时每个 Web 服务器都需要有一个 Space4J 节点。

与 Space4J 一起发布的还有一个完善的索引框架,该框架支持 4 种不同的索引类型从而方便以多种方式来搜索数据。它也可用在通常的数据库中以进行离线处理、数据仓库、报表等等。

Space4J 使用了 Java 1.6 的并发数据结构来处理对数据的并发读 / 写访问,因此写只会阻塞写、而读则不会阻塞其他操作,也不会被其他操作阻塞。这意味着一次只能进行一个修改操作,但读操作就可以并发执行而不会抛出 ConcurrentModification 异常!

你可以下载最新版(0.9.1)或者查看源代码仓库

如果你想进一步了解关于将数据访问从磁盘转换到内存中,以得到更好的性能及其他数据访问的话题,请阅读InfoQ 上Steven Robbins 所写的文章——“ RAM 是新的硬盘”。

查看英文原文: Java In-Memory Persistence with Space4J

2008-10-03 23:131084
用户头像

发布了 88 篇内容, 共 272.9 次阅读, 收获喜欢 9 次。

关注

评论

发布
暂无评论
发现更多内容

助力企业数智化上云跃级提升,云耀X实例柔性算力一直加速一直快

YG科技

你不可不知的开源组织详解,这里都有!

Apache IoTDB

Pencils Protocl全新品牌升级,如何构建 LRT 赛道新范式?

股市老人

云耀X实例:下一代柔性算力新物种,双倍性能加速跃级体验

YG科技

一文读懂Pencils Protocol Season 3:多重收益实现一鱼多吃

加密眼界

Pencils Protocol Season 3 现已开启,一鱼多吃最大化收益

石头财经

Pencils Protocol Season 3 现已开启,多重收益一览

股市老人

云耀X实例:柔性算力新物种,性能超越独享型实例

YG科技

中小企业上云如何选?华为云这款帮你一键完成性能飞跃提升

YG科技

Logstash 业务日志接入可观测最佳实践

观测云

Logstash

信通院《智能化数据管理工具能力要求》标准发布,Aloudata 受邀参编!

Aloudata

DataOps 数据管理

Python实现大麦网抢票的四大关键技术点解析

我再BUG界嘎嘎乱杀

Python 编程 后端 软件开发 抢票

Pencils Protocol Season 3 现已开启,一鱼多吃最大化收益

股市老人

助力中小企业一键上云部署,新一代柔性算力云耀X实例展实力

YG科技

用python优雅实现:序列A依照序列B排序

我再BUG界嘎嘎乱杀

Python 编程 后端 软件开发

新品牌升级的 Pencils Protocl,如何构建 LRT 赛道新范式?

石头财经

基于 Milvus + LlamaIndex 实现高级 RAG

Zilliz

Milvus Zilliz llamaindex rag

智谱AI、OpenAI、谷歌等16家顶级AI公司签署前沿人工智能安全承诺

技术研究院

Python Web Service开发及优化

我再BUG界嘎嘎乱杀

Python nginx flask web服务

Moonchain 随柏林市长访问东京,并与三菱和富士通等建立合作预期

股市老人

2024-05-22:用go语言,你有一个包含 n 个整数的数组 nums。 每个数组的代价是指该数组中的第一个元素的值。 你的目标是将这个数组划分为三个连续且互不重叠的子数组。 然后,计算这三个子数

福大大架构师每日一题

福大大架构师每日一题

伍继智能:基于 EMQX Cloud 实现智慧电力运维平台

EMQ映云科技

Pencils Protocol Season 3 现已开启,多重收益一览

BlockChain先知

全新品牌升级的 Pencils Protocl,构建 LRT 赛道新范式

加密眼界

Pencils Protocl全新品牌升级,如何构建 LRT 赛道新范式?

BlockChain先知

2024 年 5 个 GO REST API 框架

幂简集成

Go REST API

Node下调试better-sqlite3

麦兜

一文读懂Pencils Protocol Season 3:多重收益实现一鱼多吃

西柚子

全新品牌升级的 Pencils Protocl,如何构建 LRT 赛道新范式?

股市老人

使用Space4J进行Java的内存持久化_Java_Dio Synodinos_InfoQ精选文章