Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Cassandra上手动索引有意义吗?_Cassandra_Cassandra 2.0 - Fatal编程技术网

在Cassandra上手动索引有意义吗?

在Cassandra上手动索引有意义吗?,cassandra,cassandra-2.0,Cassandra,Cassandra 2.0,这个简单的模式在Cassandra上下文中有意义吗?或者我可以使用唯一约束索引,而不是通过用户名和电子邮件的分区键手动索引?我知道为了保证Cassandra上的正常索引效率,consult必须包含分区键,因此如果我想在一个有数百万行的表上执行get-by,而不将分区键指定为索引列,那么它可能不会像应该的那样快,因此,通过创建新分区键来手动索引成为更好的选择。这个概念正确吗?手动索引的唯一问题是需要手动执行,如果删除用户上的一行,则需要在删除之前获取相应索引列的相应值,以便能够一起删除索引,并且可

这个简单的模式在Cassandra上下文中有意义吗?或者我可以使用唯一约束索引,而不是通过用户名和电子邮件的分区键手动索引?我知道为了保证Cassandra上的正常索引效率,consult必须包含分区键,因此如果我想在一个有数百万行的表上执行get-by,而不将分区键指定为索引列,那么它可能不会像应该的那样快,因此,通过创建新分区键来手动索引成为更好的选择。这个概念正确吗?手动索引的唯一问题是需要手动执行,如果删除用户上的一行,则需要在删除之前获取相应索引列的相应值,以便能够一起删除索引,并且可能还需要对其进行批处理。卡桑德拉,我弄错概念了吗

 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
 );

手动索引可能会带来开销,也就是说,在执行CRUD操作时,您需要维护索引和数据

因此,建议使用Cassandra的辅助索引支持

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