我正忙着在cassandra中存储数据,而我发现CQL集合存在严重的性能问题。我从这个架构开始:
CREATE TABLE TEST (
date DATE,
tranche TEXT,
id INT,
properties MAP<TEXT,FLOAT>,
PRIMARY KEY ((date,tranche), id)
)
如果我对此分区中的所有数据运行查询
SELECT * FROM TEST where date = "2016-08-26" and tranche = "third"
跟踪报告加载15K行需要大约1.3秒。地图中有大约85个条目。 python的挂钟时间约为5秒。加载一个'分区'
似乎很慢所以我尝试了这个模式,并使用消息包将整个地图存储在一个单元格中
CREATE TABLE TEST (
date DATE,
tranche TEXT,
id INT,
properties blob,
PRIMARY KEY ((date,tranche), id)
)
现在相同的查询需要大约60毫秒(通过跟踪报告)和大约500毫秒的挂钟时间(再次使用python)
我知道这与MAP版本有关,但这似乎意外地降低了性能。
在测试时我注意到的一个奇怪的是,在两种情况下,跟踪报告它返回了15K单元(对应于行数)。我希望在第二个模式中有这个,但我的理解是地图中的每个元素都存储在当前版本的cassandra中它自己的单元格中,所以有点惊讶于此。
我正在使用版本3.7的cassandra和datastax python驱动程序。任何人都能了解这里发生的事情吗?