Вместе с Игорем Горбоносом (к сожалению не знаю его rsdn-ник), удалось разогнать работу Firebird & Janus.
Теперь синхронизация выполняется даже несколько быстрее чем в варианте с Jet.
250000 сообщений.
Размер базы (janus.mdb) для Jet — 424мб,
Размер базы (JANUS.FDB) для Firebird — 262мб
Здравствуйте, Tonal-, Вы писали:
T>Вместе с Игорем Горбоносом (к сожалению не знаю его rsdn-ник), удалось разогнать работу Firebird & Janus. T>Теперь синхронизация выполняется даже несколько быстрее чем в варианте с Jet.
Вобщем в связи с моими правками там уже все не так, и патч не наложишь.
Вроде я все переделал примерно как в патче (r733 — посмотри проверь)
T>>Вместе с Игорем Горбоносом (к сожалению не знаю его rsdn-ник), удалось разогнать работу Firebird & Janus. T>>Теперь синхронизация выполняется даже несколько быстрее чем в варианте с Jet.
ДА>Вобщем в связи с моими правками там уже все не так, и патч не наложишь. ДА>Вроде я все переделал примерно как в патче (r733 — посмотри проверь)
Здравствуйте, Дьяченко Александр, Вы писали: ДА>Вобщем в связи с моими правками там уже все не так, и патч не наложишь. ДА>Вроде я все переделал примерно как в патче (r733 — посмотри проверь)
Посмотрел — работает.
Всё правильно. Спасибо.
Здравствуйте, Tonal-, Вы писали:
T>Вместе с Игорем Горбоносом (к сожалению не знаю его rsdn-ник), удалось разогнать работу Firebird & Janus. T>Теперь синхронизация выполняется даже несколько быстрее чем в варианте с Jet.
[...]
Родина должна знать своих героев . Его ник на RSDN igor_123
Premature optimization is the root of all evil in programming. Donald Knuth
Здравствуйте, Дьяченко Александр, Вы писали:
ДА>Вроде я все переделал примерно как в патче (r733 — посмотри проверь)
Попробовал базу Fb "с нуля". Получил ошибку:
BLToolkit.Data.DataException: Dynamic SQL Error
SQL error code = -104
Token unknown — line 20, char 10
SELECT ---> FirebirdSql.Data.FirebirdClient.FbException: Dynamic SQL Error
SQL error code = -104
Token unknown — line 20, char 10
SELECT ---> FirebirdSql.Data.Common.IscException: Выдано исключение типа "FirebirdSql.Data.Common.IscException".
в FirebirdSql.Data.Client.Embedded.FesDatabase.ParseStatusVector(Int32[] statusVector)
в FirebirdSql.Data.Client.Embedded.FesStatement.Prepare(String commandText)
в FirebirdSql.Data.FirebirdClient.FbCommand.Prepare(Boolean returnsSet)
в FirebirdSql.Data.FirebirdClient.FbCommand.ExecuteCommand(CommandBehavior behavior, Boolean returnsSet)
в FirebirdSql.Data.FirebirdClient.FbCommand.ExecuteCommand(CommandBehavior behavior)
в FirebirdSql.Data.FirebirdClient.FbCommand.ExecuteScalar()
--- Конец трассировки внутреннего стека исключений ---
в FirebirdSql.Data.FirebirdClient.FbCommand.ExecuteScalar()
в BLToolkit.Data.DbManager.ExecuteScalar()
--- Конец трассировки внутреннего стека исключений ---
в BLToolkit.Data.DbManager.OnOperationException(OperationType op, Exception ex)
в BLToolkit.Data.DbManager.ExecuteScalar()
в BLToolkit.Data.DbManager.ExecuteScalar[T]()
в Rsdn.Janus.JanusDB.ExecuteScalar[T](JanusDB db, String sql, Object[] parameters) в C:\Projects\RSDN@Home\trunk2\Janus\Core\DataManagement\JanusDB.cs:строка 236
в Rsdn.Janus.DatabaseManager.CreateMissingTopics(JanusDB db, String stringizedBatch) в C:\Projects\RSDN@Home\trunk2\Janus\Core\DataManagement\DatabaseManager.cs:строка 356
в Rsdn.Janus.DatabaseManager.<>c__DisplayClass1.<UpdateAggregats>b__0(String stringizedBatch) в C:\Projects\RSDN@Home\trunk2\Janus\Core\DataManagement\DatabaseManager.cs:строка 99
в Rsdn.Janus.Framework.Algorithms.StringizedCollectionApplyer[T](IEnumerable`1 collection, Int32 maxBatchSize, StringizedListVisitor visitor) в C:\Projects\RSDN@Home\trunk2\Janus\Framework\Utils\Algorithms.cs:строка 164
в Rsdn.Janus.DatabaseManager.UpdateAggregats(JanusDB db, Int32 userId, IEnumerable`1 tidList) в C:\Projects\RSDN@Home\trunk2\Janus\Core\DataManagement\DatabaseManager.cs:строка 95
в Rsdn.Janus.DatabaseManager.UpdateAggregates(JanusDB db, Int32 userId, IEnumerable`1 tbls) в C:\Projects\RSDN@Home\trunk2\Janus\Core\DataManagement\DatabaseManager.cs:строка 138
в Rsdn.Janus.Synchronizer.ProcessSvcResponse(JanusResponse svcResp, ResolveBrokenTopicsHint resolver) в C:\Projects\RSDN@Home\trunk2\Janus\Core\Synchronization\Synchronizer.cs:строка 796
в Rsdn.Janus.Synchronizer.Sync(JanusSvcEx svc) в C:\Projects\RSDN@Home\trunk2\Janus\Core\Synchronization\Synchronizer.cs:строка 337
Запрос в котором происходит ошибка — тот, что подвергся оптимизации.
Здравствуйте, michus, Вы писали:
ДА>>Вроде я все переделал примерно как в патче (r733 — посмотри проверь) M>Попробовал базу Fb "с нуля". Получил ошибку:
Фиг знает раньше вроде создавалась. Вечером приду домой разберусь.
Здравствуйте, Дьяченко Александр, Вы писали:
ДА>Здравствуйте, michus, Вы писали:
ДА>>>Вроде я все переделал примерно как в патче (r733 — посмотри проверь) M>>Попробовал базу Fb "с нуля". Получил ошибку:
ДА>Фиг знает раньше вроде создавалась. Вечером приду домой разберусь.
Ошибка возникает не при создании. Она возникает при синхронизации. В DatabaseManager.CreateMissingTopics.
Здравствуйте, michus, Вы писали: M>Попробовал базу Fb "с нуля". Получил ошибку:
Вполне естественно.
С Janus-ом до сих пор лежит версия 1.5.х. она не понимает вложенных запросов в секциях from и join
Я делал оптимизацию под 2.0.х (2.0.1)
О чём и написал.
Кроме того, у меня стоит провайдер новее чем тот, который идёт с Janus-ом.
Так что, по хорошему, нужно обновлять также и зависимости.
Здравствуйте, michus, Вы писали:
ДА>>>>Вроде я все переделал примерно как в патче (r733 — посмотри проверь) M>>>Попробовал базу Fb "с нуля". Получил ошибку: ДА>>Фиг знает раньше вроде создавалась. Вечером приду домой разберусь. M>Ошибка возникает не при создании. Она возникает при синхронизации. В DatabaseManager.CreateMissingTopics.
Здравствуйте, Tonal-, Вы писали:
T>Здравствуйте, michus, Вы писали: M>>Попробовал базу Fb "с нуля". Получил ошибку: T>Вполне естественно. T>С Janus-ом до сих пор лежит версия 1.5.х. она не понимает вложенных запросов в секциях from и join T>Я делал оптимизацию под 2.0.х (2.0.1) T>О чём и написал. T>Кроме того, у меня стоит провайдер новее чем тот, который идёт с Janus-ом.
T>Так что, по хорошему, нужно обновлять также и зависимости.
Заменил fbembed (все файлы) из архива Janus'а (r744) на 2.1 RC 2 (то же самое и с 2.0.3).
При попытке создания новой БД или реструктуризации существующей, вываливается ошибка
"Unable to load DLL 'fbembed': The specified module could not be found. (Exception from HRESULT: 0x8007007E)".
Если же создаю БД используя remote сервер 2.1 (или 2.0.3), то БД создается, но после ее создания
появляется ошибка "Offset and length were out of bounds for the array or count is greater
than the number of elements from index to the end of the source collection."
При нажатии на кнопку Connect, если выбран remote сервер, ничего не происходит.
Здравствуйте, L_VV, Вы писали: L_V>Заменил fbembed (все файлы) из архива Janus'а (r744) на 2.1 RC 2 (то же самое и с 2.0.3). L_V>При попытке создания новой БД или реструктуризации существующей, вываливается ошибка L_V>"Unable to load DLL 'fbembed': The specified module could not be found. (Exception from HRESULT: 0x8007007E)".
Всё верно.
Для 2.1 нету варианта embeded
А для 2.0.3 нужно брать архив Firebird-2.0.3.12981-0-RC1_embed_win32.zip
Но я бы вам всё таки советовал 2.0.1 — всё ж релиз.
L_V>Если же создаю БД используя remote сервер 2.1 (или 2.0.3), то БД создается, но после ее создания L_V>появляется ошибка "Offset and length were out of bounds for the array or count is greater L_V>than the number of elements from index to the end of the source collection."
L_V>При нажатии на кнопку Connect, если выбран remote сервер, ничего не происходит.
А сервер то запущен?
Если да, то на какой машине и какой версии?
P.S.
Я пробывал на embeded вермсиях 2.0.1 и 2.0.2 — всё нормально работало...
Здравствуйте, Tonal-, Вы писали:
T>Всё верно. T>Для 2.1 нету варианта embeded
Почему нет? Есть в снапшотах, например, вчерашний: http://www.firebirdsql.org/download/snapshot_builds/win/Firebird-2.1.0.16459-0_win32_embed.zip
T>А для 2.0.3 нужно брать архив Firebird-2.0.3.12981-0-RC1_embed_win32.zip
Да, его и пробовал
T>Но я бы вам всё таки советовал 2.0.1 — всё ж релиз.
Попробовал. Всё то же самое
L_V>>Если же создаю БД используя remote сервер 2.1 (или 2.0.3), то БД создается, но после ее создания L_V>>появляется ошибка "Offset and length were out of bounds for the array or count is greater L_V>>than the number of elements from index to the end of the source collection."
L_V>>При нажатии на кнопку Connect, если выбран remote сервер, ничего не происходит.
T>А сервер то запущен?
Конечно
T>Если да, то на какой машине и какой версии?
localhost, Firebird-2.1.0.16451
T>P.S. T>Я пробывал на embeded вермсиях 2.0.1 и 2.0.2 — всё нормально работало...
Увы
Не хочет...
Здравствуйте, L_VV, Вы писали: T>>Но я бы вам всё таки советовал 2.0.1 — всё ж релиз. L_V>Попробовал. Всё то же самое
Таки похоже какой-то dll-ки не хватает.
Вот список нужных фаулов:
T>Я пробывал на embeded вермсиях 2.0.1 и 2.0.2 — всё нормально работало...
Можете скинуть мне архив вашего рабочего Janus'а (ну, без БД, естественно)
вместе с FB embedded (т.е. каталог RSDN@Home)? Может, всё заработает?
l_v_v собака mail точка ru
T>Таки похоже какой-то dll-ки не хватает. T>Вот список нужных фаулов: T>
T>fbembed.dll T>firebird.conf T>firebird.msg T>ib_util.dll T>icudt30.dll T>icuin30.dll T>icuuc30.dll T>msvcp71.dll T>msvcr71.dll T>intl\fbintl.conf T>intl\fbintl.dll T>udf\fbudf.dll T>udf\ib_udf.dll T>
Да, точно, не хватало трех icu*.dll. Совсем забыл, что в двойке нужны еще и они.
А вот msv*.dll вроде как не обязательны, во всяком случае в README_embedded.txt
они не упоминаются и всё вроде работает.
Но теперь следующая проблема — БД с embedded создалась, жмём OK для подключения и:
Rsdn.Janus.DBSchemaException: Ошибка на этапе реструктуризации базы:
Error when prepared SqlDiff
at Rsdn.Janus.DbsmManager.Restruct(IGenericServiceProvider serviceProvider)
at Rsdn.Janus.Janus.Main()
Что нужно ещё?
Кстати, сейчас если выбрать remote сервер, подключение к БД по нажатию
на кнопку Connect вроде бы происходит, хотя цвет кнопки не меняется и не
активизируется кнопка OK, но по Cancel также как и с embedded выполняется
попытка реструктуризации БД и возникает такая же ошибка:
Rsdn.Janus.DBSchemaException: Ошибка на этапе реструктуризации базы:
Error when prepared SqlDiff
at Rsdn.Janus.DbsmManager.Restruct(IGenericServiceProvider serviceProvider)
at Rsdn.Janus.Janus.Main()
Есть явное отличие:
у меня в каталоге RSDN@Home есть файл FirebirdSql.Data.Firebird.dll (14.08.2007 16:17:10, размер 618496), у вас его нет.
Если я у себя удаляю его, при нажатии на OK после подключения к БД вылетает exception:
System.IO.FileNotFoundException: Could not load file or assembly 'FirebirdSql.Data.Firebird, Version=2.0.0.0, Culture=neutral, PublicKeyToken=fa843d180294369d' or one of its dependencies. The system cannot find the file specified.
File name: 'FirebirdSql.Data.Firebird, Version=2.0.0.0, Culture=neutral, PublicKeyToken=fa843d180294369d'
at Rsdn.Janus.FbDriver.CheckConnectionString(String constr)
at Rsdn.Janus.DbsmManager.CheckDB(IGenericServiceProvider serviceProvider)
at Rsdn.Janus.Janus.Main()
Может, именно из-за этой dll-ки была ошибка:
Rsdn.Janus.DBSchemaException: Ошибка на этапе реструктуризации базы:
Error when prepared SqlDiff
at Rsdn.Janus.DbsmManager.Restruct(IGenericServiceProvider serviceProvider)
at Rsdn.Janus.Janus.Main()
Может быть, нужна более новая версия библиотеки? Если да, можете выслать?
Если имеет значение, VS на моей машине не установлена.
Так, всё более менее прояснилось:
FirebirdSql.Data.Firebird.dll здесь не причём.
Проблема с версией FB —
на версии 2.x всё работает правильно (в т.ч. на последней сборке Firebird-2.0.3.12981);
на версии 2.1.x — не работает — возникает исключение:
Rsdn.Janus.DBSchemaException: Ошибка на этапе реструктуризации базы:
Error when prepared SqlDiff
at Rsdn.Janus.DbsmManager.Restruct(IGenericServiceProvider serviceProvider)
at Rsdn.Janus.Janus.Main()
Может, можно будет посмотреть, в чём там дело? В 2.1 всё-таки можно мониторить запросы и
в оптимизаторе изменения были, может работа Janus'а немного ускориться?
Здравствуйте, L_VV, Вы писали:
L_V>Так, всё более менее прояснилось: L_V>FirebirdSql.Data.Firebird.dll здесь не причём. L_V>Проблема с версией FB - L_V>на версии 2.x всё работает правильно (в т.ч. на последней сборке Firebird-2.0.3.12981); L_V>на версии 2.1.x — не работает — возникает исключение:
Похоже таки проблема с провайдером.
В 2.1, насколько я в курсе, несколько менялся протокол, и провайдер глючил на этом.
У меня он установлен отдельно, v2.1.0 Release Candidate 1 ( 2007-05-19 ) размер 634880б. время создания 18.03.07.
Я сейчас пишу с Janus-а работающего с fbembed.dll 2.1.0.16459 [2.1.0.16459]
T>Похоже таки проблема с провайдером. T>В 2.1, насколько я в курсе, несколько менялся протокол, и провайдер глючил на этом. T>У меня он установлен отдельно, v2.1.0 Release Candidate 1 ( 2007-05-19 ) размер 634880б. время создания 18.03.07.
T>Я сейчас пишу с Janus-а работающего с fbembed.dll 2.1.0.16459 [2.1.0.16459]
Странно. У меня тоже установлен провайдер версии 2.1, правда RC2: http://downloads.sourceforge.net/firebird/FirebirdClient-2.1.0-RC2.msi
(только что попробовал с RC1 — то же самое) — не работает.
Я взял ваш exe-шник Janus'а (т.к. тот, что идёт в зипе — ищет именно
FirebirdSql.Data.Firebird.dll из этого же архива).
Может, попробуем ваш архив RSDN@Home с fbembedded 2.1?
Уже просто интересно, в чём же дело.