ogm session
本月初,公众首次看到了一个面向NoSQL的全新Hibernate项目: Hibernate Object Grid Mapping(OGM)。该项目旨在提供将数据存储到NoSQL存储中的JPA引擎,并且第一个Alpha版本用于为2011年JBoss世界主题演讲提供动力。 JAXenter与JBoss平台架构师以及Hibernate Search和Hibernate Validator创始人Emmanuel Bernard进行了交谈,以了解有关此新项目的更多信息。
JAXenter:新的Hibernate项目Hibernate OGM的第一个公开alpha版本已经宣布。 什么是OGM项目?
Emmanuel Bernard :Hibernate OGM代表对象/网格映射器。 这个想法是提供完整的JPA API和语义(或其Hibernate本机对应物)。 但是我们没有像Hibernate Core那样将数据存储在关系数据库中,而是将它们存储在NoSQL数据存储区中。 我们还希望提供JP-QL的子集。 我们正在谈论一种完善的JPA引擎:相同的API,相同的语义(级联,关联等),相同的查询语言。
该项目开始时是作为在Infinispan(JBoss的数据网格)之上提供JPA API的解决方案。 在进行该项目时,我们意识到我们所做的选择:
*可以推广到其他键/值存储
*非常适合替代NoSQL系列,尤其是面向文档的系列
因此,我们决定使Hibernate OGM数据存储区不可知(回想起来很适合Hibernate Core的理念)。
在Hibernate OGM中,我们非常努力地使基础数据存储独立于您的应用程序。 副作用是相同的数据将被其他平台(如Ruby,.net或任何后来出现的大问题)读取。 数据的可移植性非常重要。 应用程序的数据寿命很容易达到十倍。
JAXenter: Hibernate OGM如何降低NoSQL的进入门槛?
Emmanuel:当您选择一种NoSQL产品而不是另一种(或关系数据库)时,许多选择都处于危险之中:
*程序化API
*(非)查询引擎
*事务/吞吐量/可用性/分区语义
*促进操作和支持的工具
Hibernate OGM背后的想法是让您重用相同的编程API,相同的对象生命周期语义以及(一定程度上)相同的查询引擎。 与可以使用一套完全不同的API和编程模型的开发人员可以使用已经熟悉并且与他的编程模型很好地集成的API有所不同。 您仍然需要关注最适合您的数据存储需求的引擎,但是如果您的应用程序是域模型驱动的,那么Hibernate OGM将是一个有用的工具,可以限制您的应用程序和您的应用程序之间的泄漏。
数据存储。 您还可以在应用程序生命周期的后期选择NoSQL数据存储,就像Hibernate Core方言可以让您决定在开发周期的稍后阶段使用哪个关系引擎。 老实说,它不会像Hibernate OGM那样抽象:NoSQL引擎有很大的不同。
从根本上讲,Hibernate OGM是一种减少进入NoSQL解决方案的障碍的工具。 与许多人一样,我们认为NoSQL工具和大数据将彻底改变我们在应用程序中所做的工作。 我们希望人们不必花费大量时间和金钱就可以尝试探索新的数据模式。
JAXenter: Hibernate OGM中正在使用哪些技术?
伊曼纽尔:那是项目的美之一。 与其从头开始编写JPA引擎,我们重用了大多数成熟的Hibernate Core引擎。 我们只需替换与数据存储交互的两个组件(分别为Persisters和Loader)。 老实说,我不相信Hibernate Core对此具有足够的灵活性,但是我错了,引擎非常适合。
在查询方面,Hibernate OGM使用Lucene和Hibernate Search来建立索引并使它们保持最新。 查询引擎将JP-QL查询转换为一个或几个全文查询。 这是我们的第一步,它将使我们能够进行带限制(where子句)和简单的*对一连接的JP-QL查询。 一旦稳定下来,我们将重用数据库联合引擎Teiid,该引擎可以查询多个数据源,就好像它们是一个一样,并计算联接(如果需要,可以进行聚合和联接工作)。 正如我们所说的,Teiid团队正在开发其查询引擎的嵌入式版本。
最后,我们最初的NoSQL引擎是Infinispan,它是JBoss Cache的发展。 如您所见,我们重用了许多成熟的项目,并在需要时在顶部添加了其他层。 这个想法是非常快速地获得非常丰富的功能集。
JAXenter:您对Hibernate OGM的未来版本有何计划?
Emmanuel:我们刚刚发布了Alpha 2,所以暂时不要将您的生产数据移动到Hibernate OGM!
尽管我们仍在探索存储数据的最佳方法(尤其是关联),但我们确实具有相当成熟的CRUD支持(创建读取更新删除)。 JP-QL目前正在努力支持简单查询,我们希望尽快将其发布。 一旦确定,我们将测试Hibernate OGM的性能和稳定性。 从那里,我们将为发布GA做好准备。 Teiid的集成将进一步支持更复杂的JP-QL查询。
与面向功能的路线图并行,我们正在探索各种NoSQL引擎。 我们确实支持Infinispan,但我们也在抽象层上进行了工作。 它已经相当先进,但是还需要进一步改进。 EhCache团队正在研究一个原型,这将帮助我们进一步完善合同。 我们也有社区提案,可用于MongoDB,CouchDB和Redis方言。 一旦我们对抽象合同感到满意,我们将向他们伸出援手。
Hibernate OGM仍然很年轻,并且处于每个项目都在塑造项目的状态。 这真是令人兴奋! 如果您有兴趣,请与我们联系,我们有很多事情要做!
翻译自: https://jaxenter.com/hibernate-ogm-lowering-the-barrier-of-entry-to-nosql-103491.html
ogm session