|
|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Valentin Nechayev 2:5020/400 19 Jan 2001 16:32:48 To : Dmitriy Kyrhlarov Subject : Re: as usual... sendmail :-) -------------------------------------------------------------------------------- >>> Dmitriy Kyrhlarov wrote: >> DK> И еще. При hash, как я понял, ограничение в сколько-то там килобайт на >> DK> размер файла. >> Чушь. DK> А кто такие эти hash, dbm и b-tree. В смысле какой где применяется и DK> почему. Есть такая ста-арая;)) юниксовая технология, которая была реализована в виде dbm, потом ndbm, потом Berkeley DB (она же newdb), потом гнушники сделали gdbm, а кто-то еще - sdbm и odbm, потом Sleepycat сделал db2 и db3 как продолжение newdb... Суть такая: есть хранилище данных в виде map'а, он же хэш, он же ассоциативный массив, и позволяет: 1) записать данные в виде пары ключ - значение, 2) прочитать значение по известному ключу, 3) удалить оные, 4) вывести в произвольном порядке, 5) вывести в отсортированном порядке (это умеет среди перечисленных только newdb с потомками), причем ключ и значение заданы как произвольные последовательности байтов. Sendmail использует от этого всего единственную функцию - указанную выше под пунктом 2 - а makemap и newaliases строят таблицы для sendmail'а. Так называемый keyed database в sendmail'е работает поверх чего угодно, что умеет получить ключ и выдать в ответ значение, если оно есть, или сигнал отсутствия значения, или код ошибки при попытке получить оное; это может быть база указанного формата, запуск внешней программы, и т.п. dbm - это значит базы локального для данного юникса формата hash, доступ к которым идет через ndbm API. hash - базы newdb (доступ через newdb API) формата hash. btree - базы newdb формата btree (который позволяет получать значения в порядке сортировки ключей, что, однако, sendmail не использует). При сборке бинаря задается дефолтный формат, который будет использоваться, если не задан формат в описании конкретной сендмыловой keyed database. Hа солярке, например, это до сих пор dbm. Hа фре - hash. Обычно никто не меняет формат базы алиасов (хотя можно написать "O AliasFile=dbm /etc/aliases" и будет работать, но нафига?) и берут hash для остальных. Для баз меньше чем ~2000 ключей hash эффективнее. /netch --- ifmail v.2.15dev5 * Origin: Lucky Netch Incorporated (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/9138b58f552e.html, оценка из 5, голосов 10
|