写点什么

使用 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:131071
用户头像

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

关注

评论

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

更强模型、更低价格、更易落地,豆包大模型日均tokens使用量超5,000 亿,落地实践再进阶

新消费日报

从供应商深度绑定,到走向真正的云原生,他们是这样做的

阿里云云效

阿里云 云原生 云效

Apache RocketMQ 中文社区全新升级!

阿里巴巴云原生

阿里云 云原生 Apache RocketMQ

Lightroom Classic教程:修复画笔(污点去除)工具的使用

Rose

Lightroom Classic教程 lr修复画笔工具

华为云低代码AstroZero技巧教学1:表格的超链接赋能

低代码 华为云

lut调色预设怎么用?LUT预设导入fcpx/PR/AE/PS/LR/达芬奇 详细教程

Rose

lut调色预设 lut调色预设怎么安装

回顾加密风险投资15年演变:步履维艰,但总体向上

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

API 接口性能优化管理

Noah

“AI+Security”系列第2期(三):面向LLM(大语言模型)的漏洞挖掘与对齐防御研究

云起无垠

加密创投周期进化论:未来或黯淡,但流动性是那道光

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

从供应商深度绑定,到走向真正的云原生,他们是这样做的

阿里巴巴云原生

阿里云 云原生 云效

企业该怎么适应数字化转型?

优秀

数字化转型

Final Cut Pro教程:fcpx跟踪功能如何添加马赛克?

Rose

脱敏效率提升70%!城商行:嘉为蓝鲸日志中心助力保障数据安全与合规

嘉为蓝鲸

运维 日志 日志管理 银行业

如何快速查看 Mac 的温度?

Rose

英文版Premiere Pro怎么切换成中文?PR汉化包怎么安装

Rose

Premiere Pro 2024直装版 Premiere Pro中文版 PR下载安装

磁盘管理软件Tuxera NTFS for Mac破解资源及使用教程

Rose

Tuxera NTFS Mac2022 Tuxera NTFS教程 磁盘格式化 Mac NFFS

基于LangChain手工测试用例转接口自动化测试生成工具

测试人

软件测试

智源千万级指令微调数据集Infinity-Instruct持续迭代,Llama3.1仅微调即可接近GPT-4

智源研究院

photoshop 运行弹窗This non-genuine Adobe app has been disabled 详细的解决方法

Rose

房地产行业具体怎么定义呢?需要堡垒机吗?

行云管家

网络安全 数据安全 堡垒机 房地产

【灾备应急管理】《2023年金融机构业务连续性管理能力建设调研报告》解读

嘉为蓝鲸

灾备建设 金融业 业务连续性

京东电商自动化运营,4款RPA机器人免费用

八爪鱼采集器︱RPA机器人

RPA 自动化 电商 RPAxAI

2024福州等保测评机构名单大汇总

行云管家

等保 等保测评 福州

基于LangChain手工测试用例转接口自动化测试生成工具

测吧(北京)科技有限公司

测试

PS画画工具推荐:让画面一键发光的 PS 插件如何使用

Rose

AirServer 7 mac激活版:macOS专业的投屏工具

Rose

AirServer 7 mac激活版 mac投屏软件 airserver投屏

量化交易的基石:ExchangeSdk

Silently9527

比特币 币安智能链 量化交易

828 B2B企业节·深圳站--智慧交互:AI与大模型的融合创新研讨会圆满举办

最新动态

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