]>
git.proxmox.com Git - ceph.git/blob - ceph/src/rocksdb/examples/column_families_example.cc
1 // Copyright (c) 2011-present, Facebook, Inc. All rights reserved.
2 // This source code is licensed under both the GPLv2 (found in the
3 // COPYING file in the root directory) and Apache 2.0 License
4 // (found in the LICENSE.Apache file in the root directory).
9 #include "rocksdb/db.h"
10 #include "rocksdb/options.h"
11 #include "rocksdb/slice.h"
14 std::string kDBPath
= "C:\\Windows\\TEMP\\rocksdb_column_families_example";
16 std::string kDBPath
= "/tmp/rocksdb_column_families_example";
19 using ROCKSDB_NAMESPACE::ColumnFamilyDescriptor
;
20 using ROCKSDB_NAMESPACE::ColumnFamilyHandle
;
21 using ROCKSDB_NAMESPACE::ColumnFamilyOptions
;
22 using ROCKSDB_NAMESPACE::DB
;
23 using ROCKSDB_NAMESPACE::DBOptions
;
24 using ROCKSDB_NAMESPACE::Options
;
25 using ROCKSDB_NAMESPACE::ReadOptions
;
26 using ROCKSDB_NAMESPACE::Slice
;
27 using ROCKSDB_NAMESPACE::Status
;
28 using ROCKSDB_NAMESPACE::WriteBatch
;
29 using ROCKSDB_NAMESPACE::WriteOptions
;
34 options
.create_if_missing
= true;
36 Status s
= DB::Open(options
, kDBPath
, &db
);
39 // create column family
40 ColumnFamilyHandle
* cf
;
41 s
= db
->CreateColumnFamily(ColumnFamilyOptions(), "new_cf", &cf
);
45 s
= db
->DestroyColumnFamilyHandle(cf
);
49 // open DB with two column families
50 std::vector
<ColumnFamilyDescriptor
> column_families
;
51 // have to open default column family
52 column_families
.push_back(ColumnFamilyDescriptor(
53 ROCKSDB_NAMESPACE::kDefaultColumnFamilyName
, ColumnFamilyOptions()));
54 // open the new one, too
55 column_families
.push_back(
56 ColumnFamilyDescriptor("new_cf", ColumnFamilyOptions()));
57 std::vector
<ColumnFamilyHandle
*> handles
;
58 s
= DB::Open(DBOptions(), kDBPath
, column_families
, &handles
, &db
);
61 // put and get from non-default column family
62 s
= db
->Put(WriteOptions(), handles
[1], Slice("key"), Slice("value"));
65 s
= db
->Get(ReadOptions(), handles
[1], Slice("key"), &value
);
70 batch
.Put(handles
[0], Slice("key2"), Slice("value2"));
71 batch
.Put(handles
[1], Slice("key3"), Slice("value3"));
72 batch
.Delete(handles
[0], Slice("key"));
73 s
= db
->Write(WriteOptions(), &batch
);
77 s
= db
->DropColumnFamily(handles
[1]);
81 for (auto handle
: handles
) {
82 s
= db
->DestroyColumnFamilyHandle(handle
);