2

我最近开始熟悉 NoSQL (HBase)。我绝对是菜鸟。

我正在调查可以在 HBase 上使用的 ORM 和高级客户端,并且遇到了一些。

一些像 Kundera 这样的 ORM 库正在提供类似 SQL 的数据查询功能。我发现这有点违反直觉。

任何人都可以帮助我理解为什么我们会再次需要 SQL 之类的查询,如果整个目标是远离它?

也有人可以评论您对 HBase 的 ORM 的体验吗?我从http://wiki.apache.org/hadoop/SupportingProjects查看了其中的一些,然后开始查看 Kundera。

另一个相关问题 - 使用昆德拉运行地图的数据查询是否会在内部减少作业?

4

2 回答 2

4

kundera 或 Spring 数据可能会在 NoSQL 数据库上提供用户友好的 ORM 层,但底层实体模型仍然必须是 NoSQL 友好的。这意味着 NoSQL 用户不应盲目遵循 RDBMS 建模策略,而应以这样的方式设计 ORM 实体,以便可以使用所有 NoSQL 功能。作为一个经验法则,kundera ORM 实体应该使用查询优先策略设计,其中首先需要定义查询以便创建主键并确保尽可能少地使用关系模型。应避免查询随机列和完全扫描,因此可能必须跨实体复制数据以减少多个实体查找。此外,还需要计划交易管理。仅供参考,kundera 不支持事务(除了 Hbase/Cassandra 支持的单行 TX)。

于 2012-02-22T14:46:23.390 回答
3

使用昆德拉的原因:

1) 如果在 HBase 上寻找类似 SQL 的支持。由于它建立在 HBase 原生 API 之上,因此它只是将这些 SQL 查询转换为相应的 GET 或 PUT 方法调用。2) 目前仅支持 HBase-0.20.6。Kundera-2.0.6 将支持 HBase 0-90.x 版本。3) Kundera 没有做一些开箱即用的事情来提供 map reduce over SQL 之类的查询。然而,Kundera-2.0.6 将通过仅启用对 Hive 本机查询的支持来提供对此类事物的支持!

它完全符合 JPA,因此无需学习新知识。它只是以极少的努力在开发人员级别隐藏了复杂性。

类似 SQL 的查询是为了便于开发、快速开发、不易出错和可重用性!

-维维克

于 2012-02-22T07:05:49.540 回答