cassandra 获取所有包含某物的地方
cassandra get all where sth contains sth
我目前正在编写 spring 应用程序。我正在寻找一种在 cassandra 中执行请求的方法,我可以通过它获取所有条目,例如:
我有以下 table:
username | entityid
----------+--------------------------------------
pascalku | 55f23680-0201-11e8-9971-4516c86aec2e
当我现在搜索 Pascal 时,我想得到这个结果。
我测试了很多 cql 命令行,但没有任何效果。
希望有人知道或知道如何做到这一点。感谢阅读!
编辑:
我的resolver_names:
CREATE TABLE resolver_names (
username text PRIMARY KEY,
entityid uuid
) WITH bloom_filter_fp_chance = 0.01
AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'}
AND comment = ''
AND compaction = {'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy', 'max_threshold': '32', 'min_threshold': '4'}
AND compression = {'chunk_length_in_kb': '64', 'class': 'org.apache.cassandra.io.compress.LZ4Compressor'}
AND crc_check_chance = 1.0
AND dclocal_read_repair_chance = 0.1
AND default_time_to_live = 0
AND gc_grace_seconds = 864000
AND max_index_interval = 2048
AND memtable_flush_period_in_ms = 0
AND min_index_interval = 128
AND read_repair_chance = 0.0
AND speculative_retry = '99PERCENTILE';
由于username
是主键,在cassandra中无法用LIKE
操作查询。请注意,cassandra 是 NoSQL 数据库,它不像关系数据库,在关系数据库中你可以 运行 像 select * from table where comlum1 like '%pascal%'
这样的查询。我建议您学习免费的数据建模课程 here 以便更好地理解。简而言之,如果您想 运行 在您的应用程序中使用 cassandra 进行此类查询,那么在建模 data/table 时可能会出现问题。
如果它不是主键而只是普通列,LIKE 查询可以使用 cassandra 3.4 及更高版本中的 SSTable 附加二级索引 (SASI) 来实现。详情请参考this
有一些框架可以添加到 cassandra 之上以实现相同的目的(例如 Spark SQL 等)。但是,性能可能不如内置查询,不建议这样做。
我目前正在编写 spring 应用程序。我正在寻找一种在 cassandra 中执行请求的方法,我可以通过它获取所有条目,例如:
我有以下 table:
username | entityid
----------+--------------------------------------
pascalku | 55f23680-0201-11e8-9971-4516c86aec2e
当我现在搜索 Pascal 时,我想得到这个结果。
我测试了很多 cql 命令行,但没有任何效果。
希望有人知道或知道如何做到这一点。感谢阅读!
编辑:
我的resolver_names:
CREATE TABLE resolver_names (
username text PRIMARY KEY,
entityid uuid
) WITH bloom_filter_fp_chance = 0.01
AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'}
AND comment = ''
AND compaction = {'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy', 'max_threshold': '32', 'min_threshold': '4'}
AND compression = {'chunk_length_in_kb': '64', 'class': 'org.apache.cassandra.io.compress.LZ4Compressor'}
AND crc_check_chance = 1.0
AND dclocal_read_repair_chance = 0.1
AND default_time_to_live = 0
AND gc_grace_seconds = 864000
AND max_index_interval = 2048
AND memtable_flush_period_in_ms = 0
AND min_index_interval = 128
AND read_repair_chance = 0.0
AND speculative_retry = '99PERCENTILE';
由于username
是主键,在cassandra中无法用LIKE
操作查询。请注意,cassandra 是 NoSQL 数据库,它不像关系数据库,在关系数据库中你可以 运行 像 select * from table where comlum1 like '%pascal%'
这样的查询。我建议您学习免费的数据建模课程 here 以便更好地理解。简而言之,如果您想 运行 在您的应用程序中使用 cassandra 进行此类查询,那么在建模 data/table 时可能会出现问题。
如果它不是主键而只是普通列,LIKE 查询可以使用 cassandra 3.4 及更高版本中的 SSTable 附加二级索引 (SASI) 来实现。详情请参考this
有一些框架可以添加到 cassandra 之上以实现相同的目的(例如 Spark SQL 等)。但是,性能可能不如内置查询,不建议这样做。