UNIVERS  15.3
UNIVERS base processing software API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
Classes | Macros | Typedefs
DbBufStorage.H File Reference
#include <mix/wenv.h>
#include <mix/trans.h>
#include <mix/DynAr.H>
#include <mix/IntAr.H>
#include <mix/LongAr.H>
#include <ldb/DbTableTypes.H>
#include <mix/AnyAr.H>

Go to the source code of this file.

Classes

class  DbDataCluster
 
class  DbLineEntry
 
class  DbBufStorage
 

Macros

#define DB_CLUSTER_START_VOLUME   20
 
#define DB_CLUSTER_DEFAULT_QUANT   20
 
#define DB_CLUSTER_LIMIT_SIZE   (200*1024) /* 200K */
 
#define AnyAr   DbLineEntries
 
#define AnyType   DbLineEntry
 
#define AnyFormatSpec   "\n\t%d: %s, %s, data location=(%p %u), access id=%u"
 
#define AnyPrintList
 
#define AnyPrintf   fprintf(stderr,
 
#define AnyAr   DbDataClusters
 
#define AnyType   DbDataClusterPtr
 
#define AnyPrintItem   item->print_self()
 

Typedefs

typedef DbDataClusterDbDataClusterPtr
 
typedef UIntAr DbIndexAr
 

Detailed Description

Средства по работе с таблицей ЛБД в оперативной памяти на нижнем уровне. Обеспечивает доступ и хранение массива строк таблицы. Обладает следующими свойствами:

  1. строки таблицы могут храниться в различных областях памяти, то хранилище имеет не линейную, а кластерную списковую структуру.
  2. строки таблицы могут быть помечены как отсутствующие в памяти (не прочитаны с диска), как модифицированные пользователем (их содержимое на диске устарело).
  3. каждая строка присутствующая в памяти строка имеет идентификатор последней операции с ней, что дает возможность по мере надобности выгружать некоторые страницы из памяти, контролируя таким способом объем буферной памяти, используемой одной таблицей или всеми открытыми таблицами данных.

Номер строки в таблице БД отсчитывается от 0 и должен быть положительным. Допускается использовать last из DynAr.H для доступа к последней строке таблицы.

Macro Definition Documentation

#define AnyAr   DbLineEntries

Массив элементов-описателей строк таблицы ЛБД.

#define AnyAr   DbDataClusters

Массив элементов-описателей строк таблицы ЛБД.

#define AnyPrintList
Value:
i, item.get_loaded()? "loaded": "not loaded", \
item.get_changed()? "changed": "not changed", \
item.pDataClu, item.iLocalIndex, item.iAccessId
#define DB_CLUSTER_DEFAULT_QUANT   20

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

#define DB_CLUSTER_LIMIT_SIZE   (200*1024) /* 200K */

Предельный размер кластера (в смысле DbBufStorage::max_lines_in_cluster) в байтах, обеспечивающий эффективное (экономное и быстрое) использование памяти.

#define DB_CLUSTER_START_VOLUME   20

Количество элементов данных, под которые выделяется память в кластере по умолчанию.

Typedef Documentation

Массив кластеров данных.

typedef UIntAr DbIndexAr

Массив индексов строк.