我正在努力学习卡桑德拉。我不清楚的一件事是如何让卡桑德拉分发各种表格。即说我有时间序列数据进入表t1,t2,t3
T1负载很重(对于行数,比率为2000:2:4)。 我希望给定日期的T1数据与T2或T3不在同一台机器上;所以我的查询是平均分配的,即不要在一台机器上加载过多的负载。
此外,随着数据变得越来越老,它的查询次数越来越少,我该如何考虑这一因素。
问候
答案 0 :(得分:1)
Cassandra是自动分发的,您无法直接控制数据的分发方式。在大多数情况下,默认情况下它会在行键上使用md5,具体取决于选择使用哪些节点(计算机)来保存数据。
您所谈论的更多是规划标准SQL数据库。但是,如果生成的大量统计数据仅供某些后端进程和用户使用,则可以使用2或3个节点的单独群集。这样,您的其他表格不会受到这些统计信息的影响。
然而,Cassandra的真正力量将与一个大型集群一起使用。如果它变慢,则向其添加节点并进行必要的修复以正确地传播数据。那就是......差不多。
至于表的使用方式,您可以使用表中定义的所有参数来调整其设置。如果您主要对表进行写操作,那么您可以调整参数以获得更快的写入和更慢的读取。另一种方式也是可用的:一次写入,多次读取。还有许多写入和许多读取。要调整这些设置,在大多数情况下,您需要运行软件并收集各种统计信息并随着时间的推移进行更改。
更新
实际上有一个解决方案,想一想,只是......我从不使用那种模式,所以我没有想到它。
使用支持排序行的群集时,可以使用特定的行名称,然后数据将转到特定节点。同样,你不能直接控制在哪里,但如果你真的想这样做,那可能就是你正在寻找的解决方案。
在这种情况下,行名称将以一个数字开头,例如T1数据为0x0001,T2和T3为0x0100和0x0200。由于您不知道数据的真正位置以及Cassandra如何决定使用它,因此在此处获得正确的结果相当复杂。如果您更改了群集(即添加节点),那么您对数据去向的所有假设都可以很好地进入厕所! (并且没有提到升级到Cassandra的新版本......)