Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Informix [игнор отключен] [закрыт для гостей] / Исследуем анатомию Informix / 11 сообщений из 11, страница 1 из 1
02.02.2007, 15:56
    #34302870
onstat-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исследуем анатомию Informix
Все вопросы и тонкие моменты, связанные с архитектурой СУБД Informix ,
обсуждаем здесь.

К модераторам: тему можно закрепить?
...
Рейтинг: 0 / 0
02.02.2007, 18:11
    #34303392
nkulikov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исследуем анатомию Informix
2Onstat: Я бы так не утвержадл, что нити Informix полностью все всебе и ничего общего с OS не имеют. Я помню баг на солярке когда реализации некоторых функций связанных с pthread находились в разных библиотеках в разных директориях. И в зависимости от того какой путь был высавлен в переменных окружения informix
типа /usr/lib:/usr/share/lib или /usr/share/lib:/usr/lib разница в производительности составляла 20%

Это правда косяк Solaris был.

По поводу количества C и C++ кода в Informix и DB2. Я говорил только за DB2. У информикса C++ лежит только в поддержке работы с UNICODE (порядка 1 млн. строк, так же IMHO нверняка будет LBAC на C++ реализован.)

P.S. Я читал guide line для разработчиков DB2 что можно использовать из C++, тамошний не далеко от C ушел...
...
Рейтинг: 0 / 0
02.02.2007, 20:18
    #34303623
Выбегалло
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исследуем анатомию Informix
nkulikov2Onstat: Я бы так не утвержадл, что нити Informix полностью все всебе и ничего общего с OS не имеют. Я помню баг на солярке когда реализации некоторых функций связанных с pthread находились в разных библиотеках в разных директориях. И в зависимости от того какой путь был высавлен в переменных окружения informix
типа /usr/lib:/usr/share/lib или /usr/share/lib:/usr/lib разница в производительности составляла 20%

Это правда косяк Solaris был.


Таки да, нити сервера информикса реализованы собственной библиотекой и ничего общего с pthreads не имеют. На вопрос "почему ?" говорили - чтобы не зависеть от пятнадцати производителей OS и не ждать, пока они соизволят пофиксить несовместимости и баги.
В приложениях , разработанных с informix SDK - там, действительно, можно использовать OS pthreads.
...
Рейтинг: 0 / 0
02.02.2007, 21:37
    #34303687
onstat-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исследуем анатомию Informix
nkulikov2Onstat: Я бы так не утвержадл, что нити Informix полностью все всебе и ничего общего с OS не имеют.


Я этого не утверждал, я имел ИМХО относительно целесообразности использования
асеблера в коде связаном с переключением нитей.

nkulikov

Я помню баг на солярке когда реализации некоторых функций связанных с pthread находились в разных библиотеках в разных директориях. И в зависимости от того какой путь был высавлен в переменных окружения informix
типа /usr/lib:/usr/share/lib или /usr/share/lib:/usr/lib разница в производительности составляла 20%

Это правда косяк Solaris был.


В Linux разделяемых библитеках есть такое понятие как soname.
Эта штука позволяет однозначно определить версии и совместимось разделяемых библиотек.
Незнаю как с этим в Solaris.
Если есть, то это обоюдная недоработка разработчиков базы и ОС.

Солярка в этом смысле, неприятная платформа, с точки
зрения совместимости патчей между собой.

nkulikov
По поводу количества C и C++ кода в Informix и DB2. Я говорил только за DB2. У информикса C++ лежит только в поддержке работы с UNICODE (порядка 1 млн. строк, так же IMHO нверняка будет LBAC на C++ реализован.)


Очень сомневаюсь, что там миллион.

nkulikov
P.S. Я читал guide line для разработчиков DB2 что можно использовать из C++, тамошний не далеко от C ушел...

По моему опыту програмирования на С и С++ , само наличие возможности
использовать классы и защищать доступ к данным через методы, сокращает
скорость наступления бардака в коде программы приблизительно в 3 раза.
Код более читабельный и понятный, обработчики описаны и реализованы там же
где и данные. И побочных эфектов меньше.
Все прочее рюшеки.
...
Рейтинг: 0 / 0
04.02.2007, 13:14
    #34304664
GVF112GVF
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исследуем анатомию Informix
Уважаемые коллеги,
насколько я помню, есть всего три способа реализации потоков для разных операционных сред:

1. Реализация потоков в пространстве пользовательского процесса. В данном случае, ядро ОС о потоках ничего не знает и управляет обычными, однопоточными процессами. Управление потоками на себя берет прикладной процесс (INFORMIX).

Именно такая модель реализации потоков, использовалась в ранних версиях INFORMIX
для операционных сред, которые не использовали реализацию потоков на уровне ядра системы (или где потоков не было по определению) - SCO UNIX, ранний LINUX и т. д.

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

Для использовались разные языки программирования.
Как правило – это язык С, который включал для различных платформ ассемблерные вставки, которые использовались для эффективного управления потоками и mutex на аппаратном уровне процессора.

Далее, кроме языка С, использовался язык Yacс … для реализации Syntax Parser SQL и т.д.

2. Реализация потоков на уровне ядра операционной системы.
Понятно, что в данном случае, планировщик ОС управляет потоками по требованию прикладного процесса.

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

Ошибка в реализации системных функций (в системных библиотеках), могут прямо или косвенно повлиять на функциональность работы всего приложения (INFORMIX) и т.д.

3. Смешанная реализация – мультплексирование потоков пользовательского процесса из потоков ядра.

По всей видимости, данный подход реализован для INFORMIX на платформе WINDOWS,
и возможно SUN SOLARIS. Где потоки процесса ядра INFORMIX отображаются на системные потоки ОС и т.д. В этом случае, ошибки могут быть где угодно ... 

Теперь о языках программирования.
Так как средства компиляции достигли значительных результатов .... компиляторы стали умнее .. а вести разработку удобнее на OO- языке, то в качестве основного языка, по всей видимости, был выбран C++. Хотя никто не отменял многоуровневую архитектуру, модульность в реализации проекта с элементами оптимизации (некоторые модули могут быть реализованы на C и ассемблер , другие на C++ - SQLI-протокол , поддержка UNICODE и т.д.).

С уважением,
Вадим.
...
Рейтинг: 0 / 0
04.02.2007, 22:19
    #34305093
Выбегалло
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исследуем анатомию Informix
GVF112GVFУважаемые коллеги,
насколько я помню, есть всего три способа реализации потоков для разных операционных сред:

1. Реализация потоков в пространстве пользовательского процесса. В данном случае, ядро ОС о потоках ничего не знает и управляет обычными, однопоточными процессами. Управление потоками на себя берет прикладной процесс (INFORMIX).

Именно такая модель реализации потоков, использовалась в ранних версиях INFORMIX
для операционных сред, которые не использовали реализацию потоков на уровне ядра системы (или где потоков не было по определению) - SCO UNIX, ранний LINUX и т. д.

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

Для использовались разные языки программирования.
Как правило – это язык С, который включал для различных платформ ассемблерные вставки, которые использовались для эффективного управления потоками и mutex на аппаратном уровне процессора.

Далее, кроме языка С, использовался язык Yacс … для реализации Syntax Parser SQL и т.д.

2. Реализация потоков на уровне ядра операционной системы.
Понятно, что в данном случае, планировщик ОС управляет потоками по требованию прикладного процесса.

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

Ошибка в реализации системных функций (в системных библиотеках), могут прямо или косвенно повлиять на функциональность работы всего приложения (INFORMIX) и т.д.

3. Смешанная реализация – мультплексирование потоков пользовательского процесса из потоков ядра.

По всей видимости, данный подход реализован для INFORMIX на платформе WINDOWS,
и возможно SUN SOLARIS. Где потоки процесса ядра INFORMIX отображаются на системные потоки ОС и т.д. В этом случае, ошибки могут быть где угодно ... 

Теперь о языках программирования.
Так как средства компиляции достигли значительных результатов .... компиляторы стали умнее .. а вести разработку удобнее на OO- языке, то в качестве основного языка, по всей видимости, был выбран C++. Хотя никто не отменял многоуровневую архитектуру, модульность в реализации проекта с элементами оптимизации (некоторые модули могут быть реализованы на C и ассемблер , другие на C++ - SQLI-протокол , поддержка UNICODE и т.д.).

С уважением,
Вадим.

Уважаемый коллега,
вы, конечно, можете как археолог восстанавливать "методы, принятые в ранних версиях", и "основной язык, по всей видимости выбранный" :-) - но я в свое время этот информикс немножко компилировал и баги фиксил. Нет там в ядре никакого C++. И нити реализованы собственной библиотекой, без помощи ОС.
В таком вот аксепте.
...
Рейтинг: 0 / 0
05.02.2007, 10:07
    #34305504
nkulikov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исследуем анатомию Informix
2 Выбегалло:

Этот баг был пару лет назад. Надо порыскать в своем архиве. Но там тормозил именно сервер (9.3) из-за разных путей.
...
Рейтинг: 0 / 0
05.02.2007, 11:08
    #34305725
GVF112GVF
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исследуем анатомию Informix
Уважаемый коллега,
вы, конечно, можете как археолог восстанавливать "методы, принятые в ранних версиях", и "основной язык, по всей видимости выбранный" :-) - но я в свое время этот информикс немножко компилировал и баги фиксил. Нет там в ядре никакого C++. И нити реализованы собственной библиотекой, без помощи ОС.
В таком вот аксепте.


Уважаемый коллега,
не Вы один немножко компилировали INFORMIX ... думаю, этак версия 7.30.x ... :)
С тех пор - много воды утекло.
Так например, новый протокол SQLI -реализован с помощью библиотек на С++ и т.д.

С уважением,
Вадим.
...
Рейтинг: 0 / 0
05.02.2007, 11:26
    #34305788
onstat-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исследуем анатомию Informix
GVF112GVF

3. Смешанная реализация – мультплексирование потоков пользовательского процесса из потоков ядра.

По всей видимости, данный подход реализован для INFORMIX на платформе WINDOWS,
и возможно SUN SOLARIS. Где потоки процесса ядра INFORMIX отображаются на системные потоки ОС и т.д. В этом случае, ошибки могут быть где угодно ... 


По поводу WINDOWS согласен там подругому никак.
А вот по поводу SUN SOLARIS у меня есть сомнения вызванные следующим.
Насколько я знаю SUN SOLARIS была основной платформой разарботки,

Кстате под чем Informix пишут сейчас?

Существовала отдельная команда портирования на WINDOWS,
хотя небыло команд портирования на SCO, AIX, Linux и прочие платформы( это по моим данным,
я могу быть в невединии). Исходя из этого можно зделать вывод, что код для Unix систем
был платформонезависимым на 99% .

GVF112GVF
Теперь о языках программирования.
Так как средства компиляции достигли значительных результатов .... компиляторы стали умнее .. а вести разработку удобнее на OO- языке, то в качестве основного языка, по всей видимости, был выбран C++. Хотя никто не отменял многоуровневую архитектуру, модульность в реализации проекта с элементами оптимизации (некоторые модули могут быть реализованы на C и ассемблер , другие на C++ - SQLI-протокол , поддержка UNICODE и т.д.).

С уважением,
Вадим.

Когдато давно я пытался вникать в Datablade API, и не видел там возможности использовать С++
на стороне сервера, Может пропустил чего.

Есть одна большая техническая проблема C++.
Заключается она в вызове методов, особенно виртуальных.
Если обьекты классов созданы в разделяемой памяти Unix,
то в процессах, порожденных не через fork(onstat, onmode ...etc) таблицы виртуальных методов могут указвать в мировой океан.
Если стандартное решение и существует, то оно очень сильно платформо-зависимо,
но я и такого пока не знаю.
...
Рейтинг: 0 / 0
05.02.2007, 13:40
    #34306323
GVF112GVF
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исследуем анатомию Informix
Т что, многие модули в INFORMIX, реализованны на "C" - сомнений не вызывает.
Это действительно так. Другое дело, что некоторые из них могут быть реализованы и на "C++".

Далее, насколько Я помню,
еще для версии 9.21 можно было написать на сервер функцию на C++.

The new SAPI features in 9.21 allow blades to retrieve VP information, fork external processes, and prevent modules from being arbitrarily unloaded. These features will be undocumented in 9.21.

// UDR C++ wrapper functions for the 9.21 SAPI calls
// ....
...
Рейтинг: 0 / 0
07.02.2007, 22:44
    #34314253
vasilis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исследуем анатомию Informix
onstat-К модераторам: тему можно закрепить?
Этой возможности у местных модераторов нет - есть только у хозяина SQL.RU :)
Но в данном случае, как мне кажется, это и не нужно - трафик у нас тут небольшой, тема не успевает за день куда то упасть (или пропасть из первой страницы списка тем), а для поднятия темы наверх достаточно сделать новое сообщение в тему, хотя бы типа "Up" :)
...
Рейтинг: 0 / 0
Форумы / Informix [игнор отключен] [закрыт для гостей] / Исследуем анатомию Informix / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]