Драйвер Btrieve

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Гость

Сообщение Гость »

Здравствуйте!

Может мне кто обьяснить КАК использование транзакционных рамок (LOGOUT/COMMIT) влияет на РАЗМЕР файла!?
Имеем обычный цикл копирования из одного файла в другой (новый):

Код: Выделить всё

  Create(NewFile); Open(NewFile)
  Open(OldFile)

  Convert.Init(...)
  Set(OldFile)
  Loop While Convert.LoopStep()
    Next(OldFile); if ErrorCode() then Break.
    NEW:Record = OLD:Record
    NEW:Notes = OLD:Notes
    Add(NewFile)
  .
  Convert.Kill()
Так вот, если код копирования "завернуть" в рамки транзакции, то получим файл процентов на ~10 меньше, чем без транзакции!

W2kRus + SP3
Microkernel Database Engine v6.15.430
'/MEMO=SINGLE/PAGESIZE=4096/COMPRESS=OFF'

Размер результирующего файла:
- без транзакции ~8.5 метров
- с транзакцией ~7.7 метров

Файл-менеджер битрива показывает одинаковую инфу по обоим результирующим файлам.

P.S.
Блин! Вообще какая-то "каша" получается!
Сейчас попробовал разбить одну транзакцию на куски по 1000 записей. В результате получил файл БОЛЬШИЙ чем без транзакции!

Итого:
- без транзакции ~8.5 метров
- с единой транзакцией ~7.7 метров
- с "кусочной" транзакцией ~9.6 метров

Правда, последний вариант самый быстрый:
- на ~30% быстрее чем без транзакции
- на ~5% быстрее чем с единой транзакцией.

P.P.S.
Поставил PervasiveSQL 8.5 в локальном режиме.
Т.е. работа не с SQL-движком а с одиночным файлом через обычный битрив-драйвер.
Скорость обработки - бешенная!

TPS-драйвер практически везде проигрывает:(
~100000 записей:
- обычный Next/Previous - одинаково.
- хаотичная выборка через Get - ~50% медленнее
- массовое добавление записей - ~100% медленнее
- массовое изменение записей - ~100% медленнее
В последних двух тестах TPS-драйвер использовал транзакцию. Без транзакции - полная ж...па.
Использовал единую транзакцию, что на больших обьемах ОЧЕНЬ НЕ рекомендуется делать из-за большого времени финишного сброса данных в файл и, соответственно, сильно возрастающем риске "убить" файл при аппаратном сбое.
При "кусочной" транзакции - отставание еще сильнее - 3-5 раз!

А вот на битрив транзакция практически не влияет.
Даже наоборот - при некоторых условиях скорость без транзакции чуть выше чем в режиме транзакции.

Кстати, не заметил особого влияния на скорость обработки аттрибута /COMPRESS. Даже иногда компрессированный файл чуть быстрее.

Да, был-бы битрив типа остальных форматов - все в одном, без необходимости установки доп. софта - цены бы ему не было!

Кстати, может кто ТОЛКОВО и по пунктам обьяснить - что и как необходимо ставить на файловый сервер и на рабочие сетевые станции при условии работы через обычный (не SQL) битрив-драйвер!?
И можно-ли на рабочих станциях обойтись без инсталляции - просто "бросить" в один каталог с приложением нужные либы и все? Ну, максимум, перед запуском приложения запускать рекорд-менеджер и что-то еще. Хотя, насколько я понял, он и так автоматом подгружается при запуске приложения. По крайней мере так у меня - после инсталляции первасива и если не загружать при старте Винды его движок.

=============================
С уважением, Олег А. Руденко.
Oleg_Rudenko@mail.ru
Oleg_Rudenko@mail333.com
Библиотека DynaLib
http://dynalib.narod.ru

(Добавление)

Слушай, Олег, я малость не в тему - но... А чего ты вцепился в первасив сейчас? Новелл уже не такое частое явление как раньше - т.е. нужно на серваке или на клиентах ставить манагера. А если так - то формат уже очень не самостоятельный. А раз так - то какой смысл использовать именно его, а не нормальный нетяжелый сиквел типа MS SQL?
Более того - если нужна локальная работа или работа с небольшим числом подключеных юзеров - вообще можно MSDE использовать. Ставиться на клиента просто (если знать как). А по возможностям и скоркострельности сам понимаешь - бетрив давно не дуется с современными сиквелами.

--
Best regards,
Vadim mailto:vadim@softcreator.com
ICQ: 82308757
сам понимаешь - бетрив давно не дуется с современными сиквелами.
Обижаешь уважаемый. Задача , как я понял , не требует sql , хотя в некоторых случаях pervasive sql работает БЫСТРЕЕ MS SQL и как расхваливается tps (правда иногда писали "повалился tps , что делать ?") . Даже не представляю чтоб писали "повалился pervasive , что делать ?".
Уважаемый Руденко хочет устанавливать свой продукт не присутствуя при этом лично. Я бы попробовал скопировать ветку реестра и файлы pervasive навалом без документации и прочего.

Vasiliev B <soft2@mail.redcom.ru>
Обижаешь уважаемый. Задача , как я понял , не требует sql , хотя в некоторых случаях pervasive sql работает БЫСТРЕЕ MS SQL и ...
Пожалуй это может быть только в одном случае - если памяти на машине, где крутиться сервер и клиент очень мало. Но это уже другая тема - а в нормальных условиях сейчас бетрив уже не конкурент сиквелу.
... как расхваливается tps (правда иногда писали "повалился tps , что делать ?") .
Даже не представляю чтоб писали "повалился pervasive , что делать ?".
Я тоже как-то не встречал случаев жалоб на падеж баз MS SQL.
Уважаемый Руденко хочет устанавливать свой продукт не присутствуя при этом лично.
MSDE ставиться при помощи небольшого WISE-скрипта абсолютно без участия человека - именно так мы поставляем демо-вариант программы - инсталлятор ставит сервер, аттачит базу, инсталлячит саму программу, настривает привязку к серверу.

--
Best regards,
Vadim

(Добавление)
Может мне кто обьяснить КАК использование транзакционных рамок (LOGOUT/COMMIT) влияет на РАЗМЕР файла!?
Слушай чего тебя так беспокоит размер файла? Там страничная организация данных, пусть сам драйвер "думает", сколько ему надо. Поверь, с оптимизацией там все впорядке. Кстати - не забывай, что драйвер периодически выделяет в файле новые страницы под данные. И может резервировать до 5% от текущего объема файла. Так что забудь, в общем случае эти тесты не показатель. При повторном прогоне можешь получить другой размер.
TPS-драйвер практически везде проигрывает:(
Проигрывает, на что в том числе и мной указывалось неоднократно на протяжении нескольких лет.
Даже наоборот - при некоторых условиях скорость без транзакции чуть выше чем в режиме транзакции.
Для btrieve что открыта транзакция, что нет - побоку. При открытой транзакции он модифицируемые страницы файла сохраняет в файл транзакции, и в случае отката их восстанавливает обратно.
Кстати, не заметил особого влияния на скорость обработки аттрибута /COMPRESS. Даже иногда компрессированный файл чуть быстрее.
Все зависит от того, какая структура файла. При использовании MEMO=64000
COMPRESS=ON очень даже существенно повлияет на размер файла.
Да, был-бы битрив типа остальных форматов - все в одном, без необходимости установки доп. софта - цены бы ему не было!
Если знать КАК, то и btrieve можно ставить БЕЗ установки.
Кстати, может кто ТОЛКОВО и по пунктам обьяснить - что и как необходимо ставить на файловый сервер и на рабочие сетевые станции при условии работы через обычный (не SQL) битрив-драйвер!?
Если PERVASIVE - то папка PVSW + реестр. Если BTRIEVE - то папка BTI + реестр.
И можно-ли на рабочих станциях обойтись без инсталляции - просто "бросить" в один каталог с приложением нужные либы и все? Ну, максимум, перед запуском приложения запускать
Можно. Для клиента 6.15 WBTRV32.DLL хватает. И больше ничего запускать не надо.

С уважением, Ставич Олег
Укрсиббанк г.Харьков
oldstav@ukrsibbank.com
Написал: ClaList(2)
Гость

Сообщение Гость »

Для работы клиента без установки Btrieve достаточно
положить в доступный каталог пользователя нижеследующие файлы и Btrieve
должен у него заработать (W3lgo103.exe - отключает проскакивающую
заставку Pervasive SQL (для этого его надо удалить из каталога):
W3aif107.dll, W3bif130.dll, W3crs10e.dll, W3enc104.dll,
W3mif131.dll, W3nsl220.dll, W3scmv7.dll, Wbtrcall.dll,
Wdbuui32.dll, Wbtrv32.dll, W3log103.exe
Проверено на Btrieve 7
Написал: Anatoly(38)
Гость

Сообщение Гость »

Можно. Для клиента 6.15 WBTRV32.DLL хватает. И больше ничего запускать не надо.
В случае update на поздние версии рекомендую удалить файлы btrieve из ТЕКУЩЕЙ директории (наровят подгрузится первыми).

Vasiliev B <soft2@mail.redcom.ru>
Даже не представляю чтоб писали "повалился pervasive , что делать ?".
Кстати, на счет этого - вчера, в процессе очень активного тестирования как Btrieve 6.15, так и Pervasive SQL 8.5 на довольно больших базах (от сотни тысяч записей):
- произошел сбой 6.15 - рекорд-манагер просто завис на большой транзакции. Правда, после перезагрузки рабочий файл не разрушился и даже не пришлось перестраивать ключи.
- был глючок 8.5 - при потоковом чтении записей на определенном этапе получал несколько "бипов" системным динамиком с замедлением обработки и пропусков части записей!
Вылечилось только перезапуском "движка" Первасива.
Уважаемый Руденко хочет устанавливать свой продукт не присутствуя при этом лично.
Да даже не это главное - хочется, что-бы отдельные мелкие точки продаж даже и не знали на чем работают, что такое "разрушен файл или ключ" и "утилиты восстановления"!
Раньше таким форматом для небольших баз был Clarion (хотя и приходилось изредка перестраивать ключи), но для данной задачи он явно не "проходит".
Я бы попробовал скопировать ветку реестра и файлы pervasive навалом> без документации и прочего.
Если никто не пробовал, то прийдется что-то "химичить" самому!

=============================
С уважением, Олег А. Руденко.

(Добавление)
А по возможностям и скоркострельности сам понимаешь - бетрив давно не дуется с современными сиквелами.
В том-то и дело, что для данной задачи ОЧЕНЬ не хочется использовать SQL-базы! Точнее так - в версии для центрального офиса и крупных региональных офисов скорее всего будет использоваться SQL-база, а вот в версиях для мелких точек продаж ставить SQL, имхо, не очень правильный подход.
Битрив выбран (или, точнее, пока рассматривается как основной вариант) из-за следующих соображений:
- практически полная совместимость файлов как для локальной, так и для SQL платформ.
- очень низкая (по сравнению с другими десктопными форматами) вероятность физического разрушения.
- элементарная (по сравнению с SQL) установка клиентского пакета, по крайней мере для Btrieve 6.15
Да и установка полного пакета Pervasive SQL 8.5 намного более простая, чем установка того-же MSSQL.

Хотя, последнее утверждение, согласен, не очень принципиально, когда речь идет об установке в офисе, где есть свой сетевой админ.

И еще один плюс использованию на мелких точках обычных десктопных форматов - ОЧЕНЬ простая процедура импорта/экспорта данных между точками и центром. Я не такой уж и большой дока по части SQL, но меня постоянно удивляют админы SQL-баз, когда просят подправить эту процедуру или сам формат выгрузки - элементарные вещи приходится делать через ж...!

Кстати, а что это за MSDE? Какая-то облегченная версия MSSQL?
И чем она отличается от полной версии?

=============================
С уважением, Олег А. Руденко

(Добавление)
- элементарная (по сравнению с SQL) установка клиентского пакета, по крайней мере для Btrieve 6.15
Тезка, ты не прав. А что там нужно для MS SQL устанавливать? Прально ничего вообче. Даже драйве SQL установится с офисом вместе...

Олег Иванов <iov@freemail.ru>
Написал: ClaList(2)
Гость

Сообщение Гость »

- был глючок 8.5 - при потоковом чтении записей
При чтении сбой ? даже не подумаю о pervasive.
Что угодно железо,ос,параллельный процесс или в конце концов конфигурация по time limit . Кстати о пропуске записей. Был случай (еще на 6.15) порчи фрагмента файла , когда он успешно читался до и после , а поскольку испорченный период уже никого не интересовал так он и работал дальше.

Vasiliev B <soft2@mail.redcom.ru>
Я не такой уж и большой дока по части SQL, но меня постоянно удивляют админы SQL-баз, когда просят подправить эту процедуру или сам формат выгрузки - элементарные вещи приходится делать через ж...!
Не совсем понятен источник проблемы - какое отличие для программы на клаше - каков источник данных?
Кстати, а что это за MSDE? Какая-то облегченная версия MSSQL?
И чем она отличается от полной версии?
это "десктопная" версия сиквела. отличается условной халявностью, небольшими ограничениями (наиболее важные их них - до 5 юзеров одновременно и файло базы данных не более 2 гиг).
Ну и отсутствие графической оболочки манагера - только интерпритатор команд.
Т.е. все сделано под конечного юзера - установил (руками или инсталлятором) клиенту движок - и все. Клиент (если он не суперпродвинутуй) уже ничего сломать не сможет.
Но в принципе ничего не мешает удаленно менеджерить сервер у клиента.

--
Best regards,
Vadym

(Добавление)
Так что забудь, в общем случае эти тесты не показатель. При повторном прогоне можешь получить другой размер.
Да не очень и беспокоит! Просто интересно - какой механизм работы при этом. Жаль - некогда разбираться!
Все зависит от того, какая структура файла. При использовании MEMO=64000
COMPRESS=ON очень даже существенно повлияет на размер файла.
Я не размер файла имел в виду, а именно скорость обработки.
Если знать КАК, то и btrieve можно ставить БЕЗ установки.
Если PERVASIVE - то папка PVSW + реестр. Если BTRIEVE - то папка BTI + реестр.
Для 6.15 - согласен, практически без проблем и просто.
Для 8.5 - не совсем уверен, но попробую.
Можно. Для клиента 6.15 WBTRV32.DLL хватает. И больше ничего запускать не надо.
Ты имеешь в виду - сетевого клиента, при установленном сервере?
Т.е. что - WBTRV32 сам найдет рекорд-манагер в сети по установленным сетевым протоколам и приконектится к нему? И ничего писать ни в каком INI-файле на клиенте не надо?

Спасибо!

=============================
С уважением, Олег А. Руденко
Написал: ClaList(2)
Гость

Сообщение Гость »

Я использую Btrieve 6.15. В дистрибутив программы просто включаю следующие файлы:

W32MKDE.EXE
W32MKRC.DLL
WBTRCALL.DLL
WBTRTHNK.DLL
WBTRV32.DLL
WBTRVRES.DLL
W32BTICM.DLL - только если нужно работать с Btrieve-сервером

Программа после инсталляции начинает работать сразу и не требуется установки Btrieve-клиента.

После первого запуска программы менеджер Brtieve сам создает в реестре свои ключи с настройками по умолчанию. Но для моих программ приходится увеличивать значение трех параметров в реестре:

[HKEY_LOCAL_MACHINE\SOFTWARE\Btrieve Technologies\Microkernel Workstation Engine\Version 6.15\Settings]
"Max Files"=dword:000000c8
"Max Handles"=dword:00000190
"Cache Size"=dword:00040000

Это можно сделать из программы или путем "выполнения" reg-файла, который прилагаю...

Установка сисиемы с Btrieve-сервером уже гораздо сложнее, поэтому я даю пользователям подробную инструкцию о том как это делается, которую тоже прилагаю.

С уважением, Гундоров Сергей
http://pisoft.ru

Написал: ClaList(2)
Гость

Сообщение Гость »

Я не размер файла имел в виду, а именно скорость обработки.
S - размер данных
Vo - Скорость чтения не упакованных данных
Vc - Скорость чтения упакованных данных
Vr - Скорость распаковки

Delta = S/Vо - (S/Vс + S/Vr) = S( 1/Vо - (1/Vс + 1/Vr) )
Для 8.5 - не совсем уверен, но попробую.
Для 8.5 нужно еще прописывать переменные среды PATH и CLASSPATH
Т.е. что - WBTRV32 сам найдет рекорд-манагер в сети по установленным сетевым протоколам и приконектится к нему? И ничего писать ни в каком INI-файле на клиенте не надо?
настройки берутся с сервера....

С уважением, Ставич Олег
Укрсиббанк г.Харьков
oldstav@ukrsibbank.com
Написал: ClaList(2)
Гость

Сообщение Гость »

На днях проверял под восьмеркой - FILEMONом и REGMONом отследил, что нужные файлы для рабочей станции (под 32 бит, TCPIP) таковы:
w3aif*.dll
w3bif*.dll
w3crs*.dll
w3enc*.dll
w3mif*.dll
w3nsl*.dll
pscore.dll
w3scmv7.dll
wbtrv32.dll
(по одному, грузится более новая версия) а также прилагается REG-файл с параметрами, к которым было обращение.

И еще одно замечание: в данном случае нет движка кеширования (нововведение восьмерки) страниц на рабочей станции.


ЗЫ: насчет скорости - в восьмерке уменьшили (оптимизировали) к-во обращений к физ. носителю и ввели запись нескольких страниц за одну операцию, что сильно сказалось на скорости отработки изменений большого к-ва записей БД. На одиночных изменениях скорость осталась (субьективно) прежней. Проводили сравнение с семеркой (типа 2000i).

С уважением,
Струменский Александер mailto:alx@lin.com.ua
-------------
Флюгер был прибит намертво, и ветер обреченно дул в указанную сторону...
Написал: ClaList(2)
Гость

Сообщение Гость »

MSDE ставиться при помощи небольшого WISE-скрипта абсолютно без участия человека - именно так мы поставляем демо-вариант программы - инсталлятор ставит сервер, аттачит базу, инсталлячит саму программу, настривает привязку к серверу.
Не могли уважаемый Вадим выслать примерчик такого скрипта, ну чтобы не колбаситься лишний раз ;)

gottmituns@mail.ru
Написал: Ravenous(3)
Ответить