我仍在尝试围绕 cassandra 中复合键的整个概念展开思考。我从https://github.com/thobbs/phpcassa/blob/master/examples/composites.php获取了这段代码,我很难理解这意味着什么(请参阅下面的问题/评论):
$cf->insert_format = ColumnFamily::ARRAY_FORMAT;
$cf->return_format = ColumnFamily::ARRAY_FORMAT;
$key1 = array("key", 1); // Which one of these is a column name?
$key2 = array("key", 2);
$columns = array(
array(array(0, "a"), "val0a"), //Which is value, and which is column name?
array(array(1, "a"), "val1a"),
array(array(1, "b"), "val1b"),
array(array(1, "c"), "val1c"),
array(array(2, "a"), "val2a"),
array(array(3, "a"), "val3a")
);
/**
* What type of queries in (CQL if possible) can I achieve with this?
/
我想了解的是:
- 在
array("key", 1);
arekey
和1
组成这个键的两列中,或者1
是一个值key
? - 其中哪一个是列名,哪一个是 value
array(array(0, "a"), "val0a")
? - 以表格形式(或尽可能接近),我如何将这些数据可视化为存储在数据库中。我知道它不是以表格形式存储的,只是为了帮助我理解。
我是 NoSQL 技术的新手,这让我大吃一惊。
谢谢您的帮助 :-)
编辑
还有几个问题:
- 如果您有一行具有复合主键,这是否意味着该行中的所有列都必须是复合的?
我想要一个具有以下结构的列族:
CREATE COLUMN FAMILY users ( userid int, username varchar, firstname varchar, lastname varchar, PRIMARY KEY (userid,username) ) // How can I represent this structure with Phpcassa? // I tried to make every column `array("firstname" => "my name")`, but it didn't work
- 我是否允许我的组合中的一个键为空(在上面的示例中
username = null
)并且可能稍后添加一个值?