caffe中數據庫的設計

Caffe中數據庫在include/util/db.hpp中定義三個接口:Cursor,Transacation,DB。數據庫

Cursor 爲遍歷數據庫用的遊標,SeekToFirst定位到數據庫開始的位置,Next把遊標指向下一個位置,key,value方法返回鍵和值,valid方法檢查遊標的有效性。後端

Transaction定義事物控制,Put向數據庫中加入對象,Commit提交事務。ui

DB 爲數據庫入口,Open打開一個數據庫,Close關閉數據庫。 NewCursor建立一個新的遊標。NewTransacation建立一個新的事務。google

 

GetDB有兩種形態,一種是依據枚舉量指定後端,一個是用字符串指定後端。後端有leveldb和lmdb。spa

 

using namespace caffe;  // NOLINT(build/namespaces)
using std::string;
using namespace std;對象


int main(int argc, char** argv) {接口

  ::google::InitGoogleLogging(argv[0]);事務

  auto db = db::GetDB("lmdb");
  if (db == nullptr) {
      printf("Create Database failed\n");
      return -1;
  }字符串

  db->Open("examples/mnist/mnist_train_lmdb", db::READ);string

  auto cursor = db->NewCursor();
  while (cursor->valid()) {
      cout << cursor->key() << cursor->value() << endl;
  }


  printf("Succes\n");

  delete db;
  return 0;

}

相關文章
相關標籤/搜索