【问题标题】:Java ORM for Hbase [closed]用于 Hbase 的 Java ORM [关闭]
【发布时间】:2011-03-16 11:34:41
【问题描述】:

任何人都知道 HBase 的良好 Java ORM 实现。这个对 Ruby 来说真的很不错

http://www.stanford.edu/~sqs/rhino/doc/

但找不到适用于 Java 的。

谢谢。

【问题讨论】:

  • 为什么这个问题被关闭了!!!!!!?这是一个非常好的问题,有 3390 次浏览量! SOF 版主是做什么的?
  • 这是一个很重要的问题,为什么认为它没有建设性?
  • 这仍然是一个非常相关的问题。大多数答案都指向过时或不存在的项目!使用以下之一:[1] Apache Phoenix [2] github.com/flipkart-incubator/hbase-orm(披露:我是这个项目的作者)

标签: java orm hbase


【解决方案1】:

pigiparhely,我一个都没用过。 IMO HBase 是快速键/值存储引擎,但如果您需要另一层抽象,您应该检查一下。

【讨论】:

  • 谢谢。 parhely 似乎没有文档,所以我选择先使用 pigi。
【解决方案2】:

在我看来,HBase 的优势在于将动态列保留在静态列族中。根据我使用 HBase 开发应用程序的经验,我发现确定单元格限定符和值并不像 SQL 那样容易。

例如,一本书有许多作者,根据您的访问模式、作者编辑、应用层缓存实现,您可能希望选择将整个作者保存在书籍表中(即作者位于 2 个表中,作者表和书桌)或只是作者ID。此外,作者的集合可以作为 XML/JSON 保存到一个单元格中,也可以保存为单个作者的单个单元格。

基于这种理解,我得出结论,编写一个成熟的 ORM,例如 Hibernate,不仅非常困难,而且实际上可能还没有定论。所以我采取了不同的方法,更像是 iBatis 之于 Hibernate。

让我试着解释一下它是如何工作的。为此,我将使用来自herehere 的源代码。

  1. 首要任务是实现 ObjectRowConverter 接口,在本例中为 SessionDataObjectConverter。抽象类封装了从 HBase 社区讨论和学习的基本最佳实践。该扩展基本上让您可以 100% 控制如何将对象转换为 HBase 行,反之亦然。 API 的唯一限制是您的域对象必须实现接口 PersistentDTO,该接口在内部用于创建 Put、Delete、对 id 对象执行 byte[],反之亦然。
  2. 下一个任务是像在 HBaseImplModule 中那样连接依赖项。如果您有兴趣,请告诉我,我将完成依赖注入。

就是这样。如何使用它们是可用的here。它基本上使用 CommonReadDao、CommonWriteDao 来读写 HBase 的数据。常见的 read dao 在查询中实现多线程的行到对象的转换,多线程的通过 ids 获取,通过 id 获取,并且有它的类似 Hibernate Criteria 的 API 来通过 Scan 查询到 HBase(没有可用的聚合函数)。 Common write dao 实现了与一些附加功能相关的通用写相关代码,例如乐观/悲观锁定、单元格覆盖/合并检查实体(不)存在时保存、更新、删除等。

这个 ORM 是为我们的内部目的而开发的,我已经到了我的脖子上,因此还不能做一些文档。但如果您有兴趣,请告诉我,我花时间优先记录文档。

【讨论】:

    【解决方案3】:

    datanucleus 怎么样:您可以使用 JPA 或 JDO 作为 API,使用 hbase 作为后端存储:http://www.datanucleus.org/plugins/store.hbase.html

    【讨论】:

      【解决方案4】:

      我们正在使用 HBase ORM - Surus https://github.com/mushkevych/surus/wiki

      可能值得一提

      • 我们在 Hadoop map/reduce 中大量使用它
      • 它有一个额外的模块,允许您从 JSON 流中抽取 HBase 数据 (在我们的例子中,它来自 Python 代码)

      【讨论】:

        【解决方案5】:

        最近发布了 kundera-2.0.4 的新版本,它是基于 Hbase 的 ORM。它提供了大量其他非常有用的东西,例如索引、跨数据存储持久性等。

        我建议试一试 https://github.com/impetus-opensource/Kundera

        可执行 jar 位于:

        https://github.com/impetus-opensource/Kundera

        【讨论】:

          【解决方案6】:

          Hibernate OGM 对于非 SQL 数据库来说是一个很好的解决方案。试试看。

          http://www.hibernate.org/subprojects/ogm.html

          【讨论】:

          • 看起来不错,但似乎不支持 HBase。
          【解决方案7】:

          你可以试试这个:http://code.google.com/p/hbase-ormlite/。这是 Java 中 HBase 的一种形式。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2011-03-27
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-10-01
            • 1970-01-01
            相关资源
            最近更新 更多