读书人

Java 开发 2.0: 施用 Hibernate Shard

发布时间: 2012-10-07 17:28:51 作者: rapoo

Java 开发 2.0: 使用 Hibernate Shards 进行切分

当关系数据库试图在一个单一表中存储数 TB 的数据时,总性能经常会降低。显然,对所有数据编索引不仅对于读而且对于写都很耗时。因为 NoSQL 数据商店尤其适合存储大型数据(如 Google 的 Bigtable),显然 NoSQL 是一种非关系数据库方法。对于倾向于使用 ACID-ity 和实体结构关系数据库的开发人员及需要这种结构的项目来说,切分是一个令人振奋的可选方法。

切分 是数据库分区的一个分支,但是它不是本地数据库技术 — 切分发生在应用程序级别。在各种切分实现中,Hibernate Shards 是 Java? 技术世界中最受欢迎的一个。这个灵活绝妙的项目可以让您使用映射至逻辑数据库的 POJO 对切分数据集进行几乎无缝操作(我将在下文简要介绍 “几乎” 的原因)。使用 Hibernate Shards 时,您无须将您的 POJO 特别映射至切分 — 您可以像使用 Hibernate 方法对任何常见关系数据库进行映射时一样对其进行映射。Hibernate Shards 可以为您管理低级别的切分任务。

到目前为止,在本 系列 中,我已经使用了一个基于比赛和参赛者类推关系的简单域展示了各种数据库存储技术。本月,我将继续使用这个熟悉的示例介绍一种实用的切分技术,然后在 Hibernate Shards 中对其进行实现。注意:与切分相关的主要工作与 Hibernate 没有太大关系;事实上,Hibernate Shards 的编码工作比较简单。其中关键的部分在于判断 如何进行切分以及对什么进行切分

?

请注意,清单 5 中的 POJO 映射的唯一独特方面是 ID 的生成器类 — 这就是 ShardedUUIDGenerator,它(如您想象的一样)将切分 ID 信息嵌入到 UUID 中。这就是我的 POJO 映射中切分的唯一独特方面。

描述名字大小下载方法本文样例代码j-javadev2-11.zip15KBHTTP

关于下载方法的信息

?

参考资料

学习

Java 开发 2.0 :本 developerWorks 系列探讨了可以重新解释 Java 开发前景的技术和工具,包括 NoSQL(2010 年 5 月)、SimpleDB(2010 年 6 月)和 CouchDB (2009 年 11 月)。

“使用 Max Ross 切分:Hibernate Shards”(JavaWorld,2008 年 7 月):Andy Glover 与 Hibernate Shards 创始人探讨项目背后的动机以及如何有效利用切分。

“切分之前要三思”Andrew Glover,thediscoblog.com,2008 年 6 月):切分与风险同在,提前了解切分中的风险。

“一个非传统的数据库设计方法:切分的来临”(Todd Hoff,HighScalability.com,2009 年 8 月):从专注于管理大型数据的基础架构的站点看切分。

“构建可伸缩数据库:各种数据库切分方案的利弊”—are Obasanjo,25HoursADay.com,2009 年 1 月):使用 Facebook 作为开发切分策略的一个真实示例。

“重新思考传统 DAO 模式”(Andrew Glover,thediscoblog.com,2008 年 6 月):了解关于将 DAO 添加到正常域对象的更多信息,a la Grails and Rails。

“使用 easyb 驱动开发”(Andrew Glover,developerWorks,2008 年 11 月):来自基础架构创建人的 easyb 教程简介。

浏览 Java 技术书店 获得有关这些主题和其他技术主题的图书。

developerWorks Java 技术专区:查找数百篇有关 Java 编程各个方面的文章。

获得产品和技术

Hibernate Shards:旨在通过将对水平分区的支持添加到 Hibernate Core 从而压缩数据并把数据复杂性降到最低。

easyb:通过使用一个基于规格的域特定语言,easyb 旨在支持可执行、可读取文档。

讨论

加入 My developerWorks 中文社区。在浏览面向开发人员的博客、论坛、小组和 wiki 时,与其他 developerWorks 用户联系。

读书人网 >软件架构设计

热点推荐