`
csstome
  • 浏览: 1527900 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

cassandra学习笔记3--Cassandra搭建简单Blog

阅读更多

需求

Blog程序的需求如下:

1 允许不同的用户写Blog。
2 Blog内容包括:标题,内容,ID,发布日期。
3 每一篇Blog可以打上任意多个Tag。
4 人们可以在Blog上留言,内容包括:留言内容,留言人的名字,留言时间。

设计

针对上面的4点需求,我们可以相应地建立4个ColumnFamily(以后用CF简写)来保存数据。

Author ColumnFamily

作者CF用于保存用户的相关信息,如下所示:

Authors : { // CF
        逖靖寒: { // row key
            numPosts: 11,
            homepage:
http://gpcuster.cnblogs.com
            email: gpcuster@gmail.com ,
            sex: male
        },
        // and the other authors
        Author 2 {
            ...
        }
    }

Author CF属于standard类型,Key为用户的ID,每一个Col代表了用户的一个属性。每一个用户相关联的属性不需要预先定义好,这也是面向列存储的好处之一:)

BlogEntries ColumnFamily

博客CF用与保存每一篇Blog的相关信息,如内容,作者信息,tag信息等等:

BlogEntries : { // CF
        1222212 : { // row key - 博客文章的ID,这个是唯一的.
            title: 基于Cassandra搭建简单Blog程序后台
            body: lalalalalala
            author: 逖靖寒  // 这个col的value对应着Authors CF中的key
            tags: DB,NoSQL  // 我们使用逗号来分隔多个tag信息
            pubDate: 1250558004      // 发布时间
            ID: 1222212
        },
        // 另外一篇博客
        1222213 : {
            ...
        }
    }

BlogEntries CF属于standard类型,Key为每一篇博客的ID。注意这里的author col,通过这个col,我们可以直接查询到author的信息。

Tag ColumnFamily

Tag CF用户保存用户给每一篇博客打上的Tag信息:

Tag : { // CF
        NoSQL : {  // 我们使用Tag的内容作为Key。
            // column的名称为博客发布的时间,内容为博客的ID
            timeuuid_1 : 1222212,
            timeuuid_2 : 1222214,
        },
        // 这个另一个Tag信息
        Life : { 
            …         
        }

Tag CF属于standard类型,我们可以通过博客的ID找到对应的博客内容。

Comments ColumnFamily

用户评论CF设计如下:

Comments : {
        1222212 : { // 这里的key就是BlogEntry的key:博客的ID
            timeuuid_1 : { // 这个是Super Column的名称
                // 评论的信息
                commenter: 逖靖寒,
                email:
gpcuster@gmail.com ,
                comment: hello
                commentTime: 1250438004
            },
            // 这篇博客的另一个评论
            timeuuid_2 : {
                commenter: Some Dude,
                email: sd@example.com,
                comment: be nice Joe Blow this isnt youtube
                commentTime: 1250557004
            },           
        },
        // 另一篇博客的评论
        12222343 : {
            …    
        }

Comments CF属于super类型。这里key的设置我们可以非常方便的找到一篇Blog对应的所有评论信息。

配置信息

根据上面设计的各个CF的信息,我们需要在storage-conf.xml文件中配置各个CF的信息,配置情况如下:

<Keyspace Name="BloggyAppy">
        <!-- CF definitions -->
        <ColumnFamily CompareWith="BytesType" Name="Authors"/>
        <ColumnFamily CompareWith="BytesType" Name="BlogEntries"/>
        <ColumnFamily CompareWith="TimeUUIDType" Name="TaggedPosts"/>
        <ColumnFamily CompareWith="TimeUUIDType" Name="Comments"
            CompareSubcolumnsWith="BytesType" type="Super"/>
    </Keyspace>

使用

现在假设我们要根据一个tag找到相关博客,并且打开这篇博客后能够看到作者的信息和相关的评论。

假设选择的tag的名称为NoSQL:

返回tag为NoSQL的所有blog的ID:get BloggyAppy.Tag[‘NoSQL’]

假设选择的blog ID为1222212:

放回Blog的内容:get BloggyAppy.BlogEntries[‘1222212’]

查阅这篇Blog的所有评论信息:get BloggyAppy.Commnets[‘1222212’]

查阅作者信息也是类似的。

这样我们就完成一个简单的Blog程序的后台。

分享到:
评论

相关推荐

    Hadoop学习笔记

    【Hadoop学习笔记】 Hadoop 是一个开源框架,主要用于处理和存储大数据。它源自于解决互联网公司面临的海量数据处理问题,特别是Google发布的三篇技术论文,即GFS(Google File System)、MapReduce以及BigTable。...

    SpringBoot-jt-day01

    在本课程"SpringBoot-jt-day01"中,我们将深入学习Spring Boot的基础知识和核心概念,这是一门针对初学者和进阶开发者的重要课程。Spring Boot是Java生态系统中的一个热门框架,它简化了创建独立的、生产级别的基于...

    SpringBoot2-StudyNotes:我的Spring Boot学习笔记

    Spring Boot是Java开发领域的一款热门框架,由Pivotal团队创建,旨在简化Spring应用程序的初始搭建以及开发过程。Spring Boot的核心理念是“约定优于配置”,它通过默认配置和自动配置来减少开发者的工作量,使我们...

    java笔记.rar

    2. **Spring Boot**:Spring Boot是由Pivotal团队提供的全新框架,它简化了基于Spring的应用程序初始搭建以及开发过程。Spring Boot的核心特性是自动配置,可以极大地提高开发效率。我们可能还会学习到如何使用...

    hadoop笔记2.pdf

    Hadoop是一个生态圈,而不是单一产品,它包括Hive、Hbase、Zookeeper、Cassandra、Solr等众多组件。 **Hadoop的发展历史** Hadoop的发展与Lucene框架有着密切的联系,后者由Doug Cutting创建,最初是Apache基金会...

    Spring框架笔记

    Spring框架是Java开发中最常用的轻量级开源框架之一,它以其强大的依赖注入(Dependency Injection...个人学习Spring框架笔记时,可以从每个模块的原理、使用方法以及实际案例入手,逐步深入理解并掌握这一强大的工具。

    开发过程中常用学习资源网站

    在开发过程中,不断学习和掌握新的技术和资源是至关重要的。以下是一些常用的学习资源网站,涵盖了多种编程语言、框架和工具,帮助你提升技能和效率。 1. **Go语言**: - **Golang123Go语言中文网**:提供Go语言的...

    zeppelin-libs:使用 PredictionIO 和 Apache Zeppelin 的机器学习分析

    PredictionIO 提供了模板系统,可以快速搭建常见的机器学习算法,如协同过滤、决策树等。在 Zeppelin 中,你可以使用这些模板,结合预处理的数据,构建机器学习模型。 4. **评估模型**: Zeppelin 支持多种评估...

    后端开发学习指南:从入门到精通的路径规划

    ### 后端开发学习指南:从入门到精通的路径规划 #### 一、基础编程语言 在后端开发中,选择合适的编程语言是至关重要的第一步。以下几种编程语言被广泛应用于后端开发: 1. **Java**:Java 是一种跨平台的面向...

    大数据使用火花:火花的EDX课程

    3. 数据加载与存储:学习如何从HDFS、Cassandra、HBase等数据源读取数据,以及如何将结果数据写回。 4. 流处理:深入理解Spark Streaming的工作原理,实现实时数据处理应用。 5. 机器学习:通过MLlib学习监督和非...

Global site tag (gtag.js) - Google Analytics