如何解决Cassandra:基于集合中的一个特定值进行过滤
我在Cassandra中有一个数据表,其中一列是:
customer_favourites
,每个值都是已设置的类型,并且包含每个客户喜欢的食物的详细信息。例如,一个客户可能有{'Mexican','Italian','Indian'}
,而另一个客户可能有{'Mexican','French'}
,而另一个客户可能有{'Mexican'}
。
我有以下代码:
SELECT customer_id,customer_fname,customer_lname FROM customers WHERE customer_favourites CONTAINS ‘Mexican’ ALLOW FILTERING;
我希望它过滤那些只喜欢墨西哥食物的顾客,但是现在它返回每个将墨西哥作为他们最喜欢食物之一的顾客的详细信息。如何过滤查询以返回只喜欢墨西哥菜的顾客?
解决方法
天真的方法:您需要使用Application has thrown an uncaught exception and is terminated:
Error: Cannot find module 'tslib'
Require stack:
- D:\home\site\wwwroot\main.js
- D:\Program Files (x86)\iisnode\interceptor.js
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:794:15)
at Function.Module._load (internal/modules/cjs/loader.js:687:27)
at Module.require (internal/modules/cjs/loader.js:849:19)
at require (internal/modules/cjs/helpers.js:74:18)
at Object.<anonymous> (D:\home\site\wwwroot\main.js:91:18)
at __webpack_require__ (D:\home\site\wwwroot\main.js:20:30)
at Module.<anonymous> (D:\home\site\wwwroot\main.js:225:63)
at __webpack_require__ (D:\home\site\wwwroot\main.js:20:30)
at Object.<anonymous> (D:\home\site\wwwroot\main.js:216:18)
at __webpack_require__ (D:\home\site\wwwroot\main.js:20:30)
Tue Oct 06 2020 08:16:28 GMT+0000 (Greenwich Mean Time): Application has thrown an uncaught exception and is terminated:
Error: Cannot find module 'tslib'
Require stack:
- D:\home\site\wwwroot\main.js
- D:\Program Files (x86)\iisnode\interceptor.js
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:794:15)
at Function.Module._load (internal/modules/cjs/loader.js:687:27)
at Module.require (internal/modules/cjs/loader.js:849:19)
at require (internal/modules/cjs/helpers.js:74:18)
at Object.<anonymous> (D:\home\site\wwwroot\main.js:91:18)
at __webpack_require__ (D:\home\site\wwwroot\main.js:20:30)
at Module.<anonymous> (D:\home\site\wwwroot\main.js:225:63)
at __webpack_require__ (D:\home\site\wwwroot\main.js:20:30)
at Object.<anonymous> (D:\home\site\wwwroot\main.js:216:18)
at __webpack_require__ (D:\home\site\wwwroot\main.js:20:30)
...
更好的方法-在相应的字段using the FULL
keyword上创建二级索引,然后使用customer_favourites = {'Mexican'}
。
最佳方法-创建一个以customer_favourites = {'Mexican'}
作为分区键的单独表,并在其中搜索用户(列应为customer_favourites
)。这种方法的问题之一是数据偏斜,因为喜欢的食物数量相对较少并且非常不平衡。
替代方法-如果需要非常频繁地通过非分区键进行搜索,请重新考虑使用Cassandra。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。