zoukankan      html  css  js  c++  java
  • Cassandra 数据库设计

    Cassandra 2.*
    CQL3.1
    最近更新:2015-10-30

    索引的设计

    在Cassandra中经常会发现,索引不够用,不好用,各种不强大。
    比如,我关注的人的需求uid + follow 作为主键,没人觉得有什么问题,但是查看我关注的人的时候,需要用关注的时间排序,这就麻烦了。
    目前我采用的一个办法是,再建立一张表保存uid ,follow,time(关注日期)而这张表使用,uid + time作为主键,这样就可以通过先查询这张表来排序。
    Note: 唯一索引一定用主表实现,否非常不方便,因为主表经常要增删改查,索引表主要是增、查、删,几乎不改。

    可变排序字段

    到目前为止我所了解的Cassandra排序,都需要基于主键,而主键是不允许UPdate的,所以,如果你需要一个可以编辑又可以排序的字段,
    在处理数据的时候,需要先delete再insert。

    timeuuid 成为第二主键

    由于timeuuid的唯一性,很多场合下,你需要按照时间排序,又希望主键具有唯一性的时候,可以使用timeuuid。
    比如我的好友,按添加时间排序

    create table user (
        uid int,
        create_time timeuuid,
        friend_id int,
        primary key(uid, create_time)
    );
    --这样,你可以使用uid + create_time进行删除操作,而不用担心删错数据,因为timeuuid是唯一的。同时,排序顺序是按照create_time来进行的。
    --而uid 和 friend_id的唯一性,你需要另建一个表来处理。
    
  • 相关阅读:
    struts2的@Result annotation 如何添加params,并且在页面取值
    spring @Entity @Table
    @Results( 中 params 怎么用
    Java三种技术架构
    python 内存管理
    wxpyhon 鼠标事件例子
    常用wxPython事件描述
    wxpython 拖动界面时进入假死状态(未响应)解决方法
    python 的一些高级编程技巧
    python 访问器@property的使用方法
  • 原文地址:https://www.cnblogs.com/didda/p/4861331.html
Copyright © 2011-2022 走看看