LINUX.ORG.RU

GNU dbm 1.14

 ,


2

3

Первым релизом проекта GNU 1-го января 2018-го года стал релиз GNU dbm 1.14 — библиотеки функций для работы с базами данных.

В этом релизе:

  • Введена проверка того, что созданные БД воспроизводимы байт в байт, это также оставило в прошлом 2 ошибки:
    • когда при выделении заголовочных блоков файла БД неиспользуемая память заполняется нулями;
    • когда при расширении mmap'нутой области памяти добавляется область заполненная нулями.
  • Исправлена сборка с опцией --enable-gdbm-export.
  • gdbm_error глобальной переменной потока теперь безопасен.
  • Исправлены все возможные нарушения сегментирования в gdbm_setopt.
  • Исправлена обработка группы заголовков в выводе --help.

>>> Скачать

★★★★★

Проверено: maxcom ()
Последнее исправление: cetjs2 (всего исправлений: 3)

Где примеры кода? Интересно было бы для опыта игру ruletka на С и dbm переписать с сохранением всех возможностей. ХЗ, начну ли...

cetjs2 ★★★★★
()
Ответ на: комментарий от knovich

libgdbm используют, например, libaprutil, avahi, courier, sqwebmail, couriergrey, elk, freeradius, fsvs, gnarwl, ifcico, ifgate, rep, magicrescue, maildrop, man-db, metview, modem-manager-gui, nis, perdition, pypy, qsf, sjeng, sortmail,... и т.д.

А нужна эта библиотека для этого:

   GNU dbm (gdbm) is a library of database functions that use extensible hashing and works similar to the standard
   UNIX dbm functions. These routines are provided to a programmer needing to create and manipulate a hashed
   database. (gdbm is NOT a complete database package for an end user.)

   The basic use of gdbm is to store key/data pairs in a data file. Each key must be unique and each key is paired
   with only one data item. The keys can not be directly accessed in sorted order. The basic unit of data in gdbm
   is the structure:
  typedef struct {
             char *dptr;
             int  dsize;
          } datum;

   This structure allows for arbitrary sized keys and data items.

   The key/data pairs are stored in a gdbm disk file, called a gdbm database. An application must open a gdbm
   database to be able manipulate the keys and data contained in the database. gdbm allows an application to have
   multiple databases open at the same time. When an application opens a gdbm database, it is designated as a
   reader or a writer. A gdbm database can be opened by at most one writer at a time. However, many readers may
   open the database simultaneously. Readers and writers can not open the gdbm database at the same time.

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от saahriktu

Ясно, спасибо. Не знал, что есть стандартное решение. Чего только не придумают.

knovich
()
Ответ на: комментарий от cetjs2

да ну не надо выдумывать, кто ж это не умеет байты в файлы класть, такое ляпнуть надо хорошенько упороться)

trashymichael ★★★
()
Ответ на: комментарий от cetjs2

трудно сегодня найти язык не поддерживающий какой-либо более-менее распространенный формат, взять хотя бы тот же json - вот и плоская база данных

trashymichael ★★★
()
Ответ на: комментарий от trashymichael

gdbm в первую очередь для си писалась. во времена unix dbm никакого json не было... даже есть совместимость с unix dbm у gdbm.

cetjs2 ★★★★★
()
Последнее исправление: cetjs2 (всего исправлений: 1)
Ответ на: комментарий от anonymous

Ассоциативный массив целиком хранится в памяти, здесь же данные хранятся на диске и не загружаются целиком в память.

sena ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.