Extensible Storage Engine
От: Artour A. Bakiev  
Дата: 25.04.07 14:07
Оценка: 190 (9)
Статья:
Extensible Storage Engine
Автор(ы): Artour A. Bakiev
Дата: 25.04.2007
В этой статье дается обзор технологии “Extensible Storage Engine”. Хотя технология опубликована немногим более года назад – новой её можно назвать только условно. Она использовалась при создании таких продуктов, как Active Directory и Exchange 2000, но до недавнего времени не была известна широкому кругу разработчиков. В узком же кругу тех, кто с ней сталкивался, она была известна под именем “JET Blue”.
Кроме того, статья будет интересна желающим узнать, как организована работа СУБД на низком уровне.


Авторы:
Artour A. Bakiev

Аннотация:
В этой статье дается обзор технологии "Extensible Storage Engine". Хотя технология опубликована немногим более года назад — новой её можно назвать только условно. Она использовалась при создании таких продуктов, как Active Directory и Exchange 2000, но до недавнего времени не была известна широкому кругу разработчиков. В узком же кругу тех, кто с ней сталкивался, она была известна под именем "JET Blue".
Кроме того, статья будет интересна желающим узнать, как организована работа СУБД на низком уровне.
Re: Extensible Storage Engine
От: shelkovnikov Россия  
Дата: 26.04.07 02:55
Оценка: -1
Здравствуйте, Artour A. Bakiev, Вы писали:

AAB>Статья:

AAB>Extensible Storage Engine
Автор(ы): Artour A. Bakiev
Дата: 25.04.2007
В этой статье дается обзор технологии “Extensible Storage Engine”. Хотя технология опубликована немногим более года назад – новой её можно назвать только условно. Она использовалась при создании таких продуктов, как Active Directory и Exchange 2000, но до недавнего времени не была известна широкому кругу разработчиков. В узком же кругу тех, кто с ней сталкивался, она была известна под именем “JET Blue”.
Кроме того, статья будет интересна желающим узнать, как организована работа СУБД на низком уровне.


по ссылке не удается попасть на статью
удалось по этой
Автор(ы): Artour A. Bakiev
Дата: 25.04.2007
В этой статье дается обзор технологии “Extensible Storage Engine”. Хотя технология опубликована немногим более года назад – новой её можно назвать только условно. Она использовалась при создании таких продуктов, как Active Directory и Exchange 2000, но до недавнего времени не была известна широкому кругу разработчиков. В узком же кругу тех, кто с ней сталкивался, она была известна под именем “JET Blue”.
Кроме того, статья будет интересна желающим узнать, как организована работа СУБД на низком уровне.
Re: Extensible Storage Engine
От: Michael Rusakov https://www.wincatalog.com
Дата: 26.06.07 08:06
Оценка:
Здравствуйте, Artour A. Bakiev, Вы писали:

AAB>Статья:

Большое спасибо за статью, было очень интересно почитать.

Я хотел добавить про SQLite. Мне известно как минимум две успешных коммерческих разрабоки (и готовящаяся к выходу третья) на ее основе. А также новый продукт от Google — Google Gear тоже использует SQLite. И мне почему-то кажется, что после того, как на SQLite обратил внимание Google, дела у них пойдут стремительно "в гору". Хотя и сейчас, на мой взгляд, всё в порядке.

Кстати, насколько я понял, в JET Blue нет возможности выполнять SQL запросы? Это я к тому, что заменять им уже используемые "легковесные" Firebird и SQLite будет весьма затратно.
WinCatalog — Disk Catalog Software for Windows
Re: Extensible Storage Engine
От: FractalizeR  
Дата: 28.06.07 14:58
Оценка:
Отличная статья, я только не понял, что такого Extensible в этом Storage Engine? Он и правда расширяемый? В каком плане?
Re: Extensible Storage Engine
От: CatWarrior Россия www.gaolife.hut1.ru
Дата: 01.07.07 13:18
Оценка:
Здравствуйте, Artour A. Bakiev, Вы писали:

А где можно раздобыть esent.h и esent.lib ?
если у кого есть скиньте пожалуйста на sonicCatTemp@list.ru
Re[2]: Extensible Storage Engine
От: CatWarrior Россия www.gaolife.hut1.ru
Дата: 01.07.07 17:58
Оценка:
Здравствуйте, CatWarrior, Вы писали:

Нашел в НЕМ

Отчепил Может кому понадобится :
Скачать
Re[3]: Extensible Storage Engine
От: CatWarrior Россия www.gaolife.hut1.ru
Дата: 02.07.07 04:35
Оценка:
Здравствуйте, CatWarrior, Вы писали:

Эх не работает, говорит что в esent.dll (которая у меня в C:\Windows\System32) нет функций типа JetBeginSessionA JetCreateDatabase. В SDK dll-ки вообще не было. Безбобразие.
Re[2]: Extensible Storage Engine
От: Artour Bakiev  
Дата: 04.07.07 13:48
Оценка:
Здравствуйте, Michael Rusakov, Вы писали:

MR>Кстати, насколько я понял, в JET Blue нет возможности выполнять SQL запросы? Это я к тому, что заменять им уже используемые "легковесные" Firebird и SQLite будет весьма затратно.


Совершенно верно. С помощью JET Blue невозможно выполнить SQL запрос (конечно, об этом следовало бы явно упомянуть в самой статье). Заменить один движок на другой будет не просто.
Re[2]: Extensible Storage Engine
От: Artour Bakiev  
Дата: 04.07.07 13:51
Оценка:
Здравствуйте, FractalizeR, Вы писали:

FR>Отличная статья, я только не понял, что такого Extensible в этом Storage Engine? Он и правда расширяемый? В каком плане?


Насколько я могу судить, слово "Extensible " в названии продукта — это скорее привлекающий внимание звучный термин, нежели описание каких-то особенностей данной технологии.
Re[2]: Extensible Storage Engine
От: Artour Bakiev  
Дата: 04.07.07 14:03
Оценка:
Здравствуйте, CatWarrior, Вы писали:

CW>Здравствуйте, Artour A. Bakiev, Вы писали:


CW>А где можно раздобыть esent.h и esent.lib ?


Думаю, проще всего получить эти файлы, установив один из последних SDK. Я не уверен, есть ли эти файлы в "Windows Server 2003 SP1 Platform SDK". Но они определённо поставляются с "Microsoft Platform SDK for Windows Server 2003 R2" (http://www.microsoft.com/downloads/details.aspx?FamilyID=0baf2b35-c656-4969-ace8-e4c0c0716adb&DisplayLang=en). Мicrosoft провёл очередную реорганизацию на своём сайте и потому в статье содержится неверная ссылка.
Re[4]: Extensible Storage Engine
От: Artour Bakiev  
Дата: 04.07.07 14:06
Оценка:
Здравствуйте, CatWarrior, Вы писали:

CW>Здравствуйте, CatWarrior, Вы писали:


CW>Эх не работает, говорит что в esent.dll (которая у меня в C:\Windows\System32) нет функций типа JetBeginSessionA JetCreateDatabase. В SDK dll-ки вообще не было. Безбобразие.


Определены ли директивы компилятора _UNICODE и UNICODE?
Re[5]: Extensible Storage Engine
От: CatWarrior Россия www.gaolife.hut1.ru
Дата: 05.07.07 12:01
Оценка:
Здравствуйте, Artour Bakiev, Вы писали:

AB>Здравствуйте, CatWarrior, Вы писали:


CW>>Здравствуйте, CatWarrior, Вы писали:


CW>>Эх не работает, говорит что в esent.dll (которая у меня в C:\Windows\System32) нет функций типа JetBeginSessionA JetCreateDatabase. В SDK dll-ки вообще не было. Безбобразие.


AB>Определены ли директивы компилятора _UNICODE и UNICODE?


указал /UNICODE, добавил (#define UNICODE #define _UNICODE). Использую VS 2005. Ошибка осталась, появляется при запуске.

The procedure entry point JetBeginSessionA could not be located in the dinamic link library ESENT.dll
Re[6]: Extensible Storage Engine
От: FractalizeR  
Дата: 05.07.07 12:57
Оценка:
CW>указал /UNICODE, добавил (#define UNICODE #define _UNICODE). Использую VS 2005. Ошибка осталась, появляется при запуске.

CW>The procedure entry point JetBeginSessionA could not be located in the dinamic link library ESENT.dll


Вы не хотите эту dll посмотреть чем-нибудь вроде tdump из комплекта Delphi? Сразу будет ясно, что там есть и чего нету.
Re: Extensible Storage Engine
От: Аноним  
Дата: 27.07.07 07:32
Оценка:
Здравствуйте, Artour A. Bakiev.

Подскажите пожалуйста а что это за esentprf.dll, имееющаяся в комплекте Windows 2000? Уж названия больно похожи.
Re[7]: Extensible Storage Engine
От: ZNick  
Дата: 22.08.07 07:36
Оценка:
Здравствуйте, FractalizeR, Вы писали:


CW>>указал /UNICODE, добавил (#define UNICODE #define _UNICODE). Использую VS 2005. Ошибка осталась, появляется при запуске.


CW>>The procedure entry point JetBeginSessionA could not be located in the dinamic link library ESENT.dll


FR>Вы не хотите эту dll посмотреть чем-нибудь вроде tdump из комплекта Delphi? Сразу будет ясно, что там есть и чего нету.


Я смотрел утилитой Depends из VS 2005... там не экспортятся ф-ции с суффиксом "A" и "W" хотя в MSDN явно написано что реализация через эти методы...
Система Win XP Prof. SP2.
Re: Vopros po JetMakeKey
От: AndrejC  
Дата: 27.08.07 16:10
Оценка:
Esli est' index iz neskol'kih kolonok (Long i Currency tipov) — kak pravil'no vyzvat' JetMakeKey neskol'ko raz? Izpol'zuja JetMakeKey i zatem JetSeek vsio vremia poluchaju oshibku: 1039 (JET_wrnSeekNotEqual), hotia i ispol'zuju JET_bitSeekGE
Re[8]: Extensible Storage Engine
От: mSerg Украина  
Дата: 28.08.07 17:15
Оценка:
Здравствуйте, ZNick, Вы писали:

ZN>Здравствуйте, FractalizeR, Вы писали:



CW>>>указал /UNICODE, добавил (#define UNICODE #define _UNICODE). Использую VS 2005. Ошибка осталась, появляется при запуске.


CW>>>The procedure entry point JetBeginSessionA could not be located in the dinamic link library ESENT.dll


FR>>Вы не хотите эту dll посмотреть чем-нибудь вроде tdump из комплекта Delphi? Сразу будет ясно, что там есть и чего нету.


ZN>Я смотрел утилитой Depends из VS 2005... там не экспортятся ф-ции с суффиксом "A" и "W" хотя в MSDN явно написано что реализация через эти методы...

ZN>Система Win XP Prof. SP2.

Перед
#include <esent.h>
нужно поставить
#define JET_VERSION 0x0501

Расшифровка из esent.h:

// JET_VERSION is similar to WINVER. It allows the most recent header to be used
// against older targets. Supported versions are:
// 0x0500 — Windows 2000
// 0x0501 — Windows XP
// 0x0502 — Windows 2003
// 0x0600 — Windows Vista

WBR, Serg Matskov
Re[2]: Extensible Storage Engine
От: Artour Bakiev  
Дата: 30.08.07 06:53
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Artour A. Bakiev.


А>Подскажите пожалуйста а что это за esentprf.dll, имееющаяся в комплекте Windows 2000? Уж названия больно похожи.


Честно говоря — не знаю — не встречался с таким файлом.

Название (а точнее, сочетание букв "prf" в названии) наводят на мысль, что это "ESE NT performance" — возможно, библиотека позволяет снимать показатели производительности для ESE движка, используя стандартный Performance Monitor.
Re[2]: Vopros po JetMakeKey
От: Artour Bakiev  
Дата: 30.08.07 06:57
Оценка:
Здравствуйте, AndrejC, Вы писали:

AC>Esli est' index iz neskol'kih kolonok (Long i Currency tipov) — kak pravil'no vyzvat' JetMakeKey neskol'ko raz? Izpol'zuja JetMakeKey i zatem JetSeek vsio vremia poluchaju oshibku: 1039 (JET_wrnSeekNotEqual), hotia i ispol'zuju JET_bitSeekGE


Боюсь, я не смогу помочь, не видя исходного кода. Пришлите, пожалуйста, исходный код — я попробую помочь Вам.
Re[3]: Vopros po JetMakeKey
От: AndrejC  
Дата: 30.08.07 07:32
Оценка:
Здравствуйте, Artour Bakiev, Вы писали:

AB>Здравствуйте, AndrejC, Вы писали:


AC>>Esli est' index iz neskol'kih kolonok (Long i Currency tipov) — kak pravil'no vyzvat' JetMakeKey neskol'ko raz? Izpol'zuja JetMakeKey i zatem JetSeek vsio vremia poluchaju oshibku: 1039 (JET_wrnSeekNotEqual), hotia i ispol'zuju JET_bitSeekGE


AB>Боюсь, я не смогу помочь, не видя исходного кода. Пришлите, пожалуйста, исходный код — я попробую помочь Вам.


Вот образец такого кода:

JET_ERR error;
long emptyCurrency = 0;
unsigned long emptyLong = 0;
unsigned long myID = 123;

error = JetSetCurrentIndex(sess_id, table_id, _T("index1"));
if (error)
throw new ApplicationException(error, JetErrorMessage(error));

// column1 is of type long
error = JetMakeKey(sess_id, table_id, &emptyLong, sizeof(emptyLong), JET_bitNewKey);
if (error)
throw new ApplicationException(error, JetErrorMessage(error));
// column2 is of type currency
error = JetMakeKey(sess_id, table_id, &emptyCurrency, sizeof(emptyCurrency), JET_bitNewKey);
if (error)
throw new ApplicationException(error, JetErrorMessage(error));
// column3 is of type long
error = JetMakeKey(sess_id, table_id, &emptyLong, sizeof(emptyLong), JET_bitNewKey);
if (error)
throw new ApplicationException(error, JetErrorMessage(error));
// column4 is of type long
error = JetMakeKey(sess_id, table_id, &myID, sizeof(emptyLong), JET_bitNewKey);
if (error)
throw new ApplicationException(error, JetErrorMessage(error));

error = JetSeek(sess_id, table_id, JET_bitSeekGE);

index1 (создан не мною) состоит из 4 колонок (long и currency типов). Значения в первых 3-х колонках не интересуют при поиске, поетому выставлены в 0, а значение 4-ой сравнивается со значением переменной myID. Но совершенно непонятно понимает ли в таком случае Engine, что я устанавливаю значения для каждой колонки отдельно, т.к. я не вижу возможности указать порядковый номер колонки для етого (вызовы JetMakeKey).

Возможен ли вообще при таком индексе корректный результат поиска или нужно иметь специальный индекс, состоящий только из 4-ой колонки?

Буду очень благодарен за ответ здесь. Писал Вам отделжно на email, но может не получили.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.