Cassandra的数据模型
Cassandra的数据模型可以理解为嵌套的Map,在Cassandra中数据类型主要有四种:Column,SuperColumn,ColumnFamily,Keyspace。下面分别介绍这几种类型。
Column
Column是Cassandra中最小的数据单元,它是一个三元的数据类型,包括:name,value,timestamp。将一个Column使用JSON的形式表现出来,如下所示:
{
//this is a Column
name:"ysl",
value:"ysl@test.com"
timestamp:4654646546
}
在这里,name和value的类型都是Java中的byte[]。
SuperColumn
SuperColumn可以看做是由Column组成的数组,它包含一个name以及一些列相应的Column,我们将SuperColumn使用JSON的形式表现出来如下:
{
//this is a SuperColumn
name:"emails",
value:{
{
name:"ysl",
value:"ysl@test.com"
timestamp:4654646546
},
{
name:"ddd",
value:"ddd@test.com"
timestamp:4654646546
}
}
}
值得注意的是SuperColumn没有timestamp属性
ColumnFamily
ColumnFamily是一个包含许多Row的结构,可以将它想象为关系型数据库中的表。Row是由key以及key关联的Column组成的。下面的实例代表了一个ColumnFamily。
//this is a ColumnFamily
users = {
ysl:{//this is a key
{
name:"username",
value:"ysl",
timestamp:
},
{
name:"email",
value:"ysl@test.com",
timestamp:
},
{
name:"phone",
value:"",
timestamp:
}
},
ketty:{//this is a key
{
name:"username",
value:"ketty",
timestamp:
},
{
name:"email",
value:"ketty@test.com",
timestamp:
},
{
name:"phone",
value:"",
timestamp:
}
}
}
Keyspace
每一个Keyspace包含多个ColumnFamily,并且可以制定Keyspace的数据备份策略和数据的备份数。
一般来说,每一个Cassandra集群中有一个Keyspace就可以了,但是当集群足够庞大,并且业务足够的复杂的时候,就需要拆分为多个Keyspace了,比如说两个系统使用同一个Cassandra集群,一个数据的备份数要求是3,而另外一个数据备份数要求是5,这样就需要为每个系统单独创建一个Keyspace了。
Cassandra的数据模型的更多相关文章
- Cassandra的数据模型的理解
Cassandra属于NoSQL数据库,NoSQL和传统关系型数据库不同,NOSQL偏好数据冗余,因为NoSQL一般无法做表关联查询. (1) keySpace 基本上可以将Keyspa ...
- Cassandra 数据模型
Cassandra的数据模型类似于关系型数据库的模型,且提供了与SQL语言非常类似的CQL语言进行操作. 但是Cassandra的数据模型类似于多层键值对结构,与关系型数据库存在巨大差别. 本文基于: ...
- Cassandra 介绍
cassandra是一种NoSQL数据库,No是指No Relational.cassandra的数据模型结合了Dynamo的key/value和BigTable 的面向列的特点,主要被设计为存储大 ...
- 分布式 Key-Value 存储系统:Cassandra 入门
Apache Cassandra 是一套开源分布式 Key-Value 存储系统.它最初由 Facebook 开发,用于储存特别大的数据. Cassandra 不是一个数据库,它是一个混合型的非关系的 ...
- Hbase总结(一)-hbase命令,hbase安装,与Hive的区别,与传统数据库的区别,Hbase数据模型
Hbase总结(一)-hbase命令 下面我们看看HBase Shell的一些基本操作命令,我列出了几个常用的HBase Shell命令,如下: 名称 命令表达式 创建表 create '表名称', ...
- Cassandra 学习笔记 - 1 - 关于Cassandra
摘要 - Cassandra 的历史 Cassandra能做什么 Apache Cassandra最早是Facebook为了改进他们的Inbox搜索功能,由Avanash Lakshman和Prash ...
- NoSql Cassandra
我们为什么要使用NOSQL非关系数据库? 随着互联网web2.0网站的兴起,非关系型的数据库现在成了一个极其热门的新领域,非关系数据库产品的发展非常迅速.而传统的关系数据库在应付web2.0网站,特别 ...
- Cassandra 和 Spark 数据处理一窥
Apache Cassandra 数据库近来引起了很多的兴趣,这主要源于现代云端软件对于可用性及性能方面的要求. 那么,Apache Cassandra 是什么?它是一种为高可用性及线性可扩展性优化的 ...
- Cassandra 的数据存储结构——本质是SortedMap<RowKey, SortedMap<ColumnKey, ColumnValue>>
Cassandra 的数据存储结构 Cassandra 的数据模型是基于列族(Column Family)的四维或五维模型.它借鉴了 Amazon 的 Dynamo 和 Google's BigTab ...
随机推荐
- UI设计小白怎样学才能快速入门?
最近有很多同学问我,UI小白有什么捷径可以快速入门?其实我想说设计这门学科没有什么捷径,真的只有多学.多看.多练.多想.多做. 1.先学软件 如果你是小白,软件也不会用,那就先学软件,从PS开始,先看 ...
- 局域网2台机器访问mysql服务器
- 16款值得一用的iPhone线框图模板 (PSD & Sketch)
在任何网站或移动应用设计的过程中,线框图作为设计元素和功能的图示,它有助于帮助定义和更好地传达信息层次结构,让参与设计和开发的人员更好的理解设计师的思路和设计的功能点. 即使线框图设计是一个比较耗时的 ...
- 1.spring环境的搭建
1.app.config <?xml version="1.0" encoding="utf-8" ?><configuration> ...
- 动态加载页面 通过src
<img src="a.jpg"> 通过js 改变 src 路径 如action 路径, 注意 action 配置问题.
- document.body和document.documentElement区别
1.document.documentElement表示文档节点树的根节点,即<html> document.body是body节点 2. 页面具有 DTD,或者说指定了 DOCTYPE ...
- js把一个数组插入到另一个数组的指定位置
var arr1 = ['a', 'b', 'c']; var arr2 = ['1', '2', '3']; // 把arr2 变成一个适合splice的数组(包含splice前2个参数的数组) a ...
- 17 Privacy Lost:Dose Anybody Care ? 失去隐私,有人在乎吗 ?
Privacy Lost:Dose Anybody Care ? 失去隐私,有人在乎吗 ? ①Someday a stranger will read your e-mail without your ...
- web service 项目 和 普通 web项目 的 区别
web service 面向的是开发者(需要再次开发) 普通web 面向的是用户(直接使用)
- 测试-LoadRunner
1录脚本 设置解析方式,html形式,会精炼成一个函数,此时找有用的url,写出函数:url方式,函数比较多. 参数化 两参数成对时,在脚本处选成对. 加上进程,加上返回值判断. 最后一段接口url, ...