關於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雲吧!

myswty.com進行回復 取消回復

電子郵件地址不會被公開。 必填項已用*標註