我仍然試圖圍繞cassandra中的組合鍵的整個概念。我從https://github.com/thobbs/phpcassa/blob/master/examples/composites.php拿起這一段代碼,我努力理解這意味着什麼(請在下面看到的問題/註釋中):Phpcassa - 我很努力去理解這段代碼
$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);
分別是key
和1
組成這個鍵的兩列,或者1
的值是key
? - 哪一個是列名,哪個是值
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
),並可能增加值後來?
謝謝DNA。這真的有幫助,但只有幾個問題,請參閱上面我的問題編輯。 – Sthe
我已經更新了我的答案。如果有幫助,請考慮接受我的答案。 – DNA
爲什麼我認爲複合鍵的唯一原因,是因爲當我登錄用戶,我無法選擇使用'username'。我得到一個錯誤,因爲'用戶名'不是一個鍵,所以我不能在'WHERE'子句中使用它。而且我不能在這個階段選擇使用userid作爲條件。即使我可以讓用戶名成爲行鍵,我也必須在會話中使用它來始終查找用戶行。這個限制是否仍然存在,或者我只是使用舊版本的PHP庫? – Sthe