Cassandra的数据模型的理解
2017-03-29 13:51
465 查看
Cassandra属于NoSQL数据库,NoSQL和传统关系型数据库不同,NOSQL偏好数据冗余,因为NoSQL一般无法做表关联查询。
(1) keySpace基本上可以将Keyspace 理解成MySQL 之中的Database. 只不过Cassandra的”database” 包含了更多的内容:
Replication Factor : 复制因数。 表示一份数据在一个DC 之中包含几份。常用奇数~ 比如我们项目组设置的replication_factor=3
Replica placement strategy : 复制策略。 默认的是SimpleStrategy. 如果是单机架、单数据中心的模式,保持使用SimpleStrtegy即可。
下面是一个简单的通过CQL 语句创建一个新的keyspace的例子:
MySQL
(2) Column Family/Column 可以理解Column Family为MySQL的Table, 将Column 理解为MySQL之中的一条记录。所谓Column就是: A tuple with name, value and timestamp。之所以称之为Column Family, 是因为Cassandra 是一种列式数据库,因此将一组Column称为Column Family。. 比较有意思的是,Column 包含了Timestamp。 其作用主要是当有新数据覆盖的时候,不是直接将老数据从存储介质上删除,而是直接写入新的数据。 当需要查询的时候,通过key或者某种方式找到的所有Column,并去找Timestamp 最新的Column。 老数据会在一段时间之后自行删除。可以使用下面的一句话概括:
Java
首先Map结构,通过key来进行查询速度会非常快。 再加上内嵌的SortedMap, 可以进行顺序查找,速度也很快。 当然,如何快速的生成Key等就是另外一个topic
Cassandra 整体数据可以理解成一个巨大的嵌套的Map。只能按顺序一层一层的深入,不能跳过中间某一层~
(3)Super Column 已经被淘汰,可以不用关注
(4)Primary key Primary key = Partition Key + [Clustering Key]
(5)Partition Key 其实就是指在Primary key 中的第一个列,如果想要用多个列就可以把这的多个列用小括号括起来。 http://docs.datastax.com/en/glossary/doc/glossary/gloss_partition_key.html http://docs.datastax.com/en/cql/3.1/cql/cql_reference/refCompositePk.html 这里有一个例子,说的很清楚。
参考资料:1)Data Modeling Concepts,http://docs.datastax.com/en/cql/3.1/cql/ddl/dataModelingApproach.html 2)Data modeling in 30 seconds http://docs.datastax.com/en/landing_page/doc/landing_page/dataModeling.html 3)[Cassandra教程] (四)使用Key的正确姿势,http://www.flyml.net/2016/09/05/cassandra-tutorial-right-way-to-use-key/
(1) keySpace基本上可以将Keyspace 理解成MySQL 之中的Database. 只不过Cassandra的”database” 包含了更多的内容:
Replication Factor : 复制因数。 表示一份数据在一个DC 之中包含几份。常用奇数~ 比如我们项目组设置的replication_factor=3
Replica placement strategy : 复制策略。 默认的是SimpleStrategy. 如果是单机架、单数据中心的模式,保持使用SimpleStrtegy即可。
下面是一个简单的通过CQL 语句创建一个新的keyspace的例子:
MySQL
12 | CREATE KEYSPACE Keyspace nameWITH replication = {'class': 'SimpleStrategy', 'replication_factor' : 3}; 来源: http://www.flyml.net/2016/09/04/cassandra-tutorial-data-model/ |
Java
1 | Map<RowKey, SortedMap<ColumnKey, ColumnValue>> |
Cassandra 整体数据可以理解成一个巨大的嵌套的Map。只能按顺序一层一层的深入,不能跳过中间某一层~
(3)Super Column 已经被淘汰,可以不用关注
(4)Primary key Primary key = Partition Key + [Clustering Key]
(5)Partition Key 其实就是指在Primary key 中的第一个列,如果想要用多个列就可以把这的多个列用小括号括起来。 http://docs.datastax.com/en/glossary/doc/glossary/gloss_partition_key.html http://docs.datastax.com/en/cql/3.1/cql/cql_reference/refCompositePk.html 这里有一个例子,说的很清楚。
参考资料:1)Data Modeling Concepts,http://docs.datastax.com/en/cql/3.1/cql/ddl/dataModelingApproach.html 2)Data modeling in 30 seconds http://docs.datastax.com/en/landing_page/doc/landing_page/dataModeling.html 3)[Cassandra教程] (四)使用Key的正确姿势,http://www.flyml.net/2016/09/05/cassandra-tutorial-right-way-to-use-key/
相关文章推荐
- Cassandra的数据模型的理解
- Cassandra – 理解关键概念和数据模型
- Cassandra的数据模型
- 理解UDDI(2):UDDI注册信息的数据模型
- 走进cassandra之二 数据模型
- 列数据库--Cassandra数据模型
- Cassandra 数据模型
- DB2 XML 编程,第 1 部分:理解 XML 数据模型
- 走进cassandra之二:数据模型
- Cassandra数据模型
- Cassandra数据模型
- Cassandra1.2文档学习(17)—— CQL数据模型(上)
- Cassandra数据模型
- [转]Cassandra数据模型
- Cassandra数据模型
- 理解Javascript_04_数据模型
- Cassandra数据模型
- cassandra学习笔记2--Cassandra数据模型
- Cassandra数据模型
- Cassandra数据模型设计最佳实践(上部)