Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
VPS/VDS серверы. 30 локаций на выбор

Серверы VPS/VDS с большим диском

Хорошие условия для реселлеров

4VPS.SU - VPS в 17-ти странах

2Gbit/s безлимит

Современное железо!

Бесплатный конструктор сайтов и Landing Page

Хостинг с DDoS защитой от 2.5$ + Бесплатный SSL и Домен

SSD VPS в Нидерландах под различные задачи от 2.6$

✅ Дешевый VPS-хостинг на AMD EPYC: 1vCore, 3GB DDR4, 15GB NVMe всего за €3,50!

🔥 Anti-DDoS защита 12 Тбит/с!

dbminit, fetch, store, delete, firstkey, nextkey

НАЗВАНИЕ
dbminit, fetch, store, delete, firstkey, nextkey - Подпрограммы БД

СИНТАКСИС


	typedef struct {

	        char *dptr;

	        int dsize;

	} datum;

	 

	dbminit(file)

	char *file;



	datum fetch(key)

	datum key;



	store(key,content)

	datum key,content;



	delete(key)

	datum key;



	datum firstkey()



	datum nextkey(key)

	datum key;



	dbmclose()

ОПИСАНИЕ
Все указанные функции работают в базе данных с парами значений "ключ-содержимое". Они способны манипулировать с очень большими (в миллиард блоков) базами данных и адресоваться к ключевым данным за одно или два обращения к файловой системе. Доступ к функциям открывается через опцию загрузчика -ldbm. "Ключи" (keys) и "содержимое" (contents) описываются типом datum. Этому типу соответствует строка размером dsize, на которую указывает указатель dptr. Допустимы как строки в формате ASCII, так и произвольные двоичные данные. База данных располагается в двух файлах. Один файл представляет собой каталог с битовым массивом и расширением .dir. Вся остальная информация содержится во втором файле с расширением .pag. Для того, чтобы база данных стала доступной, она должна быть открыта функцией dbminit. К моменту вызова этой функции файлы с расширениями .dir и .pag должны существовать. (Пустая БД создается с пустыми файлами.)

После открытия к данным, хранящимся под ключом, открывается доступ по fetch; запоминаются под ключом они с помощью store. Ключ (и связанное с ним содержимое) удаляется подпрограммой delete. Разрешен простой перебор всех ключей, хранящихся в базе, в практически произвольном порядке с помощью функций firstkey и nextkey. Функция firstkey возвращает первый ключ в БД. Для любого ключа в БД функция nextkey возвращает следующее по порядку значение ключа. Программа перебора ключей в БД:


	for (key=firstkey(); key.dptr!=NULL; key=nextkey(key))

Закрытие БД производится функцией dbmclose. БД должна закрываться перед открытием новой.

ДИАГНОСТИКА
Все функции, возвращающие значения типа int, сообщают об ошибках отрицательными значениями. Код возврата, равный 0, означает успех. Подпрограммы, возвращающие значения типа datum, сообщают об ошибках нулевым значением указателя dptr.

ЗАМЕЧАНИЯ
Файл .pag может содержать пустоты, поэтому его видимый размер почти в четыре раза превышает фактический. В предыдущих системах для этих пустот создавались реальные файловые блоки. Такие файлы не копируются обычными средствами (cp, cat, tp, tar, ar) без заполнения пустот. Указатели dptr, возвращаемые этими подпрограммами, адресуют к статической памяти, которая изменяется при последующих обращениях. Сумма длин значений в паре "ключ/содержимое" не должна превышать размер внутреннего блока (1024 байта). Более того, все пары "ключ/содержимое", связанные в цепочку, должны помещаться в одном блоке. Функция store возвращает ошибку в том случае, если дисковый блок заполнен неделимыми данными.

Функция delete физически не освобождает файловое пространство, хотя и делает его доступным для последующего использования. Порядок расположения ключей, выдаваемых функциями firskey и nextkey, определяется алгоритмом хеширования, и ничем иным.

VPS в России, Европе и США

Бесплатная поддержка и администрирование

Оплата российскими и международными картами

🔥 VPS до 5.7 ГГц под любые задачи с AntiDDoS в 7 локациях

💸 Гифткод CITFORUM (250р на баланс) и попробуйте уже сейчас!

🛒 Скидка 15% на первый платеж (в течение 24ч)

Скидка до 20% на услуги дата-центра. Аренда серверной стойки. Colocation от 1U!

Миграция в облако #SotelCloud. Виртуальный сервер в облаке. Выбрать конфигурацию на сайте!

Виртуальная АТС для вашего бизнеса. Приветственные бонусы для новых клиентов!

Виртуальные VPS серверы в РФ и ЕС

Dedicated серверы в РФ и ЕС

По промокоду CITFORUM скидка 30% на заказ VPS\VDS

Новости мира IT:

Архив новостей

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 7861149
Пресс-релизы — pr@citforum.ru
Обратная связь
Информация для авторов
Rambler's Top100 TopList This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2019 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...