走进cassandra之二 数据模型
关于数据模型的介绍, 这里有一篇文章,讲的挺好的。
关于cassandra有很多文档上都说它是无schema,其实这个描述,稍微有点不准确,schema是什么呢,就是一个数据库的一组规则标准,不管你是关系型,还是nosql,总得有规则的,不可能是一点儿没有,区别在于 cassandra的这种, schema有点粗,相当大条。 怎么个粗法呢? 比如说我们找到一个schema文件的例子 xxxxservicesschema 我们可以打开一个cv.cass来看看。如下: CREATE KEYSPACE CV; USE CV; CREATE COLUMN FAMILY Comments WITH column_type = Super AND comparator = TimeUUIDType AND key_validation_class = BytesType; CREATE COLUMN FAMILY CommentCounter WITH default_validation_class = CounterColumnType AND key_validation_class = BytesType AND comparator = UTF8Type; CREATE COLUMN FAMILY Group WITH comparator = UTF8Type AND key_validation_class = BytesType AND column_metadata=[ {column_name: name,validation_class: UTF8Type,index_type: KEYS},{column_name: type,{column_name: timecreated,validation_class: IntegerType,{column_name: timeupdated,index_type: KEYS}]; 可以看出,这里面,就列出了 列族的名字, 还有一些基本属性,比起关系型数据库的 E-R图来说,是有些大条,以至于说它是无 schema了。 那么这段 粗略的schema,到底 规定了什么东东呢?到底在说呢? CREATE COLUMN FAMILY Comments 给列族起了一个名字,这个好理解。 WITH column_type = Super 这段是说这个列族是超级列族。 AND comparator = TimeUUIDType 这个是规定列名的数据类型和列是如何排序的。官方的解释是The comparator specifies the data type for the column name,as well as the sort order in which columns are stored within a row。 AND key_validation_class = BytesType; 这个是定义row key validator的 WITH default_validation_class = CounterColumnType 这个也是validator。 AND column_metadata=[ {column_name: name,index_type: KEYS}]; 这一堆,说的是针对 静态列族,你可以预先定义一部分列。这些列是预先定义好的,死的,不是在运行时才加上去的。 比较适合有公共部分的row,比如说,一个‘人‘的列族,每人肯定是有性别的,别的可以没有,这个必须有。 一般来说,作为我们程序员,只关心列族的配置就好了,keyspace的,可以不太关注。 数据模型,是了解cassandra的hello world 步骤,过了这一篇,下面就是高年级知识了。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |