Cassandra vs Hbase for Conversation消息

时间:2016-06-22 10:23:48

标签: java email cassandra hbase

在我的应用程序中,我需要在任何一个大数据模型中保存消息数据。我需要在两者之间做出选择。

我将在下面解释我的用例。

在我的应用程序中,每个用户都会收到电子邮件。如果相同的电子邮件已被回复/转发,我们将形成这组回复/转发的电子邮件作为对话。

我打算在cassandra或Hbase中保存电子邮件的内容,如下所示。

让我们说用户为U1,消息为M1,对话为C1。

以下是平面行模型:

row key ->  U1
Column family(Composite key) -> C1#M1 or C1#M2 ...   (Conversation-ID#Message-ID) #->Separator
Column value  -> Content of M1 or Content of M2 .....

下面是Tall-Narrow行模型

row key ->  U1#C1  (User-ID#Conversation-ID) #->Separator
    Column family(Composite key) -> M1 or M2 or M3 ...   
    Column value  -> Content of M1 or Content of M2 .....

哪种数据模型适合用例?

通过数据库执行以下类型的查询。 1.获取用户U1的会话的所有邮件的内容-Id C1。 (可能是1到10个邮件或11到20个邮件的范围) 要么 2.获取用户U1的会话ID C2中的特定邮件M3的内容。

邮件内容从10kb到1MB不等。很少会达到10MB。(0.0001%)大部分都在Kbs。

在这个系统中,读取,插入/更新/删除操作将是80:20。 (80%读操作和19%插入操作。最大1%删除或更新内容)删除操作将删除整个会话。更新将更新特定的邮件内容

请提供适合上述要求的解决方案,并提供有用的解释。

0 个答案:

没有答案