Hbase架构设计建议

时间:2012-02-14 05:05:13

标签: nosql schema hbase

来自RDBMS背景,我需要很少的帮助/建议来为以下用例设计Hbase架构。

这是一个使用hadoop生成应用程序的报告。现在,我们需要根据他的电子邮件ID跟踪特定用户的所有先前报告生成历史记录。因此,需要保留的数据包括电子邮件ID,报告名称,开始日期,结束日期,状态。我打算将电子邮件ID保留为行键,将其他实体保留为列, emailId(行键) - (列)appName:reportName,appName:startDate,appName:endDate,appName:status

但问题是,同一个用户可以针对不同的日期范围运行相同的报告。因此它将覆盖appName:reportName和appName:status列。由于我是NoSQL世界的新手,我不知道如何解决这个问题。 有人可以建议我为这个要求设计架构的理想方法吗?

非常感谢任何帮助。

由于

1 个答案:

答案 0 :(得分:1)

根据您的预期查询模式,以下是我的建议:

RowKey                                 | Column Family (appName)                   |
userid@domain.com-YYYY-MM-DD HH:MM:SSS | reportName | status | startDate | endDate |

这种设计为您提供了一些优势。首先,您可以在特定日期范围内快速查询(使用扫描)特定用户的所有行。其次,通过将rowkey中的时间戳与用户的ID前一个来避免写热点。

每次用户触发生成报告时,您都可以在此模式中写入一行,并且您无需担心覆盖列(除非用户在相同的1/10秒内生成两个报告)。