云跨度 - 基于字符串键的碎片



我们的主要目标是读取性能,因为我们通常要进行80-90%的读写,我正在尝试选择最佳的主要键来实现此目标。

我们的大多数查询都是基于客户,例如获取客户X提供的所有产品。

我的第一个想法是创建主要键,如下:

CREATE TABLE Product (
    ProductId INT64 NOT NULL,
    CustomerCode STRING(3) NOT NULL,
    ...
) PRIMARY KEY (CustomerCode, ProductId);

我对此设计的问题是:

  • 基于字符串值将如何基于字符串值?

  • 这种方法会产生太多的碎片吗?我们有大约100个关键帐户,我们计划使用〜8个节点

SPANNER根据主键对行范围进行自动加载碎片。

"这种方法会产生太多的碎片吗?"

与许多其他分布式数据库不同,这不是您需要担心的。由于Cloud Spanner进行基于动态负载的碎片,因此它将根据您在系统上的负载来自动调整碎片的数量。获得更多负载的行范围将分为更多的碎片和行范围,而较小的负载将自动合并为更少的碎片。

一个很好的阅读资源是为云扳手优化架构设计。

最新更新