[Moscow.pm] А кто с berkeleyDB работает?

Ivan Petrov i.petro.77.00 на gmail.com
Вт Июн 14 06:44:48 PDT 2011


On 16:23 Tue 14 Jun     , Oleg Alistratov wrote:

> On 14.06.2011 15:51, Ivan Petrov wrote:

>> я думал локи нужны когда мы делаем чтение-модификацию-запись
>> а чистая запись поля атомарна

> С какими флагами базу открываете?

my $env = BerkeleyDB::Env->new(              
                -Home   => dirname($file),
                -Flags    => BerkeleyDB::DB_CREATE() 
                                | BerkeleyDB::DB_INIT_CDB()
                                | BerkeleyDB::DB_INIT_MPOOL()
        );
my $db = BerkeleyDB::Hash->new(
            -Filename   => $file,
            -Env        => $env,
        );


блокировки в коде (как в екзамлах) используются только когда крутим в
БД какие-то счетчики (вообще в одном месте, не особо и нужно).

Запись происходит так

$db->db_put('some', Dumper({ a => 'что-то', b => 'что-то'}));

строго в одном месте. 

однако натыкаемся на то что иногда в случае сбоя записанный хеш не
содержит a или b, либо содержит какой-то микс


Подробная информация о списке рассылки Moscow-pm