HBase表设计

HBase表设计,hbase,Hbase,我不熟悉HBase,最近我们计划使用HBase来存储和查询数据。但是当我尝试创建一些演示表时遇到了几个问题: 家庭有什么用?由于所有列都必须属于一个CF,并且wiki建议只定义CF,这会让我在定义这个时感到困惑吗 似乎我们只能通过行键(如RDBMS中的主键)来查询数据,但是如果我们不知道行键的值,我们如何通过其他参数进行查询呢 如果通过非行键列进行查询,会影响性能吗 谢谢 Ivan GengColumnFamily用于组织列(对它们进行分组)并增加一些灵活性,因为您可以随时在列族中添加新列,而不

我不熟悉HBase,最近我们计划使用HBase来存储和查询数据。但是当我尝试创建一些演示表时遇到了几个问题:

  • 家庭有什么用?由于所有列都必须属于一个CF,并且wiki建议只定义CF,这会让我在定义这个时感到困惑吗
  • 似乎我们只能通过行键(如RDBMS中的主键)来查询数据,但是如果我们不知道行键的值,我们如何通过其他参数进行查询呢
  • 如果通过非行键列进行查询,会影响性能吗
  • 谢谢
    Ivan Geng

    ColumnFamily用于组织列(对它们进行分组)并增加一些灵活性,因为您可以随时在列族中添加新列,而不会影响实际数据。HBase是面向NoSQL的,但我一直在使用Phoenix,HBase的SQL皮肤,以便对HBase数据应用SQL查询。使用Phoenix,您可以创建具有WHERE子句和性能非常好的SQL查询。请看一看。否则,您可以创建一个复合键来对数据进行排序,但这取决于您的数据以及您将如何处理它

    家庭有什么用?由于所有列都必须属于一个CF,并且wiki建议只定义CF,这会让我在定义这个时感到困惑吗

    ColumnFamily可用于组织数据。但不仅仅如此。实际上,所有列族成员都存储在文件系统中。由于调整和存储规范是在柱族级别完成的,因此建议所有柱族成员具有相同的一般访问模式和大小特征

    似乎我们只能通过行键(如RDBMS中的主键)来查询数据,但是如果我们不知道行键的值,我们如何通过其他参数进行查询呢

    取决于你的情况。有各种可用的过滤器。请参阅: 您可以将RowKey视为内置的索引过滤器。如果在任何其他列上应用筛选器,则该列不会被索引,因此其性能与基于RowKey的GET相差甚远

    如果通过非行键列进行查询,会影响性能吗


    如上所述,在其他列上使用筛选器进行查询效率要低得多。

    感谢Venkat,我将研究筛选器。HBase中的表格设计最佳实践有参考资料吗?在创建表时,我仍然以RDBMS的方式思考:(我认为这是最好的入门指南: