如何解决BigTable 中表格的最佳设计
我有一个工作负载,需要将一个表迁移到 BigTable,并提供以下信息:
- 社会安全号码 (SSN)
- 每个 SSN 有 600 个 Score 值。未来几年,Scote 的数量可能会增加。
我们有大约 2.4 亿的 SSN。
必须为查找 1 到 10 分数的查询准备该表,范围为 1,000 到数百万的 SSN。
哪种设计适合这种解决方案?:
选项 A:
- 仅使用 SSN 作为 RowKey
- 将每个分数创建为一列
示例:
行键列
123456789 S1:100 S2:200 S3:300 S4:400 ..... S600:600
234567890 S1:101 S2:201 S3:301 S4:401 ..... S600:601
选项 B:
- 使用 SSN 和 Score 作为 RowKey
- 作为一个专栏,我只有一个 Score 值
示例:
行键列
123456789#S1 得分:100
123456789#S2 得分:200
123456789#S3 得分:300
123456789#S4 分数:400
.....
123456789#S600 分数=600
234567890#S1 得分:101
234567890#S2 得分:201
234567890#S3 得分:301
234567890#S4 得分:401
.....
234567890#S600 得分:601
解决方法
根据我在关于 documentation 和 Columns 的最佳实践 Column Families 中所见,我理解您提供的第二种方法是最合适的,因为有避免在任何一行中使用太多列。
您也可以将第一种方法的列分组到列族中,因为建议将类似的列分组到列族中。
我发现遵循第二个选项,您也遵循了将列限定符视为数据的良好做法,这使我认为这总体上是最合适的决定。
您可以在所提供的文档中查看一些示例,以及有关在 Big Table 中构建表格的最佳做法的更多信息。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。