`

Cassandra数据模型---理解Keyspace

阅读更多

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

1
0
分享到:
评论

相关推荐

    apache-cassandra-3.5-bin.tar

    2. **数据模型增强**:3.5版增强了宽列支持,允许更灵活的数据模式,这对于处理半结构化和非结构化数据特别有用。 3. **故障检测与恢复**:Cassandra 3.5 提升了节点故障检测的速度,并改进了故障恢复机制,确保在...

    Python库 | cassandra_driver-3.23.0-cp36-cp36m-win_amd64.whl

    cassandra_driver作为Python库,它提供了一组高级API,使得Python开发者可以使用Pythonic的方式来执行CQL(Cassandra查询语言)命令,管理会话,执行批处理操作,并处理数据模型。它支持异步操作,利用Python的`...

    java导出cassandra数据

    首先,你需要理解Cassandra的数据模型。Cassandra的数据存储基于表(Table),这些表分布在多个节点上,形成一个分区(Partition)。每个分区由键(Partition Key)决定,而行(Row)由主键(Primary Key)确定。在...

    cassandra-create-helper-script:在Jenkins作业中使用的Python包装器将处理创建角色,表和键空间

    在Cassandra中,数据模型包括键空间(Keyspace)、表(Table)和列族(Column Family),类似于传统关系型数据库的数据库、表和列的概念。 **键空间(Keyspace)** 键空间是Cassandra中最高级别的命名空间,可以...

    Laravel开发-cassandra

    为了充分利用Cassandra的优势,我们需要考虑数据模型的优化,如合理选择主键、使用宽行模式或时间序列模式等。同时,使用Cassandra的分片和复制策略可以提高系统的容错性和读写性能。 总结,Laravel结合Cassandra...

    cassandra-C#应用

    7. **数据模型设计**:理解如何根据业务需求设计Cassandra的数据模型,如宽行(wide row)、时间序列数据的存储等。 8. **异步操作**:为了提高性能,C#驱动提供了异步API,可以在不影响主线程的情况下执行数据库...

    spring boot与cassandra集成,使用原生驱动。

    spring.data.cassandra.keyspace-name=mykeyspace ``` - 创建一个`CassandraConfig`类,自定义CassandraTemplate和Session: ```java @Configuration public class CassandraConfig extends ...

    lab_azure_build-cassandra-app-with-python-sdk-azure-cosmos-db

    Azure Cosmos DB是微软提供的一款全球分布式多模数据库服务,它支持多种数据模型,包括Cassandra API,这使得在云中使用Cassandra应用程序变得简单。 首先,我们需要了解Python SDK的基本概念。Python SDK...

    cassandra-java-example:一堆使用 Apache Cassandra 和 Datastax Java 驱动程序的 Apache Cassandra 示例

    通过深入学习和实践,你将能更好地理解 Cassandra 的数据模型以及如何利用 Java 驱动程序来实现高效的数据操作。 总之,Apache Cassandra 和 Datastax Java 驱动程序为开发者提供了一个强大的工具集,用于构建大...

    cassandra cql3

    以上是 Cassandra CQL3 的核心知识点概览,涵盖了数据模型的设计、CQL 的基本使用、数据的插入和更新、查询操作以及表和索引的管理等方面。掌握这些内容对于有效利用 Cassandra 来构建高性能的应用程序至关重要。

    Laravel开发-laravel-cassandra

    在 Laravel 中,可以通过合理设计数据模型、使用批处理操作、以及充分利用 Cassandra 的分区键和索引来优化性能。 **6. 结论** 将 Laravel 与 Cassandra 结合使用,能够为你的 Web 应用提供强大的数据存储和处理...

    cassandra-cheat-sheet:卡桑德拉速查表

    1. **数据模型**:CQL支持表(Table)、键空间(Keyspace)、列族(Column Family)、超级列(Super Column)、列(Column)等概念。 2. **CRUD操作**:创建(CREATE)、读取(SELECT)、更新(UPDATE)、删除...

    cassandra教程

    Cassandra的数据模型可以理解为四维或五维的哈希。它主要由以下组件组成: - **Cluster**:包含多个Keyspace。 - **Keyspace**:每个Keyspace可以看作是独立的数据逻辑空间,可以包含多个ColumnFamily,通常对应一...

    apache_cassandra

    4. 数据模型:Cassandra 支持列族(Column Family)数据模型,类似于Google的Bigtable。每个表(Keyspace)由多个列族组成,列族内数据按行键(Row Key)排序,列族可以有任意数量的列,列可以动态增加。 5. 读写...

    scala-cassandra-example:Scala-Cassandra-示例

    Cassandra采用了分布式的数据模型,其中数据被分散存储在多个节点上,以实现高可用性和容错性。它支持列族(Column Family)数据结构,类似于宽表,允许快速查询大量稀疏数据。Cassandra的API通常通过CQL(Cassandra...

    Cassandra文档

    - 数据模型:基于列族(Column Family),类似于键值对和宽表,支持动态字段和结构。 - 数据分区:使用一致性哈希(Consistent Hashing)进行数据分片,确保数据均匀分布。 - 写优化:Cassandra设计时更侧重于写...

    Cassandra使用手册

    Cassandra的数据模型是列族(column family)模型,它由一系列的列组成,列由键和值组成,这种模型特别适合处理大量的写操作和读操作。其中,column、supercolumn、column family、supercolumn family是其核心概念。...

    cassandra 学习

    **Cassandra的数据模型**包括键空间(Keyspace)、列族(Column Family)、行(Row)等概念。 - **键空间**是Cassandra中的命名空间或容器,用于存储数据和管理策略如复制策略。 - **列族**是键空间中的容器,类似...

    Nosql - Cassandra 入门学习

    【Cassandra 入门学习】 Cassandra是一款分布式NoSQL数据库系统,特别适合处理...学习Cassandra,不仅需要理解其基本概念和操作,还应深入理解分布式系统原理、数据模型以及一致性策略,以便更好地在实际项目中应用。

    阿里云cassandra技术架构及最佳实践-陈江.pdf

    - **数据模型**:Cassandra使用表格(Table)、键空间(KeySpace)和分区键(Partition Key)的概念来组织数据。表格包含主键和列簇(Clustering Columns),支持灵活的数据模型设计。 - **CQL(Cassandra Query ...

Global site tag (gtag.js) - Google Analytics