Java ORM for Hbase [已关闭]

2022-09-02 01:25:00

任何人都知道一个很好的Java ORM实现HBase。这个看起来对Ruby来说真的很好

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

但是找不到Java的一个。

谢谢。


答案 1

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

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

可执行 jar 位于:

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


答案 2

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

例如,一本书的作者数量众多,具体取决于您的访问模式、作者编辑、应用层缓存实现,您可能希望选择将整个作者保存在图书表中(即作者驻留在 2 个表、作者表和书籍表中)或仅保存作者 ID。此外,作者的集合可以作为XML / JSON或单个作者的单个单元格保存到一个单元格中。

有了这种理解,我得出结论,写一个完整的ORM,如Hibernate不仅会非常困难,而且实际上可能不会是决定性的。所以我采取了不同的方法,更像是iBatis对Hibernate的看法。

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

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

就是这样。如何使用它们,请点击此处。它基本上使用CommonReadDao,CommonWriteDao来读取和写入HBase的数据。公共读 dao 在查询上实现多线程行到对象的转换,多线程按 id 获取,按 id 获取,并具有其休眠条件,如 API,可通过 Scan 查询到 HBase(没有可用的聚合函数)。通用写入道通过一些附加功能实现通用编写相关代码,例如乐观/悲观锁定,单元格覆盖/合并检查实体(非)在保存,更新,删除时存在等。

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


推荐