建模用于在Cassandra中按名称检索用户的数据

时间:2017-05-04 04:45:41

标签: database-design cassandra

我正在使用Cassandra作为主数据库的项目,“users”表如下所示:

CREATE TABLE users (
    id uuid PRIMARY KEY,
    name text,
    address text,
    email text,
    password text,
    website text
)

我的应用程序需要执行查询列表所有用户按名称和分页顺序排序,我正在努力设计表以满足此要求。

那么为这种情况设计“users_order_by_name”的好方法是什么?

感谢。

更新: 我的问题是关于设计表来获取排序查询,分页部分不是我关注的问题。

我理解群集密钥可用于在分区内获取排序结果。但是如果我使用“name”作为聚类键。我应该使用什么作为分区键?

2 个答案:

答案 0 :(得分:2)

分页是在驱动程序级别实现的,大多数驱动程序都支持它。

关于排序 - 在“表”上实现它有一个问题。您可以使用群集密钥,因此所有数据都将在分区级别(在您的示例中为id)中按此键排序。

所以你必须以某种方式对分区进行排序,例如制作名称分区键的第一个字母,或者在客户端进行所有这些排序。

答案 1 :(得分:1)

  1. 您使用什么编程语言?您可以依赖内置驱动程序分页(例如,请参阅here。)
  2. 您可以使用磁盘排序provided by clustering key,另请参阅here
    因此,您只需在创建表DDL中添加WITH CLUSTERING ORDER BY (name) 如果你想使用分区键,那么也应该考虑它。