Re: EXECUTE STATEMENT к другой базе в рамках установленного коннекта

2011-07-06 Пенетрантность Евгений Виноградный

On 06.07.2011 1:39, Михаил Викторович wrote:



Тем не менее для более дельных рекомендаций ...


А зачем мне Ваши рекомендации? Разве их я спрашивал?
Я написал свое мнение о том, что человек прав, придя к идее архива.


Вы написали ответ на мой пост. Так что ничего личного. Ответил в той же 
ветке.





Re: EXECUTE STATEMENT к другой базе в рамках установленного коннекта

2011-07-05 Пенетрантность Евгений Виноградный

On 05.07.2011 22:00, Михаил Викторович wrote:
> В итоге все равно будет перегрузка по производительности. Решение с 
архивом

> верное. Теперь когда проектирую новые системы сразу предусматриваю
> архивирование.

Тем не менее для более дельных рекомендаций по данному случаю мало 
информации:

 * Версия Firebird, тип и параметры.
 * Аппартаные ресурсы;
 * Продукт тиражируемый или заказной;
 * И т.п.

P.S.

И в результате настоятельно советовал бы не использовать синхронное 
обновление БД в триггерах на IUD операциях. Ну не будет это нормально 
работать на реальной системе в виду наличия концептуальной проблемы 
такого решения. А если еще учесть особенности/огрехи в проектировании БД...




Re: EXECUTE STATEMENT к другой базе в рамках установленного коннекта

2011-07-05 Пенетрантность Евгений Виноградный

а так, имеем таких клиентов, которые элементарно жмутся на технике и
тяжко им что-то втолковать.



Значит остальное попробовать. Был случай когда добавление двух индексов 
уменьшило время выполнения операции с 30 минут до 20 секунд. Наличие 
долгих снэпшот транзакций может сильно нагружать сервер и диски. 
Помогало увеличение оперативной памяти сервера. Увеличить память 
используемую под кеш страниц. Может вообще отказаться от классического 
сервера и использовать суперсервер, если так мало памяти. И т.п.




Re: EXECUTE STATEMENT к другой базе в рамках установленного коннекта

2011-07-04 Пенетрантность Евгений Виноградный

On 04.07.2011 19:48, A K wrote:

Идея: делаем архивную БД и оперативную, в которой держим
последние год-полтора. Изменения в оперативной БД, должны попадать
на архивную.


Возьмите/купите одну из готовых систем репликации под Firebird - будет 
дешевле и быстрее, чем изобретать велосипед.


Может вполне хватит следующих действий и при существующей структуре:
 * Более производительное оборудование специально выделенное под работу 
СУБД - быстрый дисковый массив, много оперативной памяти, 64битный Firebird;
 * Изучение узких мест - вполне возможно будет достаточным построить 
пару-тройки дополнительных индексов, оптимизировать ряд SQL запросов, 
особенно если речь идет об отчетах;

 * Более частое архиврование БД;
 * Периодическое обслуживание БД - с проверкой структуры, сборкой 
мусора, проверка отсутствия множества активных транзакций, бэкап БД с 
последующим восстановлением и т.п.





Re: EXECUTE STATEMENT к другой базе в рамках установленного коннекта

2011-07-04 Пенетрантность Евгений Виноградный

On 01.07.2011 23:55, A K wrote:


Транзакций существенно меньше чем CRUD операций как правило.


я понимаю, что в общем случае их будет меньше. Но, например, накопил я
в логе десять изменений в разных таблицах. Идет комит транзакции.
Мне все равно придется выполнить десять EXECUTE STATEMENT к внешней
базе, причем каждый EXECUTE STATEMENT будет открывать-закрывать коннект.

так?



Можно и в одном соединении это делать.

Но реальная причина в другом - в другую(-ие) БД должны попадать только 
те изменения, которые подтверждены в данной БД. В противном случае при 
любом откате транзакции базы начнут разбегаться. В отличии от того же MS 
SQL в Firebird одно удовольствие лог транзакций вести, не полагаясь на 
всякие там часы и т.п. Причем если текущая транзакция отвалится, то из 
записей в журнале не будет (а можно использовать и временные таблицы). 
Да и такую модель можно развить в асинхронную оффлайн репликацию если 
понадобиться.


А вот с синхронной репликацией на уровне триггеров есть реальный шанс 
получить большие проблемы (по моему скромному мнению это путь в никуда). 
Т.к. стабильные соединения бывают только в "сферическом вакууме". И 
порой достаточно одного сбоя на миллион операций, чтобы случилась 
"непоправимая" разбежка и лавинообразное возрастание количества ошибок.





Re: EXECUTE STATEMENT к другой базе в рамках установленного коннекта

2011-07-01 Пенетрантность Евгений Виноградный

On 01.07.2011 19:47, A K wrote:


Попробуйте выталкивать изменения не по каждому I\U\D а по коммиту
тр-ции.


А что это изменит? Все равно каждый EXECUTE STATEMENT будет
открывать-закрывать подключение к БД. Только что "подвисать" будет не
каждая операция, а комит транзакции.




Транзакций существенно меньше чем CRUD операций как правило.

Собственно именно так и нужно делать - применять изменения в удаленную 
БД на коммите транзакции. Потому что при откате транзакции изменения в 
другую базу не попадут, что как правило и нужно. В любом случае без 
журнала транзакций, в который пишутся изменения, не обойтись. Требуемые 
триггеры для записи в журнал транзакции пишутся автогенерацией через тот 
же EXECUTE STATEMENT на основе данных системных таблиц.


Как пример можно посмотреть этот проект http://fibre.sourceforge.net/. 
Там более сложный вариант реализован - инкрементальной оффлайн 
репликации на базе журнала транзаций.




Представление GUID в Fb и .Net

2011-04-18 Пенетрантность Евгений Виноградный

Доброго времени суток!

Может не совсем по теме пишу. Но есть следующая проблема, касающаяся 
стыковки Firebird  и .Net. Кратко ее суть - строковое представление 
одних и тех же данных полученное через встроенную функцию Firebird - 
UUID_TO_CHAR() отличается от представления возвращаемого экземпляром 
класса .Net framework Guid.ToString(). Естественно я имею в виду 
экземпляр класса полученный от .Net Data Provider из поля БД. Т.е. в 
результате выходит, что данные полученные посредством .Net Data Provider 
и UUID_TO_CHAR() из отдних и тех же данных визульно (в виде строк) будут 
отличаться. Подробности здесь - 
http://tracker.firebirdsql.org/browse/DNET-376 . Бага закрыта как не 
воспроизводимая, хотя тест показывает суть проблемы.


С уважением,
Евгений Виноградный
aka ssdi.



Re: Господа, презабавнейшая идея

2011-03-17 Пенетрантность Евгений Виноградный

On 16.03.2011 17:38, Dmitry Sinchilin wrote:

ну и делай для разных баз подключение по разным портам, а разные порты
мапирую на шлюзе на разные компы.



Так можно скрыть масштабирование системы. А из плюсов получить 
централизованную секьюрную базу (если конечно это будет работать в таком 
режиме). А из минусов на серверах редиректов будут жить ее кусочки.



С уважением,
Евгений Виноградный.




Re: Кто-то портит GDS32

2011-02-08 Пенетрантность Евгений Виноградный

On 02.02.2011 18:22, Konstantin R. Beliaev wrote:

Никто не сталкивался с такой ситуацией:
сервер лежит в каталоге C:\FB25, fbclient.dll скопирован в gds32.dll
Прописываю в IBE работать через библиотеку C:\FB25\bin\gds32.dll - все
работает,
копирую в system32 и правлю путь в IBE - не работает, пишет:
Client Library is missing or invalid.
копирую из SYSTEM32 в C:\---\gds32.dll и опять правлю путь в IBE - не
работает с тем же сообщением :((


Не Vista/7 случаем? Клиента с повышенными правами под админом копировали 
в system32?


С уважением,
Евгений Виноградный.




Re: Конструкция INSERT ... RETU RNING в запросах EXECUTE STATEMENT

2010-12-24 Пенетрантность Евгений Виноградный

On 23.12.2010 17:31, Victor Reshetnyak wrote:

sql_1 = 'INSERT INTO RS_TEMPL_REP(NAME) VALUES(:NAME)'
   ||'RETURNING ID INTO :NEW_ID';


sql_1 должно быть DSQL выражением (а не PSQL). Либо нужно обернуть в 
EXECUTE BLOCK.


С уважением,
Евгений Виноградный.




Re: Переход 2.1 -> 2.5

2010-11-24 Пенетрантность Евгений Виноградный

Ovchinnikov Vasily пишет:

-FIX_FSS_METADATA 
Тогда такой вопрос. В каких случаях нужно делать restore с таким ключом? 
Только если используется кодировка UNICODE_FSS? А если только UTF8 нужно ли?




Re: Толерантность к о брывам связи

2010-11-02 Пенетрантность Евгений Виноградный

On 02.11.2010 12:22, Andrei wrote:

Чего сильно не хватает FB -- это устойчивости к обрывам связи.


Устойчивость к обрывам связей повышают другими способами. 
Резервированием каналов например на аппаратном уровне.


Описанный выше способ повысит только вероятность возникновения 
блокировок и количество "зависших" соединений.


Пользователи приложений с синхронным доступом к БД вряд ли захотят ждать 
несколько часов реакции на свои действия, а тупо перезапустят приложение 
жестким способом.




Re: Вопросы ДЕ и Влад у

2010-10-28 Пенетрантность Евгений Виноградный

On 28.10.2010 0:51, Vadim Mescheryakov wrote:

Я наверно плохо о людях думаю, но что то мне кажется что вменяемых
разработчиков (вменяемых и при этом свободных) все меньше и меньше.
Да не меньше их - их просто нужно больше. Посмотрите вокруг, сколько 
было компов на работающую душу 10 лет назад и сейчас, а это все ПО, 
которое нужно кому то писать, развивать, обрабатывать напильником и 
сопровождать. Раньше можно было найти профи 
работающего(подрабатывающего) за интерес и терпимую ЗП, сейчас все хотят 
денег, а зачастую неадекватных квалификации. Говорю не голословно - 
часто приходится проводить собеседования.


А по поводу технологий - как ни крути 150 строчек кода в день никто не 
отменял. Вот только писать эти строчки можно на разных уровнях. Зачастую 
абстракции и технологии позволяют решать задачи на более высоких уровнях 
и более эффективно, но к сожалению требуют большей квалификации для 
грамотного применения. Те же управляемые языки (JAVA, .NET и т.п.) 
снимают кучу головной боли наличием сборки мусора в простых задачах, но 
и добавляют ее в сложных :))) ORM-ы снимают проблему маппинга данных 
в/из БД, что помогает при решении рутинных задач, но тем не менее не 
избавляют от написания nantive-SQL запросов.


Та же дельфи - неплохая среда была, но если вспоминать, сколько нужно 
было писать для решения рутинных задач работы со словарями списками и 
прочим. Обратная совместимость и рожденные монструозные конструкции 
языка Delphi. Но технологии развиваются и позволяют решать более сложные 
задачи на более высоком уровне.




Re: Вопросы ДЕ и Влад у

2010-10-27 Пенетрантность Евгений Виноградный

On 27.10.2010 23:20, sasha wrote:

А я про пользователей и не говорил. Мало причин при начале нового
проекта не использовать EntityFramework, а задействовать датасеты. Если
программист его не знает, то это не проблема EntityFramework, а личная
проблема программиста.


Если мы рассматриваем технологии доступа к данным в реляционных БД, то 
повторюсь EntityFramework - весьма своеобразная технология и применимо 
для определенных задач определенного масштаба. Тот же NHibernate для 
сложных корпоративных проектов гораздо перспективнее и удобнее. 
LINQToSQL MS сама похоронила, да и работает она только с MsSQL.


А по поводу "задействовать датасеты" - в ADO.NET зачастую достаточно 
доступа на уровне команд и ридеров. При решении ряда задач 
ORM(EntityFramework) нужен как зайцу пятая нога. Можно микроскопом и 
гвозди забивать, а потом удивляться...




Re: Вопросы ДЕ и Влад у

2010-10-27 Пенетрантность Евгений Виноградный

On 27.10.2010 20:49, sasha wrote:

Поддержка ADO для .NET вполне качественная


А вы что, не знаете что основным средством доступа к данным у MS на
данный момент является Entity Framework?
Сейчас использовать ADO.NET - это всё равно что WinAPI для разработки
Windows.


Вообще странные утверждения.
WinAPI никто не отменял пока есть вынь это единственный способ получить 
максимальную производительность.
Entity Framework - вообще странная технология, которая пытается пройти 
все те грабли, которые давно прошли другие ORM. К тому же она не всегда 
работоспособна в полной мере с FB. По кр. мере в свое время когда 
выбирали ORM - пытались использовать и Entity Framework, но провайдера с 
поддержкой еще не было, были только аноносы. По поводу проблем 
использования Entity Framework и FB можно поискать отдельно.


В сложных проектах, зачастую приходится использовать несколько 
технологий доступа к данным одновременно (ADO, ORM и бла бла).


Saha Вы случаем не на дельфи пишете?



Re: OFF VS 2008 standart

2010-09-16 Пенетрантность Евгений Виноградный

Можно ли при помощи Visual
Studio Standart 2008 разрабатывать приложения для мобильных устройств?

Заранее спасибо
Дмитрий


Полноценная поддержка идет в версиях от Professional.
Подробное сравнение возможностей можно скачать здесь - 
http://www.microsoft.com/downloads/en/details.aspx?familyid=727BCFB0-B575-47AB-9FD8-4EE067BB3A37&displaylang=en


Или здесь - 
http://www.microsoft.com/visualstudio/en-us/products/2008-editions


С уважением,
Евгений Виноградный.





Re: superclassic win x64

2010-07-29 Пенетрантность Евгений Виноградный

On 29.07.2010 13:40, Andrei wrote:

http://www.sinatica.com/blog/en/index.php/articles/firebird-superserver-classicserver-or-superclassic

Спасибо за ссылку.



Re: superclassic win x64

2010-07-29 Пенетрантность Евгений Виноградный

On 28.07.2010 23:16, Дмитрий Еманов пишет:


Случайность или 64-битный супер-классик не отработан ?

Отработан. Более того, он только на 64-битах и имеет смысл :-)

А можно ссылочку где почитать про основные отличия и "смысл" :) ?

---
Евгений Виноградный



Re: Скорость инсертов

2010-07-07 Пенетрантность Евгений Виноградный

On 07.07.2010 10:39, Tonal wrote:

Наткнулся на странную вещь: при массовой загрузки данных в базу скорость
последовательности инсертов уменьшается на 1/6 если все они в одной
транзакции.
Память сервера тоже растёт, но это как бы ожидаемо...
Я что-то не так делаю?


Да, и на предыдущих версиях (1.5 - 2.1) где то после 150-200 INSERT в 
одной транзакции удельная скорость вставки понижалась, причем 
существенно. Возможно, это какие то особенности реализации сервера 
проявляются.


С уважением,
Евгений Виноградный.



Re: Windows7 Ultimate 64 and Firebird 2.5 64

2010-06-28 Пенетрантность Евгений Виноградный

On 25.06.2010 17:46, Khorsun Vlad wrote:

С какой стати ? Никаких чудес.

Ну, вот и хорошо, вот и прекрасно!