数据库与Key-value之间的类比

  记得老师课上讲过,结构化的数据的最大优点是可以将其看成一张二维表,而我们现在一般所接触到的用来处理结构化数据的数据库,都是由一张张二维表组成的。

  

    RDBMS: 二维表
    public String getValue(int id, Sring column);

    hbase:四维表(其本质上可以看做二维表的每个value值里又存储了一个二维表,类型与多维数组类似,也可百度搜索,小白鼠和毒药的题便于理解)
    public String getValue(String rowkey, String columnFamily, String column, long timestamp);

假设,我们现在,把这一张普通二维表的行值和列值当做Key值,将其对应的每个坐标点的值当做value值,那么整个张表是不是可以抽象成一个个的键值对的形式。

    Mysql:

        Key: id+ column

        Value:value

    hbase:

        Key:rowkey+cf+column+ts

        Value:value

  其实所有的数据库,都可以看做是Key-value的形式,查找数据,就是根据Key值找value值。

  在此基础上,我们把Key值和Value值封装成一个对象    

    HashMap:
        String Key
        Object Value

    BigTable:
        Object key
             针对二维表:key = Object(id, column)
             针对四维表:key = Object(id, cf, column, ts)
        Obejct value

  所以对于高维表也可以看成key-value的形式。

  

  

猜你喜欢

转载自www.cnblogs.com/wangxiaowei1997/p/10069007.html
今日推荐