关于KVDB存储数据的几点感想

本文主要是关于在Sina App Engine(SAE)提供的KVDB数据库存储数据的几点感想。

KVDB数据库相较MySQL和Storage容量要大的多,因为就单个应用来说,MySQL容量为5G,Storage为10G(可建5个domain,单个2G),而KVDB则是100G,支持10亿条记录,单条记录不能超过4M。

KVDB是非关系的,目前不支持联合查询,不知道以后会不会。人个觉得它单独使用或者配合MySQL来用都很不错。

单独使用的话,因其是key-value型的,一个key对应一个value,所以就要在它俩上做足功夫。 key可以通过设置前缀来快速查询访问,而value则可存储为JSON或XML格式的,一来方便阅读,二来方便管理。

配合MySQL的话自不必多说,因MySQL是关系的,支持复杂的查询语句,此时用KVDB存储文件内容就好。

另,由于以上所提及的三种存储方式只有Storage有个类似可从外部的服务S3,而MySQL和KVDB都只能在SAE平台内部访问,但对于程序员来说,都可以写程序实现从外部通过REST操作各种数据。

《关于KVDB存储数据的几点感想》上有33条评论

  1. 首先KVDB存储GIF只会保存一帧,PNG图片会失真,JPG会掉数据
    具体代码如下
    $spic=’saekv://img/head23.jpg’;
    if (!file_exists($spic)){
    $pic=file_get_contents(“http://d1.sina.com.cn/201112/31/386959_lady_170100_1231.jpg”);
    if (writeover($spic,$pic)){//fwrite写入
    echo “写入saekv://img/head3.png 成功!”;
    }else{
    echo “写入saekv://img/head.jpeg 失败!请刷新下?”;
    }
    }else{
    header(“Content-type: image/jpeg”);
    $pc=file_get_contents($spic);
    echo $pc;//这样也能显示
    //echo imagejpeg(imagecreatefromstring($pc));//或这样也可以…….那我要这个干啥?多余i。。哈哈
    }
    function writeover($fileName, $data, $method = ‘w’, $ifLock = true, $ifCheckPath = true, $ifChmod = true) {
    $handle = fopen($fileName, $method);
    $writeCheck = fwrite($handle, $data);
    fclose($handle);
    return $writeCheck;
    }
    至于KVDB为什么不适合做缓存,@ElmerZhang:KVDB不适合做缓存,具体原因我想是因为Memcache的效率高于KVDB吧

    1. mc比KVDB贵了不止一点啊…而且效率差不多…对人而言没影响…
      至于图床用得着KVDB么???
      10G的图床不够用?那就直接企业sina云吧!

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注