在HBase中设计行ID时,我看到了两条相互矛盾的建议(具体而言,我认为它也适用于Cassandra。)
我猜哪个是最优的可以取决于你的用例,但有没有人对这两种策略有任何经验?
答案 0 :(得分:2)
在HBase中,通过划分按字典顺序排序的密钥空间将表划分为区域。表的每个区域属于单个区域服务器,因此所有读取和写入都由该服务器处理(这允许强大的一致性保证)。这意味着如果您的所有读取或写入都集中在一小部分键空间上,那么您将只能扩展到单个区域服务器可以处理的内容。例如,如果您的数据是时间序列并且按时间戳键入,那么所有写入都将转到表中的最后一个区域,并且您将被限制为以单个服务器可以处理的速率写入。
另一方面,如果您可以选择您的密钥,以便任何给定的查询只需要扫描一小部分行,但整个读写集分布在您的密钥空间,那么总负载将是分布式和扩展性很好,但您仍然可以享受查询的地点优势。