дата последнего обновления: 26.09.2002
FAQ содержит две секции - общие и технические
вопросы.
1. что это вообще такое - Yaffil?
Код Yaffil базируется на исходном коде Firebird (который в свою очередь родился из Interbase 6 OpenSource). Первоначально Yaffil разрабатывался с целью проверить некие идеи по поводу ускорения работы Interbase. Потом было решено разрабатывать сервер и дальше, с целью удовлетворения нужд российских разработчиков.
2. почему Yaffil платный?
Развитие бесплатного ПО зависит только от желания его разработчиков. Сделав Yaffil платным мы обеспечиваем гарантии надежности и сопровождения, а также учет ваших пожеланий по функциональности сервера.
3. насколько Yaffil совместим с Interbase и Firebird?
Настолько, насколько это возможно. Borland с переводом 6.0 и 6.5 на платную схему (идентичную 5.x) перестал обновлять OpenSource-версию, поэтому как и что они делают в исходном коде - неизвестно. В таких случаях нам приходится реализовывать функциональность своими силами (если эта функциональность оправдана для большинства разработчиков). С Firebird ситуация много проще, т.к. мы работаем совместно с Firebird Team. Между нами нет конкуренции (см. пункт 4), есть нечто вроде "социалистического соревнования".
В версии Interbase 7 Borland сделал ряд изменений, в том числе ODS (дисковой структуры), которая уже привела к несовместимости баз данных и частично несовместимости клиентского интерфейса.
4. продается ли Yaffil за рубежом?
Нет, и не планируется. Мы ориентированы на разработчиков России и стран бывшего СССР. За рубежом работает Borland и Firebird.
5. Почему бета-версии выходят так часто?
Мы постоянно работаем над улучшением сервера. В общем случае бета-версии предназначены
для бета тестеров. Даже те, кто не является бета-тестером, могут оперативно
наблюдать за изменением и дополнением функциональности Yaffil.
Подписаться на бета-тестирование можно по email - beta-subscribe@yaffil.ruibase.ru.
6. Что такое протокол XNET?
Это "локальный" протокол, вместо того, который работает в IB/FB через shared memory. В отличие от обычного через XNET можно работать с сервером из сервисов. Также, запросы в разных коннектах через XNET выполняются параллельно (в обычном локальном коннекте - последовательно). Небольшой недостаток XNET состоит в том, что он работает несколько медленнее, чем локальный протокол IB/FB.
1. поставил Yaffil поверх Interbase (Firebird), а при открытии баз выдается сообщение про charset
В Yaffil добавлены кодировки кои8, кои8u и другие, поэтому библиотека gdsintl.dll должна быть обязательно именно от этой версии Yaffil.
2. Не работает локальный протокол (XNET)
Проверьте версию gds32.dll - если она не от Yaffil, то локальный протокол работать не будет. Крайне рекомендуется, чтобы версия gds32.dll совпадала с версией сервера Yaffil.
3. как поставить snapshot (только файлы)?
Схема установки идентична Interbase и Firebird - достаточно распаковать файлы в каталог с уже установленным IB/FB. Распаковывать нужно с подкаталогами, особое внимание обращать на замену файла gdsintl.dll (библиотека кодировок) и gds32.dll (клиентская часть).
Однако если на машине установленного IB/FB нет, или хочется иметь возможность
откатиться на IB/FB обратно, то нужно действовать по следующей схеме:
(все операции с сервисами и instsvc проводятся только для WinNT, W2K, WinXP)
(если на машине нет IB/FB, пропустите пункты 2-4)
1. создайте каталог (например C:\YA), распакуйте туда zip с файлами (с опцией
распаковки с подкаталогами)
2. остановите сервис IB/FB (если он запущен, включая guardian)
3.зайдите в подкаталог bin текущей установки IB/FB. Удалите информацию из registry
и сервисов путем запуска
instsvc remove
instreg remove
4 . посмотрите в списке сервисов - не остались ли сервисы IB/FB. Если да, измените
их режим старта в "ручной" (manual)
5 . зайдите в подкаталог c:\ya\bin и запустите
instreg install c:\ya
instsvc install c:\ya
6 . Откройте список сервисов. Установите запуск Yaffil SuperServer или Classic
в нужный режим (auto или manual). Для Classic в сервисах прописывается процесс
ibremote.exe, для SuperServer - ibserver.exe
! Не допускайте возможности, чтобы одновременно были запущены Yaffil Classic и IB/FB! При одновременном обращении к одной и той же базе данных обоими серверами это может вызвать повреждения базы данных.
Для возврата к IB/FB необходимо проделать те же операции, только наоборот, сначала для Yaffil, затем для IB/FB.
4. после установки Yaffil стал падать сервер или udf
(до этого IB или FB работали нормально)
Yaffil начиная со сборки 867 компилируется MSVC7. Это означает, что теперь используется сервисная библиотека msvcr7.dll, а не msvcrt.dll как раньше (msvc6). В этой библиотеке есть функция malloc, отвечающая за аллокирование памяти.
Таким образом, если ваши udf содержат фунции с free_it, которые напрямую аллокируют память вызовом функции из msvcrt, или наоборот, делают это правильно через ib_util.dll но от сервера IB или FB, в результате получается что ваша udf использует один менеджер памяти, а сервер - другой. Что и приводит ко всяким проблемам с работоспособностью сервера.
Убедитесь, что ваша функция использует вызов не malloc, а ib_util_malloc, и что ib_util.dll имеет версию Yaffil не ниже 865 сборки (а также что на компьютере нет других ib_util.dll, которые могут быть найдены операционной системой ранее правильной ib_util.dll).
5. на 95/98 приложение говорит "не могу открыть gds32.dll"
Поскольку начиная со сборки 867 Yaffil компилируется MSVC7 (см. выше пункт 4), gds32.dll требует не msvcrt.dll, а msvcr7, который в этих ОС нет (msvcrt.dll также нет в чистой Win95). Поместите msvcr7.dll из дистрибутива Yaffil либо рядом с gds32.dll, либо в каталог, указанный в PATH.