URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 5701
[ Назад ]

Исходное сообщение
"txt -> bdb"

Отправлено alexvs , 08-Сен-06 14:02 
Пытаюсь перегнать содержимое текстового файла с 10млн подобных записей:
7805f22e09a3581543ed0f96657c9e2c 1154586092
в bdb.
Использую простейший скрипт:
#!/usr/bin/perl
use DB_File;
$bdbp = tie %bdbh, 'DB_File', "./new_bd.dbm", O_RDWR|O_CREAT, 0644, $DB_HASH;
open FH, "< ./dump";
while(($line=<FH>)) {
    chomp $line;
    my ($key, $val) = split(/\t/,$line);
    $bdbp->put($key,$val);
}
undef $bdbp; untie %bdbh;
и получаю 4-х терабайтный файл и перл в корке в придачу.

В чём может быть проблема?


Содержание

Сообщения в этом обсуждении
"txt -> bdb"
Отправлено ACCA , 08-Сен-06 23:12 
>Пытаюсь перегнать содержимое текстового файла с 10млн подобных записей:
>7805f22e09a3581543ed0f96657c9e2c 1154586092
[...]
>и получаю 4-х терабайтный файл и перл в корке в придачу.

Не ошибся ли ты на 3 десятичных порядка?


>В чём может быть проблема?

Если отбросить баг в конкретной инсталляции, то может быть в алгоритме хэширования - с твоими данными оставляет слишком много свободный мест. Попробуц $DB_BTREE.


"txt -> bdb"
Отправлено alexvs , 10-Сен-06 13:01 
>>Пытаюсь перегнать содержимое текстового файла с 10млн подобных записей:
>>7805f22e09a3581543ed0f96657c9e2c 1154586092
>[...]
>>и получаю 4-х терабайтный файл и перл в корке в придачу.
>
>Не ошибся ли ты на 3 десятичных порядка?
Нет, хоть винт на 240Г, но размер файла именно 4Тб показывают все утилиты.

>>В чём может быть проблема?
>
>Если отбросить баг в конкретной инсталляции, то может быть в алгоритме хэширования
>- с твоими данными оставляет слишком много свободный мест. Попробуц $DB_BTREE.
>
Помогло установка bsize = 10240 (10Mb) вместо значения по умолчанию 256 byte.
Тестировалось на двух разных серверах: результат одинаков.