Hibernate OGM框架的研究
2020-02-02李文杰
李文杰
(武汉职业技术学院 湖北省武汉市 430000)
从Hibernate OGM(OGM:Object Grid Mapping 缩写)2011年发布以来,基于这个框架进行关系型和非关系型数据混合使用的案例越来越多,大家对它的认可度也逐步提升。这个框架现在还处于成长阶段,随着时间的推移它的功能逐渐得到进一步完善,开发者也会越来越重视对Hibernate OGM框架的研究和学习。
Hibernate OGM 框架目前仍处于快速成长阶段,目前已经能很好的在项目中对接Mongodb、Neo4j、Redis 等非关系型数据。该框架项目的已经完成了初始目标以及部分中级目标,并开始服务于实际开发应用了。它的最终目标是为能兼容对接所有的非关系型数据库,为开发者提供一个专注业务应用的开发环境。(可以像访问RDBMS 一样访问NoSQL 数据库),鼓励"传统"企业更多的使用新的数据使用模式,并帮助正在使用NoSQL 的应用更容易地扩展到传统数据库。
1 大数据应用分析
NoSQL 是非关系型的数据库总称。目前具有代表性并被实际应用较多的产品有Mongodb、Neo4j、Redis 等。在海量数据读取、数据分布式存储、多重数据种类集合、无固定应用模式等需求场景中,这些数据库已经发挥了巨大作用,越来越多的WEB 应用都需要这种大规模数据做支撑,而这些NoSQL 数据库提供了无需多余操作就可以横向扩展的方便,从而使得我们对掌握NoSQL 技术的紧迫性得到了充分的认识。
根据CPA(C:强一致性 A:高可用性 P:分布式容忍性)原则,我们可以将传统关系型数据库如Oracle、MySQL、DB2 等划归CP类型,强调数据一致性和可用性。然而,现阶段大多数WEB 应用不一定需要强一致性,所以大多数网站架构的选择了牺牲一些强一致性,强调AP,即高可用性和分布式,允许一些数据不一致甚至丢失。而Redis、Mongodb 为了追求高性能数据存储解决方案,所以选择了AP,即高可用性及分布式容忍性。综上所述,目前没有任何一种数据库能完美满足CPA 的全部要求,所以混合方式成为当前大数据应用的主流模式,也就是SQL 数据库和NoSQL 数据库一起使用。基于这些先进理念,Hibernate OGM 框架也因此获得了良好的应用前景和发展空间。
2 Hibernate OGM简介
Hibernate 框架战略是同时实现ORM 关系型数据库连接与OGM NoSQL 数据库连接,如Mongodb、Redis 等。而OGM 的核心是提供将数据存储到NoSQL 存储中的JPA 引擎,目标是提供相同的API,相同的语义(级联,关联等),相同的查询语言,支持的高级特性包括:事务、事件通知、高级查询、分布式处理、offheap 及故障迁移等。Hibernate OGM 框架极好地降低了学习和应用者进入NoSQL 领域的门槛,它很好的隐藏了NoSQL 数据的存储区,让开发者的应用程序与数据区进行了很好的分离,让开发者的关注度重新专注到了应用本身,开发者可以面对不同的NoSQL 数据库重用相同的编程API,使用相同的对象生命周期语义以及(一定程度上)使用相同的查询引擎。
图1
3 Hibernate OGM应用场景简介
3.1 项目设置
使用Maven 作为构建工具,在从网络下载项目所需要的框架Hibernate OGM 模块及其依赖项文件,并用于理嵌入式Neo4j 数据库;这将引入所有其他必需的模块,例如Hibernate OGM 内核和Neo4j(一种基于Java 的图形数据库)驱动程序。
图2
3.2 设计领域模型并创建映射实体
非关系型数据库提供了四种模型:键-值存储库、大数据表实现、文档存储库、图形数据库。在数据模型设计时,我们将面对的不再是一张一张Table 二维数据表,而是一个个领域数据模型。我们可以设计两个领域模型,两个模型之间标注出一对多或多对一的关联,通过创建实体类并用所需的元数据注释它们来映射域模型。
同时,Hibernate OGM 提供了如模拟序列、UUID 等几种ID 生成策略,通常我们使用UUID 生成器为模型生成ID,可以确保跨不同NoSQL 数据存储的可移植性,并使ID 生成快速且可扩展。此时我们的应用数据属于SQL 数据库和NoSQL 数据库混合使用,如果需要将数据从关系型数据库移植到NoSQL 中,开发者只需要面对完全相同映射,无需担心不同的类型数据库的影响,这就是Hibernate OGM 框架提供的关系数据向非关系型数据之间的简易迁移功能。
实体定义后需要对persistence.xml 文件进行配置如下:
3.3 接下来进行数据保存及测试
Neo4j 作为一种图形数据数据库,任何数据实体都将映射到相应的节点。保存形式如图1。
如果使用MongoDB 数据库那么,数据实体将会以文件形式进行保存。保存形式如图2。
4 同类技术简介
与Hibernate OGM 框架技术实现理念相近,如Kundera、Apache Gora、等框架技术,在实际应用中也广泛被采用。
其中Kundera 框架支持对Cassandra、Hbase、MongoDB 等的非关系型数据库的持久化操作以及关系型数据库操作。采用的实现方式是将NoSQL 操作转化为SQL 操作方式,让程序员专注到Domain Model 设计与开发上,同样实现了通过修改配置文件在各个数据库服务器之间进行切换操作。
Apache 基金组织旗下的Gora 框架项目则大力支持Apache HBase、Apache Cassandra 等非关系型数据库服务器的应用开发,而且更新速度一直很高,现在已经能够提供0.9 版本的框架源码了。
作为大数据信息时代,我们需要紧跟软件技术发展的步伐,对其大数据应用领域的各种技术进行深入的学习和应用。技术在不停发展,Hibernate OGM 也会不停变化。不停的跟踪学习、测试、应用,就是应用该框架的开发者必须长期坚持的过程。当然,一个框架肯定不能满足我们所有的应用场景需求,所以我们必须深入了解其优势和缺陷,结合实际应用进行合理构架。