對於C++用戶着想,繼承人如何使用伯克利C++ API,這既是無證,和具有零倍的例子來做到這一點。它雖然工作得很好!
創建DBT(數據庫升,Im不使該向上)以保持存儲器緩衝器的保持:
無效* BUF =新無符號字符[BUFFERSIZE]; dbt = new Dbt; dbt-> set_data(buf); dbt-> set_ulen(bufferSize); dbt-> set_flags(DB_DBT_USERMEM);
準與一個DBMultipleKeyDataBuilder:
DBMultipleKeyDataBuilder * DBI =新DBMultipleKeyDataBuilder(DBT);
您的附加鍵和值對一次一個,直到完成或緩衝區滿
DBI->追加(curKeyBuf,curKeyLen,curDataBuf,curDataLen); ...(其它更多的這些)...
使用您的DB *分貝,如果你在TXN希望交易和批量寫: DB->放(TXN,DBT,NULL,DB_MULTIPLE_KEY) ;
delete dbi;
我錯過了很多細節,例如檢查緩衝區已滿或足夠大以容納一個KV對。
DBMultipleKeyDataBuilder只能使用一次,但一個真正有效的實現將保留一個緩衝區Dbt對象池並重用它們。您也可以使用這些Dbts進行批量讀取,因此可以使用它們的公共池。
可憐的你,是C新來的,任務是應付Berkeley DB API。 – 2011-03-07 09:32:04
是的!在我來實習之前從未聽說過伯克利DB。 – kevin 2011-03-08 01:52:04