google / google/leveldb

Integrate leveldb and protobuf in C++ set/get operations

Open
#971 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
C++
Stars
39.4k
Forks
8.2k
PR merge metrics
No merged PRs in 30d

Description

Hi !

I'd like to make a POC of using leveldb in order to store key-value table of different data types in protobuf format.

So far I was able to open the database file, and I also saw the get function with the following signature :

virtual Status Get(const ReadOptions& options, const Slice& key, std::string* value)=0

I understand that the value is actually refers to a binary string like vector and not regular alphanumeric string, so I guess it can fit for multi type primitives like string, uint, enum) but how can it support struct/class that represent protobuf layout in c++ ?

So this is my proto file that I'd like to store in the leveldb:

```
message agentStatus {
string ip = 1;
uint32 port = 2;
string url = 3;
google.protobuf.Timestamp last_seen = 4;
google.protobuf.Timestamp last_keepalive = 5;
bool status = 6;
}
```

and this is my current POC code. How can I use the get method to access any of the variables from the table above ?

```
#include

void main () {

std::string db_file_path = "/tmp/data.db";
leveldb::DB* db;
leveldb::Status status;

leveldb::Options options;
options.create_if_missing = false;
status_ = leveldb::DB::Open(options, db_file_path, &db);
if (!status_.ok()) {
throw std::logic_error("unable to open db");
}
```

Thanks !

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.