欢迎您! | 积分 | 主页 |
注册 | 登陆 |
官方QQ群: 8807551

Cassandra搭建Blog程序后台

发布日期:2010-03-17 10:38:35.0 发布讲师:don 浏览量:228
课程类别:IT电脑开发
学习标签: cassandra 搭建 Blog 程序 后台
免费在线正则表达式验证工具! 免费在线HTML/JS/CSS调试工具!


点击放大图片-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程序的后台。

参考

WTF is a SuperColumn? An Intro to the Cassandra Data Model


验证码:验证码

网店名字Don的知识网店
网店店主don
相关课程(共8个):
讲师:don 浏览数:123
2010-07-08 23:35:23.
讲师:don 浏览数:69
2010-06-29 09:31:33.
讲师:don 浏览数:74
2010-06-20 11:52:16.
讲师:don 浏览数:179
2010-06-06 17:24:27.
讲师:don 浏览数:130
2010-06-01 01:33:24.
讲师:don 浏览数:129
2010-05-28 10:56:52.
讲师:don 浏览数:90
2010-05-24 09:58:46.
讲师:don 浏览数:109
2010-05-17 22:02:29.



©2008 - 沪ICP备07037037号 - 简历 - SQL管理 - 邮箱登陆 - RSS阅读