Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» InterBase и FireBird: вопросы по работе и их решение

Автор: OXDBA
Дата сообщения: 02.04.2008 17:35

Цитата:
Хочу под сервер баз данных отдельный железный сервер.

Абсолютно трезвое желание

Цитата:
Посоветовали туда поставить UNIX

А почему не MacOSX?

Цитата:
Названия разные знаю, а вот опыта работы - 0.

Ставь то, с чем опыт работы > 0

Цитата:
Поможете?!

Ну если очень чешется, то
Firebird: руководство разработчика баз данных установка и запуск под Linux там есть.
Ну и для примера
Setting up Firebird on Ubuntu Linux
Автор: cesare
Дата сообщения: 03.04.2008 17:41
Товарищу OXDBA:
А почему Mac OS X?

Опыта работы только с Linux и то совсем маленький...
Меня в принципе интересует какой именно дистрибутив из клана UNIX, BSD, Linux подойдет для вышеописанных делишек?
Как поставить и настроить я сам разберусь или в книжках вычитаю умных или у людей опытных поспрашиваю
Мне интересно мнение какая ОС будет оптимальна для Firebird.

С уважением к чужому мнению.
Виталик
Автор: OXDBA
Дата сообщения: 03.04.2008 22:12

Цитата:
А почему Mac OS X?

Все дело в первоначальной формулировке. Одна бабка сказала, что Unix это круто, поэтому будем пускать птичку под соляркой...
Если вопрос в том, что есть желание изучить Unix, ну в крайнем случае Linux, на примере работы с FB, то на текущий момент официально поддерживаются платформы Linux x86, Linux x64, Solaris 10 Intel & Sparc, HP-UX 11, выбирай что по душе сам, абстрактно "оптимальной" ОС для FB нет, под наши задачи, на нашем железе использовали ASP и Suse, проблем не было.
Если вопрос в том, что заказчик(начальник) требует Unix/Linux, то см. выше исходя из железа.
Если же вопрос в том, что при работе с FB(версия, Super/Classic) под ОС(наименование, версия) на таком-то железе, возникают следующие проблемы:
1
2
3
то вопрос о выборе ОС может и не возникнуть.
Еще раз повторюсь, для FB лучшая ОС та, которую знает админ.
Автор: cesare
Дата сообщения: 04.04.2008 09:45
Спасибо OXBDA за наставление на путь истинный!
Действительно получается
"Одна бабка сказала, что Unix это круто, поэтому будем пускать птичку под соляркой... "


Желание изучить, настроить и поставить есть. Вот колеблюсь между Debian, Solaris и BSD-системами (заинтересовала OpenBSD). BSD поддерживается?

Задача: определитья на каком железе и ОСи будет фунциклировать серверная часть распределенной клиент-серверной системы. Просто мне подсказали, что если я хочу, чтобы FB была на отдельном сервере, то желательно ее ставить на Unix. Хотя можно, конечно, прикрутить и к Win2K3. Но вот свербит у меня в одном месте,
, хочется Unix+FB .

А так вы правы вполне. За развернутое объяснение и моральную поддержку, как говорится, почет и благодарность!
Автор: OXDBA
Дата сообщения: 07.04.2008 14:34

Цитата:
Желание изучить, настроить и поставить есть. Вот колеблюсь между Debian, Solaris и BSD-системами (заинтересовала OpenBSD). BSD поддерживается?

Вот насчет как раз насчет BSD хочу тебя разочаровать. Двойки под BSD нет, есть только 1.5 Classic. Задумчиво...FB под Solaris...нет, есть конечно любители экзотики, но я не из их числа IMHO остается Linux.
Автор: cesare
Дата сообщения: 08.04.2008 10:38
Спасибо за информацию. Подумать только! Слишком оптимистично я думал про FB.
Значит буду мучать Debian.
Автор: IvANANvI
Дата сообщения: 10.06.2008 13:48
База на INTERBASE, запускаем приложение, при запуске выполняется запрос, но при этом очень долго происходит коннект к базе, а когда приложение закрывается , то очень долго происходит отключение от базы (даже при абсолютно пустой базе). Точно, связано с платформой, на двухядерных атлонах работает нормально, на core и 4 пнях с HT такое явление наблюдается с этой базой всегда. WinXPSP2, база локальная. На старых пентиумах 2 и 3 работает тоже без тормозов. Походу проблема с ядерностью, но почему тоько на корках?
Автор: OXDBA
Дата сообщения: 10.06.2008 14:19

Цитата:
База на INTERBASE

Версия?

Цитата:
но при этом очень долго происходит коннект к базе

Долго это сколько?

Цитата:
На старых пентиумах 2 и 3 работает тоже без тормозов

Тоже под WinXp SP2?

Цитата:
на core и 4 пнях с HT

Несмотря на то, что на время соединения не повлияет, HT отключать сразу.
Автор: IvANANvI
Дата сообщения: 10.06.2008 15:29
База не моя. Для работы ставлю InterBase_WI-V6.0.1-server&client, либо Delphi6.
Коннект долгий в сравнеии с другой платформой. До 40 сек., хотя должен это делать не заметно. Да и там тоже SP2.
Автор: LeaF_AVF
Дата сообщения: 10.06.2008 15:57
IvANANvI
на какую-то версию IB (FB) поновее не желаешь перейти?
когда-то встречал информацию о сходной проблеме, но кажется на Win2k3..
вот, нашел на ibase.ru - в ЧАВО проскакивало:

Цитата:
медленный (долгий) коннект на Win2003
Это происходит только на старых версиях IB/FB/YA, например Interbase 6, Firebird 1.0.x. Причина - изменения в ядре Win2003, в результате чего существующие ошибки синхронизации в коде IB/FB/YA стали проявляться в виде очень долгого коннекта (20 секунд и более).

Избавиться от этой проблемы можно либо переходом на InterBase 7.1, Firebird 1.5, последнюю версию Yaffil, или возвратом на Windows 2000.


p.s. надеюсь восстановление системы отключено на машине?
Автор: OXDBA
Дата сообщения: 10.06.2008 16:09
IvANANvI
1. Снести IB 6.0.
2. InterBase, Firebird, Yaffil FAQ
+
Настоятельно рекомендую к прочтению
Медленное подключение IB
Автор: IvANANvI
Дата сообщения: 10.06.2008 16:27
OXDBA
Настоятельно рекомендую к прочтению
Медленное подключение IB
Крайне не поучительная ветка форума., хоть и смешная .
Интересует в первую причина не работоспособности на одних платформах и полной работоспособности на других, при одних и тех же весриях interbase.
Понятно можно ругать. Кстати в FAQ про это не сказано, потому как читал его ранее.
Автор: OXDBA
Дата сообщения: 10.06.2008 17:03
IvANANvI
Никто тебя не ругает, на примере этой весьма поучительной ветки показана реакция лучших специалистов страны в области IB/FB на IB 6.0, если поискать другие темы, то можно увидеть и аналогичную реакцию разработчиков FB. Поэтому сноси IB 6.0, cтавь что-нибудь рабочее из IB, начиная с 6.5 или FB, что IMHO предпочтительнее и с твоим коннектом все будет в порядке
Автор: IvANANvI
Дата сообщения: 11.06.2008 12:50
Спасибо.
Автор: SergBSI
Дата сообщения: 25.06.2008 22:06
Необходимо базу из IB перенести на SQL SErver - нет ли какого нибудь "автомата" для этого
Автор: Zumaic
Дата сообщения: 28.06.2008 19:18
IvANANВvI

Верно тебе советуют, забивай на старье, ставь что-то из последних 7.5.1, 2007
Автор: delover
Дата сообщения: 30.06.2008 15:25
Люди добрые, сильно не пинайте пожалуйста. Вопрос такой, если кто может скинуть или выложить хоть самые старющие фибы с исходниками - буду очень благодарен. Просто устал писать собственные фибы. Дома ibx, на работе fib. Вот и пишу собственные реопены/релокейты. Пробовал искать, неполучилось. Понимаю, что логики нет и для 2008 года 1500 тысячь айдишников - это предел скуль запроса. Но я горбы эти исправляю, а вот радости нет.
Автор: golkanavt
Дата сообщения: 30.06.2008 16:56
delover
http://forum.ru-board.com/topic.cgi?forum=35&topic=38238&start=1800#lt
Автор: delover
Дата сообщения: 01.07.2008 08:32
golkanavt
Спасибо полазил, но всё таки желания нарушать лицензионное законодательство никак не появилось. Все ссылки на старые фибы давно померли, а за новые надо платить, это я и в гуглах найду. Ребята ездили на конференцию, общались с неким Ковязиным. Там с книгой был диск с фибами, но он пока в розыске.
Автор: OXDBA
Дата сообщения: 01.07.2008 09:07

Цитата:
Просто устал писать собственные фибы. Дома ibx, на работе fib. Вот и пишу собственные реопены/релокейты. Пробовал искать, неполучилось.

Цена вопроса - 1500 рублей. Ты оцениваешь свои мучения в эту сумму?

Цитата:
Понимаю, что логики нет и для 2008 года 1500 тысячь айдишников - это предел скуль запроса.

Ничего не понял, какие полтора миллиона, каких ID? Горбы радости опять же...
P.S. Некий Ковязин
Автор: delover
Дата сообщения: 01.07.2008 12:18
OXDBA

Цитата:
Ничего не понял, какие полтора миллиона

для 2008 года 1500 тысячь айдишников - это предел скуль запроса.
Может слово смалинт Вам что нибудь скажет? Если нет то может будет понтно что написано в функции (c): [more=ExecQueryIDs]
Код: [no]
procedure TdmTemporary.ExecQueryIDs(const AParamName: string; Idents: string);
var
I, P, MaxLengthIDs: Integer;
S: string;
begin
if AParamName = '' then
MaxLengthIDs := 1472 else
MaxLengthIDs := 32732;
S := '';
while Idents <> '' do
begin
P := -1;
if Length(Idents) > MaxLengthIDs then
for I := MaxLengthIDs-16 to Length(Idents) do
if Idents = ',' then
begin
P := I;
Break;
end;
if P > 0 then
begin
if AParamName = '' then
begin
if S = '' then S := qSelector.SQL.Text;
qSelector.SQL.Text := Format(S, [Copy(Idents, 1, P-1)]);
end else
qSelector.ParamByName(AParamName).AsString := Copy(Idents, 1, P-1);
qSelector.ExecQuery;
Delete(Idents, 1, P);
end else
begin
if AParamName = '' then
begin
if S = '' then S := qSelector.SQL.Text;
qSelector.SQL.Text := Format(S, [Idents]);
end else
qSelector.ParamByName(AParamName).AsString := Idents;
qSelector.ExecQuery;
Break;
end;
end;
end;[/no]
Автор: OXDBA
Дата сообщения: 01.07.2008 13:12
delover
Блин, Опера дурканула, извиняюсь, сейчас кину полный ответ
Автор: delover
Дата сообщения: 01.07.2008 13:18
OXDBA
Ой весьма прошу пардону, цыфру 1500 я видимо наобарот прочитал. Это же не 300$!
А как это мы можем решить? У меня Visa Classic.

Добавлено:

Цитата:
ключевыми здесь ... mssql,

А это не отожжёт, ибо мои окошечки сейчас уже работают с лёгкостью в таблицах с 25000 записей, как с текстовым редактором. Работает клипбоард, перетаскивания, счётчики выбранного на узлах в тмс-овском thtmltreeview-е. Разницы между текстовым редактором и моими окошечками невидно мне.

Влияние Билли? Нет, скорее роботрона z80.


Добавлено:
и Йёды. Тёмная сторона опасна.
Автор: OXDBA
Дата сообщения: 01.07.2008 13:53
Продолжаем разговор mssql значит... Значит по Вашему FireBird должен быть бесплатным клоном mssql?
Если Вы используете FB, то не надо прикручивать к нему костыли от mssql, используйте его достоинства и обходите недостатки.
По существу

Цитата:
select id from mytable where id in (" 2000 разных айдишников через запятую ").

Не надо так зло с FB, если джойн не идет, то возьмите эти 2000 ID for select'ом в конце концов.
Как сделать TBooleanField в IBX датасете?
Не спрашиваю зачем, понимаю, что этим вопросом уже достали, но эмуляция интом и люминь, если есть желание пообсуждать Bool в SQL прошу в ПМ, не будем здесь разводить ...

Цитата:
Нет возможности в FB20 узнать активна ли сессия айдишники которой остались болтаться в темповой таблице

ИМХО не лучше ли в таком случае ON COMMIT DELETE ROWS?

Цитата:
А как это мы можем решить?

Так не со мной надо решать, а с Востриковым на Devrace, пока еще не у кого проблем не было. Если совсем не Россия, Беларусь, Украина, Казахстан то я думаю через ibase попробуем.

Добавлено:
Ох, не посмотрел на USER_TEMPORARY, см. в двойке README.global_temporary_tables.txt
25000 записей, снова нахлынули воспоминания, теперь о фоксе 2.0
Автор: delover
Дата сообщения: 02.07.2008 12:39
OXDBA
Mssql не значит. Он у меня в коробке вместе с именной лицензией на BDS2006 архитект. В АСКУэ системе, где я трудился, прежде использовался этот сервер. Что общего между Билом и mssql не знаю, думаю то же, что и у Буша с Техасом. Про костыли весьма справедливо.


Цитата:
Не надо так зло с FB, если джойн не идет, то возьмите эти 2000 ID for select'ом в конце концов.

Именно джоин я и использую. Но ID сначала должны попасть в базу, например из селекта в DBGridEh в узле "Все элементы", по клавише Ctrl+A. Для Insert from select sp_split_ids это точно, убедился на тестах. Delete id in select sp_split_ids работает на порядки медленнее delete id in (...), про "убийство" по одиночке я молчу. )))


Цитата:
Как сделать TBooleanF... не будем здесь разводить ...

Не будем, мой компоненты xxxValues работают как датасет и добавляют в IDE-хе филды так же. Это делается на другом уровне. Поверьте приятно смотреть на код пробежки по вариантам разных типов. Лучше плохая поддержка, чем никакой. Я пробовал свою GridEh-у науськать, но что-то делаю не так, всё стало медленно и глючно.


Цитата:
ON COMMIT DELETE ROWS

Ой... Хто ито? В pdf пока не найдено.


Цитата:
Украина, Казахстан

Екатеринбург.


Цитата:
в двойке README.global_temporary

В двойке нет, есть в 2.1. Искал в инете, только про 2.1.


Цитата:
25000 записей, снова нахлынули воспоминания, теперь о фоксе 2.0

Радутет, что не совсем забыто.

Ладно, цыфирьки... Тестил вчера выборку - окно с деревом(счётчики выбранного в узлах и потомках, отдельный запрос), гридех в узле "все...", внизу датасет крыжовника. Локальной сортировки нет, чек - калкфилд. Пример 50000 записей. Жмем Ctrl+A мышой в попапине стойм на Check и засекаем время. Сетевая база - 12 секунд. Отмена 35 тыс из выбранных 50 тыс - 9 сек. Это с фибами. Все результаты с IBX и тд могу выложить. В среднем на операцию с 50 тыс около 15-и секунд. На троечку потянет?


Цитата:
Так не со мной надо решать, а с Востриковым на Devrace

Ладно, не буду. Надо батенька, чтобы нармальные хипы которые все это делают, чтобы тоже деньгу имели, а не только ms. Отстаём от графика по доморощенным Билгейтсам. Так мы коммунизм никогда не построим товарищ.
Автор: OXDBA
Дата сообщения: 02.07.2008 17:17
delover

Цитата:
В двойке нет, есть в 2.1. Искал в инете, только про 2.1.

Да, действительно, забыл уже, на 2.1 с RC1 сижу.
Для сравнения быстренько набросал тест использования GTT в FB 2.1, выбираем 50000 записей, Insert в GTT, update, в TABLE1 500 000 записей.
50000 record(s) was(were) updated in TABLE1
50000 record(s) was(were) inserted into TEMP_ID
------ Performance info ------
Prepare time = 32ms
Execute time = 4s 391ms
подробности см. в ПМ
Автор: delover
Дата сообщения: 03.07.2008 07:48
OXDBA
Очень неплохо. Да и полный фетчь датасета дерево/грид и датасета в "подвале" это грид чтоб гулять по выбранному. Подчёркиваю cетевая база - 12 секунд. Это 11сек выборка (я вижу что переоткрылась таблица внизу и выполнился SELECT COUNT() GROUP BY TREE_ID, т.е. появились циферки в дереве). Далее через 1сек можно увидеть крыжики. Очевидно, что серверная сторона - 4 сек заполнение темпорари, 4 сек выборка данных с джойном, 1 сек счётчики на сервере, 1 сек на калькулируемое поле у меня, 1 сек на перерисовку графики/организацию потоков/виндовых сообщений. Что такое TServerSocket и TClientSocket я рассказывать не буду. Там много чего: пакеты, CRC, slip-ы и т.д. Возможно у меня потерялась секунда на сортировку ID перед тем как я делаю строку. Но мы увлеклись... Фокс 2.0 Вам это больше не напоминает?

Да я тут подумал, что знаю почему INSERT FROM SELECT SP_SPLITIDS_HUGE эффективен, а DELETE ... WHERE ID IN SELECT ... не эффективен. Возможно в случае с удалением SELECT рассматривается не как серилизатор условий, а как поле для нахождения выполнимости условия. Объяснил туманно конечно, но в этом моменте стоит копать. Будет оптимизовано. Это точно.

Ещё могу добавить, что такие скорости должны удивлять, так как для калькулируемых полей у программистов только Field.Value:=CheckedList.IndexOf(ID)>=1. Список в этом случае содержит 50 тыс, и произойдёт поиск каждого ID из 50 тыс. Для обычного TList (не TStringList) эта операция на 50 тыс займёт гораздо больше одной секунды.

ПМ я сейчас изучаю. У меня три вопроса:
1. ON COMMIN это на транзакцию или на сессию? Я не могу оставаться в пределах транзакции.
2. CREATE я полагаю делается один раз?
3. Я не использую констрейнт примарикей id. Есть мнение, что это может замедлить работу. Что есть на этот счёт?
Автор: OXDBA
Дата сообщения: 03.07.2008 09:54
GTT создается один раз, аналогично обычной таблице, но хранит временные данные. Время жизни:
ON COMMIT PRESERVE ROWS - данные в GTT хранятся до закрытия соединения.
ON COMMIT DELETE ROWS - данные в GTT хранятся до завершения транзакции.
т.е GTT - общие метаданные и изолированные между соединениями/транзакциями данные.

Цитата:
Есть мнение, что это может замедлить работу. Что есть на этот счёт

Древняя holy war на тему "естественные ключи против искусственных ключей", на этот счет есть пословица о том, что умеючи можно и запросом к RDB$DATABASE сервер на колени поставить.
Автор: delover
Дата сообщения: 07.07.2008 10:16
Жаль, но у меня FireBird 2.0 ничего не понимает про ON COMMIT. Ну да это в общем пока не так важно. Всё остальное совместимо. Когда перейдём на 2.1 особо переделывать не придётся. Да и сами навороты про GTT нужны постольку поскольку:
1. Нет (не было) способа узнать активность другой сессии по индексу. Я уже смотрел в интернете про MON$ATTACHMENTS.
2. Нет способа писать на сессию триггер, как на таблицу. Я так и не понял зачем в IBExpert в регинфе базы Scriptc\Before Disconnect. Конечно on commit это по идее стандартизованный триггер.
3. Ограничение SmallInt на IB SQL. Не могу себе представить, зачем нужна GTT там где такое ограничение отсутствует? Если бы потери скорости (на то чтобы переварить на сервере строку с цифирей) составляли бы 4 секунды плюсом, то я бы даже не заморачивался и сэкономил бы своего личного времени огромное количество!

зы:
Нашёл у BDS2006 замечательную глюковину-багу. Если в обциях проекта добавить в Unit aliases строку GridsEh=DBGridEh (Project Options\Directories/Conditionals), то когда открываю проект, дельфа сначала ругается на ресурс, говорит типа Setup не тот и сваливает в аут. Думаю что dcc32.exe с нормальным *.cfg всё сделает как надо, а вот IDE помирает. Кстати она помирает даже если у Application сделать хелпер для CreateForm с добавочным параметром и указать этот параметр в project.dpr. Но это уже отдельная тема.
Автор: delover
Дата сообщения: 11.07.2008 08:02


Приветы.

А в IBExpert можно раскрашивать SQL?

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465

Предыдущая тема: Сравнение двух строк


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.