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的唯一性,你需要另建一个表来处理。
    
  • 相关阅读:
    在阿里云服务器上安装MySQL
    mui中调用ajax时报abort错误
    IDEA根据数据库表生成pojo对象
    java.io.IOException: All specified directories have failed to load.
    mysql隔离级别
    java8新特性
    数据库语言分类
    Spring AOP 代码示例
    java NIO学习(二)
    java NIO学习(一)
  • 原文地址:https://www.cnblogs.com/didda/p/4861331.html
Copyright © 2011-2022 走看看