1. 概述

Cassandra是一套开源分布式NoSQL数据库系统,设计思想采用了google的BigTable的数据模型和Amazon的Dynamo的完全分布式架构,因而它具有很好的扩展性且不存在单点故障。

本文假设读者已经具有了SQL数据库的基本知识,为了帮助读者更容易的理解Cassandra的数据模型,本文结合SQL数据库的概念,采用类比的方法介绍Cassandra的数据模型。

2. 数据模型

2.1 Key(对应SQL数据库中的主键)

在Cassandra中,每一行数据记录是以key/value的形式存储的,其中key是唯一标识。

2.2 Column(对应SQL数据库中的列)

Cassandra中每个key/value对中的value又称为column,它是一个三元组,即:name,value和timestamp,其中name需要是唯一的。

2.3 Super Column(SQL数据库不支持)

Cassandra允许key/value中的value是一个map(key/value_list),即某个column有多个子列。

2.4 Standard Column Family(相对应SQL数据库中的table)

每个CF由一系列row组成,每个row包含一个key以及其对应的若干column。

2.5 Super Column Family(SQL数据库不支持)

每个SCF由一系列row组成,每个row包含一个key以及其对应的若干super column。

注意,CF中只能存储name/value形式的column,不能存储Super column,同样,SCF中只能存储super column。

2.6 Key Space(对应SQL数据库中的database)

一个Key Space中可包含若干个CF,如同SQL数据库中一个database可包含多个table。

2.7 排序

在Cassandra的每个row中,所有Column按照会按照name自动进行排序,排序的类型有:BytesType, UTF8Type,LexicalUUIDType, TimeUUIDType, AsciiType,和LongType,不同的排序类型,会产生不同的排序结果

 

完整的Cassandra 的数据模型图:


图 2. 数据模型实例分析

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐