我想在 cassandra 中存储类似数组的对象,但我还需要使用 cql 访问每个元素,因此我需要构建索引。不幸的是,数组的大小是动态的(但不是维数,它们是预定义的)。存储数组的最合适方法是什么:
matrix[x][y][z]
因此,如果它是一个一维 ( vector[n]
) 数组,那将非常简单。我想超级列是合适的,比如
{key=1000 ,
{ 'matrix[]' : {
key=0, {value:10),
key=1, {value:33),
...
key=n, {value:x)
}
}
}`
多维数组 ( matrix[x][y][z]
) 有点复杂,我会将它们存储为:
{key=1000,
{ 'matrix[ ][ ][ ]' :
{
key=0, {x=0, y=0, z=0, value:10),
key=1, {x=0, y=0, z=1, value:33),
...
key=whatever, {x=m, y=n, z=o, value:10),
}
}
}
但在这两种情况下,我都无法弄清楚如何定义 column_validation_classes (我正在使用 pycassa)......
我还尝试使用复合比较器,并将所有内容放在标准列中,例如:
一维:
{key=1000,
{
('matrix[ ]', 0) : 10,
('matrix[ ]', 1) : 33,
...
('matrix[ ]', n) : x
}
}
或多个维度:
{key=1000,
{
('matrix[ ][ ][ ]', 0,0,0) : 10,
('matrix[ ][ ][ ]', 0,0,1) : 33,
...
('matrix[ ][ ][ ]', m,n,o) : 10
}
}
但是对于这种情况,如果我想添加带有其他信息的附加列,我不知道如何适当地定义比较器:
{key=1000,
{
('matrix[ ][ ][ ]', 0,0,0) : 10,
...
('matrix[ ][ ][ ]', m,n,o) : 10,
'whatever' : 'who cares ...',
...
}
}
此外,我无法弄清楚如何为此构建索引以及如何为复合比较器制作选择语句。
感谢您对我的问题提出任何建议、想法或解决方案;)
干杯