gpt4 book ai didi

c++ - 如何在 Berkeley DB 中使用批量功能?

转载 作者:太空宇宙 更新时间:2023-11-04 14:24:53 28 4
gpt4 key购买 nike

目前我正在使用 Berkeley DB 并尝试了解内置的 C++ 批量功能。问题是我不知道如何使用此功能。没有我可以用来理解它的 C++ 示例(只有那些臃肿的 C 示例)或单元测试。

我特别想使用 DbMultipleKeyDataBuilder,它应该填充来自 std::map 的数据。

我应该如何初始化 DbMultipleKeyDataBuilder 的构造函数参数? Db::put 方法的数据参数会发生什么?它应该为空还是 NULL?

如果有人成功使用过这些类,能否请您提供一些小示例?

提前致谢。

问候,马丁

编辑:

好的,到目前为止我有以下代码

void
Storage::bulkInsert(
TransactionI& txn,
const Entries& entries) const
{
if(entries.size() <= 0)
return;

char buffer[1024];
memset(buffer, 0, 1024);
Dbt multipleDbts;
multipleDbts.set_ulen(1024 * sizeof(char));
multipleDbts.set_data(&buffer);
multipleDbts.set_flags(DB_DBT_USERMEM | DB_DBT_BULK);

DbMultipleKeyDataBuilder keyDataBuilder(multipleDbts);

Dbt dbtKey;
Dbt dbtValue;

for(typename Entries::const_iterator iter = entries.begin();
iter != entries.end(); ++iter)
{
uint64_t tmpKey = iter->first;
const std::string& tmpValue = iter->second;
keyDataBuilder.append(
&tmpKey, sizeof(uint64_t),
const_cast<char*>(tmpValue.c_str()), tmpValue.length()+1);
}
this->getDbHandle().put(txn.getDbTxn(), &multipleDbts, 0, DB_MULTIPLE_KEY);
}

但是 Dbt multipleDbts 的缓冲区呢?!这个缓冲区应该如何创建。想象一下我有键/值对,其中键是一个整数,值是一个不同长度的字符串?

最佳答案

马丁,

以防你没看到,Emily replied to this question在 BDB OTN 论坛上。这是获取信息的好地方,而且比 Stackoverflow 受到更严密的监控。您还会在那里找到一个活跃的开发人员社区。

问候,

戴夫

关于c++ - 如何在 Berkeley DB 中使用批量功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4814784/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com