nosql 由客户端分离数据
nosql separate data by client
我必须使用 NoSql 基础(couchbase 或 cassandra)开发一个项目。
我想知道是否建议将每个客户的数据分区在一个桶中?
在我的例子中,不同客户端之间永远不会有请求。
数据可以完全分离。
对于couchbase,我看到为每个桶预留了一个内存容量。
对于cassandra,在另一个地方文件或超级列中必须在哪里进行分离。
谢谢
Where does the separation have to be done at another place document or super column for cassandra.
提示 #1,在使用 Cassandra 时,从您的词汇表中完全删除 单词 "super column"。
I would like to know if it is recommended to partition the data of each customer in a bucket?
这取决于。听起来您的查询主要基于客户 ID,因此将其作为分区键的 部分 是有意义的。但是,如果每个客户分区下面有数百万行 and/or 列,那将会变得非常大。
提示 #2,正确的 Cassandra 建模是根据您所需的查询进行的。因此,在没有真正看到您需要服务的查询类型的情况下,很难比这更具体。
如果您有与帐户和地址等相关的客户数据,那么使用仅 customer_id
的主键构建 customers
table 可能有意义。但是,如果您发现需要通过 email_address
查询您的客户(例如),那么您需要创建一个 customers_by_email
table,将您的数据复制到其中,然后创建一个支持那个的主键。
此外,如果您发现自己在客户 activity 上存储数据,您可能需要考虑 customer_activity
table,主键为 PRIMARY KEY ((customer_id,month),activity_time)
。这将同时使用 customer_id
和 month
作为分区键,存储由 activity_time
聚类的客户 activity。在这种情况下,如果我们不使用 month
作为附加分区键,每个 customer_id
分区将被不断写入,直到它变得难以写入或查询(未绑定的行增长)。
总结:
- 如果有人告诉你在 Cassandra 中使用超级列,打他们。
- 在设计 table 之前,您需要了解自己的查询。
- 是的,
customer_id
是保持数据独立并确保每个查询仅限于单个节点的好方法。
- 构建您的分区键以解决未绑定的行增长问题,从而避免将太多数据写入同一分区。
我必须使用 NoSql 基础(couchbase 或 cassandra)开发一个项目。 我想知道是否建议将每个客户的数据分区在一个桶中?
在我的例子中,不同客户端之间永远不会有请求。 数据可以完全分离。
对于couchbase,我看到为每个桶预留了一个内存容量。
对于cassandra,在另一个地方文件或超级列中必须在哪里进行分离。
谢谢
Where does the separation have to be done at another place document or super column for cassandra.
提示 #1,在使用 Cassandra 时,从您的词汇表中完全删除 单词 "super column"。
I would like to know if it is recommended to partition the data of each customer in a bucket?
这取决于。听起来您的查询主要基于客户 ID,因此将其作为分区键的 部分 是有意义的。但是,如果每个客户分区下面有数百万行 and/or 列,那将会变得非常大。
提示 #2,正确的 Cassandra 建模是根据您所需的查询进行的。因此,在没有真正看到您需要服务的查询类型的情况下,很难比这更具体。
如果您有与帐户和地址等相关的客户数据,那么使用仅 customer_id
的主键构建 customers
table 可能有意义。但是,如果您发现需要通过 email_address
查询您的客户(例如),那么您需要创建一个 customers_by_email
table,将您的数据复制到其中,然后创建一个支持那个的主键。
此外,如果您发现自己在客户 activity 上存储数据,您可能需要考虑 customer_activity
table,主键为 PRIMARY KEY ((customer_id,month),activity_time)
。这将同时使用 customer_id
和 month
作为分区键,存储由 activity_time
聚类的客户 activity。在这种情况下,如果我们不使用 month
作为附加分区键,每个 customer_id
分区将被不断写入,直到它变得难以写入或查询(未绑定的行增长)。
总结:
- 如果有人告诉你在 Cassandra 中使用超级列,打他们。
- 在设计 table 之前,您需要了解自己的查询。
- 是的,
customer_id
是保持数据独立并确保每个查询仅限于单个节点的好方法。 - 构建您的分区键以解决未绑定的行增长问题,从而避免将太多数据写入同一分区。