写点什么

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

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

关注

评论

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

【论文解读】大模型与游戏-综述和路线图

合合技术团队

游戏 LLM

WonderPen妙笔 for Mac中文版 写作软件下载

Rose

苹果Macos系统 macOS 12 Monterey v12.7.2正式版

Rose

Dynamic Wallpaper mac动态壁纸软件 每日一换,心情更佳!

Rose

iZotope RX 10 for Mac 专业音频修复 兼容M芯片

Rose

接口测试用例设计的关键步骤与技巧解析

霍格沃兹测试开发学社

CBA体育赛事直播在线观看平台开发多少钱?视频直播源数据获取方法

软件开发-梦幻运营部

官答|slow_query_log_file实例内存中变量与配置文件设置的不一致

GreatSQL

流量限制防火墙工具 TripMode for Mac v2.2.1中文激活版

Rose

火山引擎ByteHouse助推金融头部客户精准营销提效

字节跳动数据平台

数据库 大数据 数据仓库 云原生 Clickhouse

三维数字雕刻ZBrush 2021 mac版下载 含ZBrush 2021破解补丁

Rose

比较与对比:WMS与TMS在供应链管理中的角色和功能

天津汇柏科技有限公司

仓库管理系统

反射API与AOP:实现零配置的服务治理

技术冰糖葫芦

API boy API 文档 API】 API 性能测试

一文了解微服务

NGINX开源社区

DevOps 微服务 CI/CD API NGINX PLUS

5个改善用户体验的HTML属性

南城FE

html 前端 用户体验

“模”力加持,大模型电销场景最佳范式!

中关村科金

Lightroom Classic 2024中文直装版 Mac&win

Rose

JetBrains GoLand 2023 中文永久激活码 Mac/win

Rose

OpenAI新模型GPT-4o“炸裂登场” 响应速度堪比真人 关键还免费!

蓉蓉

ChatGPT gpt4o

如何提升软件开发从业者在行业中竞争力?

小魏写代码

如何提升金融业务效率的同时保障身份认证安全和用户体验(二)

芯盾时代

iam 统一身份认证 银行业

碳课堂|搞清楚碳足迹 只看这篇文章就够了

AMT企源

双碳 碳管理 碳核算 碳足迹

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