zoukankan      html  css  js  c++  java
  • 大数据入门第十五天——HBase整合:云笔记项目

    一、功能简述

      1.笔记本管理(增删改)

      2.笔记管理

      3.共享笔记查询功能

      4.回收站

      效果预览:

      

    二、库表设计

        1.设计理念    

        将云笔记信息分别存储在redis和hbase中。

        redis(缓存):存储每个用户的笔记本信息

        hbase(持久层):存储用户的笔记本信息、笔记本下的笔记列表、笔记具体信息。

        2.设计概要

        redis:  

        

        hbase:

        

        // 分别是笔记本和笔记

        3.hbase建表语句

    create ‘nb’,’nbi’
    create ‘n’,’ni’,’ci’

       // 回顾建表语句,hbase的列是可以动态增删的!

        redis回顾,参考之前随笔http://www.cnblogs.com/jiangbei/p/7255994.html

     三、功能列表

      1.登录

        简单登录,不再赘述(其中的加载properties等可以使用spring自带的工具类/hutool工具类)

      2.笔记本

        查询所有笔记本

    1、在js端,通过页面全局加载方法($(function(){})),调用ajax调用后台,查询用户所有笔记本列表
    2、后台通过登录名loginName从redis中查询出笔记本列表信息,返回给前台。如果redis中查不到,在hbase中查询,如果hbase中查询到,恢复redis信息。
    3、设置特殊笔记本的rowkey
    回收站
    rowkey:用户名_0000000000000
    收藏夹
    rowkey:用户名_0000000000001
    活动笔记
    rowkey:用户名_0000000000002
    4、初始化判空
    View Code

        新增笔记本

    1、前台输入笔记本名
    2、前台向后台传入的参数
    笔记本的名字
    3、后台封装
    a、从session中获取用户名
    b、创建时间戳
    c、封装rowkey
    d、保存到redis
    key:用户名
    value:list<rowkey|笔记本的名字|创建时间|状态>
    步骤:
    1、获取jedis连接
    2、jedis.rpush(用户名, rowkey|笔记本的名字|创建时间|状态)
    3close
    e、保存到hbase
    rowkey:封装的rowkey
    列:笔记本名字,创建时间、状态
    步骤:
    1、创建表链接
    2、创建put(rowkey)
    3、put.add(列)
    4table.put(put)
    5close
    f、事务:
     当redis失败后,所有步骤停止
     当redis成功,hbase成功,即成功
     当redis成功,hbase失败,删除redis的内容(lrem)
    View Code

        删除笔记本

    1、前台传过来的参数:笔记本的rowkey,笔记本的名字
    2、后台:
    a、action查询笔记本下是否有笔记,有笔记返回false
    3、删除redis
    a、拼串:rowkey|笔记本名|时间戳|状态
    b、jedis.lrem(用户名,删除几次,rowkey|笔记本名|时间戳|状态)
    4、删除hbase
    a、获取rowkey
    b、删除
    5、事务:
    删除都成功
    redis不成功,都不成功
    redis成功,hbase不成功,增加redis
    View Code

        修改笔记本

    1、前台输入:新的笔记本的名字
    2、前台向后抬传入的参数:新的笔记本的名字,旧的笔记本的名,rowkey
    3、后台的action处理
    a、分割rowkey,获取时间戳,用户名
    4、redis
    a、拼装旧的串:rowkey|旧的名字|时间戳|状态
    b、拼新串:rowkey|新的名字|时间戳|状态
    c、删除旧的串:jedis.lrem( 用户名,几次,旧串)
    d、加新的串:jedis.rpush(用户名,新串)
    5、hbase
    通过rowkey设置新的名字
    封装put(rowkey)
    put.add(新的名字)
    table.put(put);
    6、事务:
    redis成功,hbase成功
    redis失败,都失败
    redis成功,hbase失败,删除redis的新的名字,添加旧的名字
    View Code

      3.笔记

        查询所有笔记

    1、点击笔记本时,查询笔记本下的所有笔记
    2、通过笔记本rowKey到redis中查询笔记列表,如果redis查询不到,从hbase中查询,恢复redis。
    3、初始化判空
    View Code
    1、前台传过来的参数:笔记本的rowkey
    2、后台处理hbase
    a、创建nb表的表链接
    b、创建get(笔记本的rowkey)
    c、处理result结果集,json
    d、将json转换为list
    e、处理list中的值,用“|”分割每列,封装到n个note中
    f、返回前台
    View Code

        新增笔记

    1、前台输入的参数:笔记的名字
    2、前台传到后台的参数:笔记本的rowkey,笔记的名字
    3、action的处理
    a、创建时间戳
    b、用用户名和时间戳拼装笔记的rowkey
    4、后台处理hbase的nb表
    将笔记添加到笔记本的笔记列表中
    a、获取表链接
    b、取出笔记本的历史笔记列表
    c、将历史笔记列表中添加新的笔记信息
    d、创建put(笔记本的rowkey)
    e、put.add(新的笔记列表)
    f、close
    5、hbase的n表
    a、将笔记的信息存到n表中
    View Code

        笔记详情

    1、前台传到后台的参数:笔记的rowkey
    2、后台处理:
    查询笔记表
    View Code

        修改笔记

    1、前台输入的参数:笔记的名字,笔记的内容
    2、前台向后台传的参数:笔记本的rowkey、笔记的rowkey、新笔记的名字、笔记的内容、旧的笔记的名字
    3、修改nb表
    a、获取nb表的表链接
    b、查询历史的笔记信息
    c、将笔记信息装成list
    d、拼装旧的笔记信息的串
    e、list.remove(旧的笔记信息的串)
    f、拼装新的笔记信息的串
    g、list.add(新的笔记信息的串)
    h、添加操作htable.put().
    4、修改n表
    重新添加笔记名字和笔记内容
    5、事务:
    a、nb表失败,都失败
    b、都成功
    c、nb成功,n失败,还原nb表的笔记列表
    View Code

        迁移笔记

    1、前台传过来的参数:旧的笔记本的rowkey,新的笔记本的rowkey,笔记的rowkey,笔记的名字
    2、后台处理
    拼装笔记信息的串
    3、修改旧的笔记本
    a、将笔记本下的笔记列表查出来
    b、删除笔记信息
    4、修改新的笔记本
    a、将笔记本下的笔记列表查出来
    b、添加笔记信息
    5、事务:
    a、都成功
    b、都失败
    c、第一个操作成功,第二个操作失败,还原第一个操作
    View Code
  • 相关阅读:
    Sublime 设置移动光标快捷键
    Reverse Linked List II
    Reverse Nodes in K-Group
    Sort Colors
    Swap Nodes in Pairs
    Intersection of Two Linked Lists
    Word Break
    Unique Binary Search Tree
    Maximal Square
    Happy Number
  • 原文地址:https://www.cnblogs.com/jiangbei/p/8496153.html
Copyright © 2011-2022 走看看