0

我总是收到来自测试人员的错误报告,他们抱怨我的页面从 cassandra 加载数据的速度不够快。数据会加载时间戳介于当前日期和之前 30 天之间的任何内容,以及用户输入的任何其他过滤条件,包括每页要加载多少数据点(我实现了一些代码来检索数据) page" 一次从 cassandra 加载,以避免一次加载数十万个数据点的内存问题)。

在某些日子,每页加载最大数量的时间不到一秒,而在其他日子,则需要 15 分钟。在任何一天,加载所需的时间长度都是一致的,但第二天加载时间可能会与前一天相比发生巨大变化。

这可能是什么原因?我希望能够给我的主管和测试人员一个明确的答案,这样我就可以停止发回没有修复或解释的错误报告。

我用来从 Cassandra 检索数据的 Java API 是 Hector,当前版本为 1.0-5

如果您需要更多信息,我会尽力提供。感谢任何可以提供帮助的人。

4

1 回答 1

2

Cassandra 中二级索引的性能在很大程度上取决于索引列具有的不同值的数量。

就像这个文档中所说的那样:http ://www.datastax.com/docs/1.0/ddl/indexes 枚举将是二级索引的良好候选者。但是随着数据的增长,通过任意辅助唯一键搜索行会变得越来越慢。(简称国家代码:是;电子邮件:否)

如果您有很多与其他几行相同的索引列(如电子邮件、街道地址、电话号码等),我建议创建另一行,将这些索引作为键(相同的列族或不同的列族) ) 并在那里复制行内容。非规范化是您在 cassandra 中应该考虑的事情。

我还建议使用 TTL 或通过在您这边过滤而不是在查询中添加额外条件来消除早于某个时间戳的所有内容。

于 2013-04-08T15:57:22.833 回答