Keyspace
提到Keyspace,可以把keyspace 想像成RDBMS中的database,而database 的层次应该是database>table>columns,当然keyspace也有相对应的层次结构keyspace>column family>column, super column,所以在设计keyspace就像在设计database一样.
Keyspace 的組成
刚刚说过keyspcae就像是database一样,当然也会有schema去描述keyspace,而這份 schema 是在conf/storage-conf.xml里面的<Keyspaces>节点中定义的。
<Keyspaces>
<Keyspace Name="Keyspace1">
<KeysCachedFraction>0.01</KeysCachedFraction>
<ColumnFamily CompareWith="BytesType" Name="Standard1"/>
<ColumnFamily CompareWith="UTF8Type" Name="Standard2"/>
<ColumnFamily CompareWith="TimeUUIDType" Name="StandardByUUID1"/>
<ColumnFamily ColumnType="Super"
CompareWith="UTF8Type"
CompareSubcolumnsWith="UTF8Type"
Name="Super1"
Comment="注解"/>
</Keyspace>
</Keyspaces>
节点说明
<Keyspaces>
所有的Keyspace定义都要放在Keyspaces标签中.
<Keyspace>
Keyspace定义标签
属性:Name keyspace唯一名称必填
<KeysCachedFraction>
键缓存,默认为0.01,0为关闭。
<ColumnFamily>
定义列簇,就相当于table了.
属性:CompareWith
定义排序规则,规则都包括:BytesType、AsciiType、UTF8Type 、LongType 、LexicalUUIDType、TimeUUIDType
属性:Name
名称 在同一Keyspace里唯一
属性:ColumnType
列类型共两种:Standard和Super
属性:CompareSubcolumnsWith
针对类型为Super的ColumnFamily的排序规则定义
属性:Comment
注解
例:
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"
}
}
以上是我们定义的用来存储用户通讯录信息的数据结构.Keyspace定义如下
<Keyspace Name="Phonebook">
<KeysCachedFraction>0.01</KeysCachedFraction>
<ColumnFamily CompareWith="UTF8Type" Name="Contact"/>
</Keyspace>
是不是很简单,我们可以把Contace看做关系型数据库中的用来存放用户通讯信息的表。Key就是用户姓名,这样我们插入或查找时只需要反问Contact这个ColumnFamily然后操作对应的Key所关联的值就可以了,Key-Value吗~
插入:
cassandra> set Phonebook.Contact['ian']['name']='Ian Wu'
Value inserted.
cassandra> set Phonebook.Contact['ian']['phone']='3939889'
Value inserted.
cassandra> set Phonebook.Contact['ian']['birthday']='1983/01/01'
Value inserted.
cassandra> set Phonebook.Contact['ian']['email']='ianwu@example.com'
Value inserted.
查询:
cassandra> get Phonebook.Contact['ian']
=> (column=phone, value=3939889, timestamp=1270715681771)
=> (column=name, value=Ian Wu, timestamp=1270714451492)
=> (column=email, value=ianwu@example.com, timestamp=1270715719930)
=> (column=birthday, value=1983/01/01, timestamp=1270715700201)
Returned 4 results
分享到:
相关推荐
2. **数据模型增强**:3.5版增强了宽列支持,允许更灵活的数据模式,这对于处理半结构化和非结构化数据特别有用。 3. **故障检测与恢复**:Cassandra 3.5 提升了节点故障检测的速度,并改进了故障恢复机制,确保在...
cassandra_driver作为Python库,它提供了一组高级API,使得Python开发者可以使用Pythonic的方式来执行CQL(Cassandra查询语言)命令,管理会话,执行批处理操作,并处理数据模型。它支持异步操作,利用Python的`...
首先,你需要理解Cassandra的数据模型。Cassandra的数据存储基于表(Table),这些表分布在多个节点上,形成一个分区(Partition)。每个分区由键(Partition Key)决定,而行(Row)由主键(Primary Key)确定。在...
在Cassandra中,数据模型包括键空间(Keyspace)、表(Table)和列族(Column Family),类似于传统关系型数据库的数据库、表和列的概念。 **键空间(Keyspace)** 键空间是Cassandra中最高级别的命名空间,可以...
为了充分利用Cassandra的优势,我们需要考虑数据模型的优化,如合理选择主键、使用宽行模式或时间序列模式等。同时,使用Cassandra的分片和复制策略可以提高系统的容错性和读写性能。 总结,Laravel结合Cassandra...
7. **数据模型设计**:理解如何根据业务需求设计Cassandra的数据模型,如宽行(wide row)、时间序列数据的存储等。 8. **异步操作**:为了提高性能,C#驱动提供了异步API,可以在不影响主线程的情况下执行数据库...
spring.data.cassandra.keyspace-name=mykeyspace ``` - 创建一个`CassandraConfig`类,自定义CassandraTemplate和Session: ```java @Configuration public class CassandraConfig extends ...
Azure Cosmos DB是微软提供的一款全球分布式多模数据库服务,它支持多种数据模型,包括Cassandra API,这使得在云中使用Cassandra应用程序变得简单。 首先,我们需要了解Python SDK的基本概念。Python SDK...
通过深入学习和实践,你将能更好地理解 Cassandra 的数据模型以及如何利用 Java 驱动程序来实现高效的数据操作。 总之,Apache Cassandra 和 Datastax Java 驱动程序为开发者提供了一个强大的工具集,用于构建大...
以上是 Cassandra CQL3 的核心知识点概览,涵盖了数据模型的设计、CQL 的基本使用、数据的插入和更新、查询操作以及表和索引的管理等方面。掌握这些内容对于有效利用 Cassandra 来构建高性能的应用程序至关重要。
在 Laravel 中,可以通过合理设计数据模型、使用批处理操作、以及充分利用 Cassandra 的分区键和索引来优化性能。 **6. 结论** 将 Laravel 与 Cassandra 结合使用,能够为你的 Web 应用提供强大的数据存储和处理...
1. **数据模型**:CQL支持表(Table)、键空间(Keyspace)、列族(Column Family)、超级列(Super Column)、列(Column)等概念。 2. **CRUD操作**:创建(CREATE)、读取(SELECT)、更新(UPDATE)、删除...
Cassandra的数据模型可以理解为四维或五维的哈希。它主要由以下组件组成: - **Cluster**:包含多个Keyspace。 - **Keyspace**:每个Keyspace可以看作是独立的数据逻辑空间,可以包含多个ColumnFamily,通常对应一...
4. 数据模型:Cassandra 支持列族(Column Family)数据模型,类似于Google的Bigtable。每个表(Keyspace)由多个列族组成,列族内数据按行键(Row Key)排序,列族可以有任意数量的列,列可以动态增加。 5. 读写...
Cassandra采用了分布式的数据模型,其中数据被分散存储在多个节点上,以实现高可用性和容错性。它支持列族(Column Family)数据结构,类似于宽表,允许快速查询大量稀疏数据。Cassandra的API通常通过CQL(Cassandra...
- 数据模型:基于列族(Column Family),类似于键值对和宽表,支持动态字段和结构。 - 数据分区:使用一致性哈希(Consistent Hashing)进行数据分片,确保数据均匀分布。 - 写优化:Cassandra设计时更侧重于写...
Cassandra的数据模型是列族(column family)模型,它由一系列的列组成,列由键和值组成,这种模型特别适合处理大量的写操作和读操作。其中,column、supercolumn、column family、supercolumn family是其核心概念。...
**Cassandra的数据模型**包括键空间(Keyspace)、列族(Column Family)、行(Row)等概念。 - **键空间**是Cassandra中的命名空间或容器,用于存储数据和管理策略如复制策略。 - **列族**是键空间中的容器,类似...
【Cassandra 入门学习】 Cassandra是一款分布式NoSQL数据库系统,特别适合处理...学习Cassandra,不仅需要理解其基本概念和操作,还应深入理解分布式系统原理、数据模型以及一致性策略,以便更好地在实际项目中应用。
- **数据模型**:Cassandra使用表格(Table)、键空间(KeySpace)和分区键(Partition Key)的概念来组织数据。表格包含主键和列簇(Clustering Columns),支持灵活的数据模型设计。 - **CQL(Cassandra Query ...