Implement bulkInsert for rocksdb

Former-commit-id: e9abae77d6ae18e21d7dac0cbdd563f572ac3d03
This commit is contained in:
John Sully 2021-06-01 19:17:40 +00:00
parent c0c3d7542f
commit e2000a6d3d
2 changed files with 13 additions and 0 deletions

View File

@ -38,6 +38,17 @@ void RocksDBStorageProvider::insert(const char *key, size_t cchKey, void *data,
++m_count;
}
void RocksDBStorageProvider::bulkInsert(sds *rgkeys, sds *rgvals, size_t celem)
{
auto spbatch = std::make_unique<rocksdb::WriteBatch>();
for (size_t ielem = 0; ielem < celem; ++ielem) {
spbatch->Put(m_spcolfamily.get(), rocksdb::Slice(rgkeys[ielem], sdslen(rgkeys[ielem])), rocksdb::Slice(rgvals[ielem], sdslen(rgvals[ielem])));
}
m_spdb->Write(WriteOptions(), spbatch.get());
std::unique_lock<fastlock> l(m_lock);
m_count += celem;
}
bool RocksDBStorageProvider::erase(const char *key, size_t cchKey)
{
rocksdb::Status status;

View File

@ -34,6 +34,8 @@ public:
virtual void beginWriteBatch() override;
virtual void endWriteBatch() override;
virtual void bulkInsert(sds *rgkeys, sds *rgvals, size_t celem) override;
virtual void batch_lock() override;
virtual void batch_unlock() override;