【问题标题】:Does manual indexes makes sense on Cassandra?手动索引在 Cassandra 上有意义吗?
【发布时间】:2014-05-30 21:18:55
【问题描述】:

这个简单的模式在 Cassandra 上下文中是否有意义?或者我可以只使用唯一约束索引而不是通过用户名和电子邮件的分区键手动索引?我知道为了保证 Cassandra 上的正常索引效率,咨询必须包括分区键,所以如果我想在具有数百万行的表上执行“通过”而不只规定索引列的分区键,它可能不是尽可能快,因此通过创建新分区键的手动索引成为更好的选择。这个概念正确吗?手动索引的唯一问题是您需要手动执行此操作,如果您删除“用户”上的一行,则需要在删除之前获取相应索引列的相应值,以便能够一起删除索引,并且可能还需要批量处理。我误解了 Cassandra 吗?

 CREATE TABLE users (
  id uuid PRIMARY KEY,
  username text,
  email text,
  password_hash text,
  password_salt text,
  display_name text,
  timezone int,
  created_at timestamp,
  last_login_at timestamp
 );

 CREATE TABLE usernames (
  username text PRIMARY KEY,
  user_id uuid
 );

 CREATE TABLE user_emails (
  email text PRIMARY KEY,
  user_id uuid
 );

【问题讨论】:

    标签: cassandra cassandra-2.0


    【解决方案1】:

    手动索引可能会产生开销,即您需要在执行 CRUD 操作时维护索引和数据。

    因此建议使用 Cassandra 的二级索引支持。

    如果您想查询用户名和电子邮件列,那么您应该在这些列上创建二级索引。二级索引是 Cassandra 内置的索引机制,用于索引非关键列。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-21
      • 1970-01-01
      • 1970-01-01
      • 2010-10-27
      • 2015-05-14
      • 1970-01-01
      • 1970-01-01
      • 2011-04-20
      相关资源
      最近更新 更多