过去六个月我一直在使用HBase,我开始了解亚马逊的DynamoDB。维护明智的发电机数据库看起来更容易处理,因为它由亚马逊照顾。但是,是否从hbase切换到dynamo db对我来说是一个问题。
除了维护群集之外,我找不到令人满意的理由从hbase切换到dynamo db。
有人可以分享一下这个想法。
答案 0 :(得分:16)
您必须从根本上寻找您的要求,DynamoDB提供了极佳的可扩展性和性能,而且维护工作量极少且具有极具吸引力的财务成本。但是,Apache HBase在您可以存储的内容(大小和数据类型方面)方面要灵活得多。
另一个非常重要的评估点是哪种数据模型,Column Wide或Key-Value更适合您的用例。
Apache HBase为您提供了非常灵活的行键数据类型的选项,而DynamoDB仅允许主键属性的标量类型。另一方面,DynamoDB提供了非常简单的二级索引的创建和维护,您必须在Apache HBase中手动完成。
以下链接中的更多信息: http://d0.awsstatic.com/whitepapers/AWS_Comparing_the_Use_of_DynamoDB_and_HBase_for_NoSQL.pdf
以下是要点摘要:
总之,Amazon DynamoDB和Apache HBase都定义了数据模型 允许有效存储数据以优化查询性能。 Amazon DynamoDB对其项目大小施加限制以允许 高效的加工和降低成本。
Apache HBase使用列族的概念来提供数据 更高效的读取操作的位置。
Amazon DynamoDB支持标量和多值集 适应各种非结构化数据集。同样,Apache HBase将其键/值对存储为任意字节数组 它可以灵活地存储任何数据类型。
Amazon DynamoDB自动支持内置二级索引 更新并同步所有索引及其父表。同 Apache HBase,您可以实现和管理自定义二级索引 自己。
从数据模型的角度来看,您可以选择Amazon DynamoDB 项目规模相对较小。虽然Amazon DynamoDB提供了一个 Apache HBase是克服行大小限制的选项数量 能够更好地处理大型复杂有效载荷 限制。
吞吐量模型
尽管在创建表时指定了读写要求 时间,Amazon DynamoDB允许您增加或减少配置 吞吐量以适应负载而无需停机。
在Apache HBase中,群集中的节点数可以由 读取和/或写入所需的吞吐量。
一致性模型
Amazon DynamoDB允许您指定所需的一致性 应用程序中每个读取请求的特征。您可以 指定读取最终是一致的还是强烈的 是一致的。
最终一致性选项是Amazon DynamoDB中的默认选项 最大化读取吞吐量。但是,最终一致的阅读 可能并不总是反映最近完成的写作的结果。 所有数据副本的一致性通常会在一秒钟内完成。
Apache HBase的读写非常一致。这意味着 对Apache HBase中单行的所有读写都是原子的。每 并发读写者可以对国家做出安全的假设 一排Apache HBase中的多版本控制和时间戳 有助于其强烈一致的模型。
交易模式
Amazon DynamoDB和Apache HBase都不支持多项/跨行 或由于性能考虑而产生的交叉交易。然而, 两个数据库都提供读写操作的批处理操作 多个表中的多个项目/行,没有事务 保证。
表格操作
两个数据库之间的一个关键区别是灵活 Amazon DynamoDB的预配置吞吐量模型。拨打电话的能力 在您需要时提高容量,并在完成后将其重新拨回 对于处理具有不可预测峰值的变量工作负载非常有用。
对于需要高更新率才能执行数据聚合的工作负载 或维护计数器,Apache HBase是一个不错的选择。这是因为 Apache HBase支持多版本并发控制机制, 这有助于其强大的一致性读写。亚马逊 DynamoDB使您可以灵活地指定是否需要 读取请求最终一致或强烈一致 取决于您的具体工作量。在一秒钟内达成。
来源: http://d0.awsstatic.com/whitepapers/AWS_Comparing_the_Use_of_DynamoDB_and_HBase_for_NoSQL.pdf