Columns
column是cassandra数据模型中最小的数据单元,基本结构包含了 name, value, timestamp 我们来看以下的数据结构:
Contact: {
ian: {
name: "Ian Wu" ,
phone: "3939889",
birthday: "1983/01/01",
email: "ianwu@example.com"
}
john: {
name: "John Li" ,
phone: "4499888",
birthday: "1984/02/02",
email: "johnli@example.com",
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 沒有时间戳。