WackoWiki: BerkeleyDB ...

Home Page | Изменения | Новые Комменты | Пользователи | Каталог | Регистрация | Вход:  Пароль:  

Работа с Berkeley DB в PHP


http://www.php.net/manual/en/ref.dba.php – Функции доступа к Berkeley DB с примером.


Проверил на своем хостинге, у меня работает db3 (Yuri Makarov).
И даже очень шустро.



На моем хостинге все это заняло 0.086 сек.


Код Экшена для проверки производительности:


<?php
$start_time
= microtime();

$id = dba_open ("/tmp/test.db", "n", "db3");

if (!
$id) {
    echo
"dba_open failed\n";
    exit;
}

for (
$i = 1; $i <= 1000; $i++) {
   
dba_replace ("key_$i", "$i:BerkeleyDB3 is OK!", $id);
}

for (
$i = 1; $i <= 1000; $i++) {
   if (
dba_exists ("key_$i", $id)) {
      
$s = dba_fetch ("key_$i", $id);
      echo
"$s ";
      
dba_delete ("key_$i", $id);
   }
   else {
      echo
"Error: key_$i do't exist.";
      
dba_close ($id);
      exit;
   }
}

dba_close ($id);

$stop_time = microtime();
list(
$a_dec, $a_sec) = explode(" ", $start_time);
list(
$b_dec, $b_sec) = explode(" ", $stop_time);
$duration = sprintf("%0.3f", $b_sec - $a_sec + $b_dec - $a_dec);

echo
"<br>Start: $start_time\n";
echo
"<br>Stop:  $stop_time\n";
echo (
"<br>Processing took $duration seconds\n");
?>

Тесты Berkeley DB

YuriMakarov /25.07.2003 17:12/ Потестировал вчера на домашнем компе (AtlonXP+ 1500)


Простейший тест:
Создание базы, запись на диск коротких записей длиной ~50 байт
100К записей – 2.7 сек, ~9 Mb
500К записей – 15 сек, ~45 Mb


Причем большую часть времени видимо съел РНР.
После упаковки базы (dump + load) объем сократился в 1/2 – 2 раза.


Идеи по Ваке

Roman Ivanov:


В принципе, конечно, возможно переделать имеющийся DBAL так, что он будет кушать не SQL-запросы, а прямо предоставлять методы с параметрами.


Типа: SearchForTextInPages('text'), LoadPageByTag('tag') и т.д.


Тогда реализация BDB-слоя станет возможной, но сильно затруднится написание других слоёв.


Кроме того, мне лениво это делать, и я не уверен, что это получится хорошая архитектура =)


Кусо Мендокуси: Ээ... пока что я боюсь этого. Можно написать мощнецкий дбал, связав себя по рукам и ногам в разработке акшнов. Придётся думать, как реализовать тот или иной акшн сразу в двух БД. мне пока не нравится. Но, конечно, в первую очередь — некогда. Да и в Нпж нам не пригодится совсем.


Yuri Makarov: Может быть есть смыл хотя бы часть системы сделать на Berkeley DB?


Есть 2 критичные вещи:

  1. Скорость. Можно критичные по скорости индексы хранить в db (не знаю есть ли они у вас).
  2. Объем базы My SQL?. Хостинг баз дорого стоит, а BDB не стоит ничего (просто файл на диске). Можно скажем сами страницы (и прочие объемные вещи) хранить в db, а в базе хранить только ссылки. Это уменьшит размер базы My SQL?, не исключено, что увеличит скорость ее работы.

Наверное такие изменения не сильно затронут остальной код?


RomanIvanov Нет, никакого смысла в этом нет, так как dba – не часть php-core, а расширение, которого на системе вполне может не быть. Поэтому полагаться на него глупо.


НеизвестныйАноним: Так же как и My SQL?. Он ведь не у всех есть. Вообще, попытка переноса Wacko Wiki например на mssql наталкивается на повсеместное использование специфичного именно для My SQL? диалекта SQL. К тому же инсталляционная страничка вообще не использует db/mysql.php. Ужас какой-то.


 
Файлов нет. [Показать файлы/форму]
Комментариев нет. [Показать комментарии/форму]
Donate
Время работы: 1.900 s
Использовано памяти: 2.644 Mb