Columns
column是cassandra数据模型中最小的数据单元,基本结构包含了 name, value, timestamp 我们来看以下的数据结构:
Contact: { ian: { name: "Ian Wu" , phone: "3939889", birthday: "1983/01/01", email: "[email protected]" } john: { name: "John Li" , phone: "4499888", birthday: "1984/02/02", email: "[email protected]", age: "23", gender: "male", } }
从上面的数据中我们可以清楚的看出包含了ian和john的各自信息,里面的name、phone等都是Contact的column,我们拿name:"Ian Wu"这个column来看,它是一个标准的column,他的结构应该是这样的
{ name: "name", value: "Ian Wu", timestamp: 123456789 }
Cassandra里还有另一种column那就是Super Columns,Super Column结构包含了name与value,同時Super Column內的value是column的集合,以下是一个简单的super column数据:
Address: { ian: { work: { street: "abc rd.", city: "Taipei County", zip: "251" }, home: { street: "def rd.", city: "Taipei City", zip: "108" } } john: { work: { street: "abc rd.", city: "Taipei County", zip: "251" }, home: { street: "def rd.", city: "Taipei City", zip: "108" } } }
从上面的数据可以看出名为Address的columns family中存放了ian和john的地址信息,地址信息分为work与home两类。
work: { street: "abc rd.", city: "Taipei County", zip: "251" }
以上面的数据为例,它的数据结构应表示为:
{ name: "work", value: { street: { name: "street", value: "abc rd.", timestamp: 123456789 }, city: { name: "city", value: "Taipei County", timestamp: 123456789 }, zip: { name: "zip", value: "251", timestamp: 123456789 } } }
这个 super column 记录了work的地址数据,同时zip, city, street 分別再以column來表示,形成一組 column set,有一点需要注意的是super column 沒有时间戳。