Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Курсовые проекты » Реалізація високоуровнего інтерфейсу навколо бази даних Berclee DB

Реферат Реалізація високоуровнего інтерфейсу навколо бази даних Berclee DB





типами даних.

База даних або об'єкт оточення

Цей об'єкт фактично являє собою абстракцію бази даних: є контейнером для індексованих таблиць, відповідає за їх відкриття, доступ, а також проводить над ними службові операції експорту тощо На діаграмі це виглядає так:

В 

Опис класу наведено нижче:

class hbEnv

{

DbEnv * env;

bool is_native_log;

Log * LogObj;

//! Шлях до файлів

char * path;

//! Кількість баз - ламає вектором писати - тоді довше Компільо

int sz;

//! Інішіалайзери (у кількості рівній sz)

hbInit * Dbinits;

hbInit * Idxinits;

int idxsz;

char * schemaid;// вже перевіряється, при відкритті зі словника чит. оригин. і порівнюється

В 

//! Мутекс для транзакцій

pthread_mutex_t mx;

В 

uint dltype;

//! in secs interval for checkpoints and logarchs

ulong dldelay, bdbchkpoint, bdblogrem;

В 

static void * thf_deadrs (void *);

static void * thf_chkpnt (void *);

static void * thf_logarc (void *);

pthread_t pth_deadrs, pth_chkpnt, pth_logarc;

В 

ushort stflags;

ushort stflags;

В 

bool IsOpenflag;

ushort state;

TDictionary dict;

// Char * ConfFile;// ім'я конф. файлу може перевизначити в нащадках/але навіщо

В 

FILE * OpenOutputStream (const char * fn, const char * mode);

void CloseOutputStream (FILE * f);

// видаляє всі __ db.00x файли т.к там зберігається хеш, через якого може невірно спрацювати перевірка індексів

protected:

//! Самі тейбл, індексів тут немає, вони в самих тейбл

hbPTable ** dbs;

В 

void SetSchemaid (const char * File) {If (schemaid) free (schemaid); schemaid = strdup (File);}

В 

// тейбл будуть створюватися в конструкторі нащадка, і вноситися в dbs

int Close (int);

virtual void UsrClose ();

public:

Log * GetLog () {Return LogObj;}

operator DbEnv * () {return env;};

DbEnv * operator -> () {Return env;}

// DbEnv & GetDbEnv () {return env;}


const char * GetSchemaId () const {return schemaid;}

const char * GetUuid (const bexcp &, hbTxn * tx);

const char * GetPath () const {return path;}

bool IsOpen () {return state;}

hbEnv (const char * P, envInit & e, ushort flt = LL_DEBUG, Log * LogObj1 = 0);

virtual ~ hbEnv ();


// st_flags приміщ. в DbEnv :: set_flags (DB_TXN_NOSYNC)

// op_flags приміщ. в Db :: open (DB_PRIVATE/DB_THREAD - by default)

// якщо режим CDS то ці прапори ігноруються за винятком op_flags = DB_PRIVATE!!


void OpenTDSMode (const bexcp & excp, u_int32_t st_flags = 0, u_int32_t op_flags = (DB_THREAD | DB_RECOVER))// DB_THREAD | DB_RECOVER_FATAL

{DBOpen (excp, OPEN_TDS, true, st_flags, op_flags);}


void OpenCDSMode (const bexcp & excp, bool opentables = true, u_int32_t op_flags = 0/* тільки для DB_PRIVATE * /)

{DBOpen (excp, OPEN_CDS, opentables, 0, op_flags);}


void Close (const bexcp & excp);

void Close ();


// повна ініціалізація & створення бази з нуля (попереднє видалення БД)

void Init (const bexcp & excp, u_int32_t op_flags = DB_THREAD);

// Перевірка індексів і якщо треба їх коригування база повинна бути в offline

void CheckForIdx (const bexcp & excp, uint bulk_ret_buffer_size = (5 * 1024 * 1024), bool fix = false);


void CheckForRef (const bexcp & excp, uint bulk_ret_buffer_size = (5 * 1024 * 1024));


//! експорт бази даних

void ExportDB (const bexcp & excp, const char * fn, uint bulk_ret_buffer_size = (5 * 1024 * 1024));

//! імпорт бази даних

void ImportDB (const bexcp & excp, const char * fn);


void printf (ushort level, const char * fmt, ...);// обгортка під Log :: printf

};


Цей клас інкапсулює роботу зі словником, де може зберігатися інформація, корисна для програміста.

Транзакції

Клас транзакцій має наступний вигляд:

class hbTxn {

hbEnv & Env;

bexcp excp1;

hbTxn * parent;

DbTxn * Txn;

void SetFlags () {}

hbTxn (const hbTxn & Txn1): Env (Txn1.Env) {}// copy constr

hbTxn & operator = (const hbTxn &) {return * this;}//: =

public:

operator DbTxn * () {retur...


Назад | сторінка 8 з 14 | Наступна сторінка





Схожі реферати:

  • Реферат на тему: Return to materialism
  • Реферат на тему: Проектування бази даних "База даних районного відділу податкової інспе ...
  • Реферат на тему: Створення бази даних критичних властивостей речовин в редакторі баз даних M ...
  • Реферат на тему: Створення та аналіз бази даних обліку комунальних витрат підприємств. Орга ...
  • Реферат на тему: Створення бази даних, заповнення таблиць даними