LINUX.ORG.RU
решено ФорумAdmin

Informix, IBM CSDK и запросы из командной строки


0

1

Добрый день. Есть система, которую хочу переписать для упрощения и повышения надёжности.
Конкретно - скрипт на питоне, который среди всего прочего делает запрос к базе Informix.
Хочу его переписать так, чтобы вместо питоновского модуля informixdb использовалась cli-утилита.

Внимание вопрос, есть-ли для информикса cli-утилита, которая позволяет выполнять запросы к базе данных, примерно как pg,sqlite,sqlplus...

в принципе существует и входит в состав некоторых коммерческих продуктов Informix

ukr_unix_user ★★★★
()

поставить ODBC и использовать тулзу оттуда (не помню название).

berrywizard ★★★★★
()
Ответ на: комментарий от ventilator

А что такое полноценный драйвер? Для меня cli вполне таки полноценный драйвер.

Очень долгая и холиварная тема. Вкратце скажу своё мнение, выстраданное опытом. Использование «полноценных» биндингов к библиотекам в конце концов приводит к неподдерживаемости скрипта, как с точки зрения программиста, так и с точки зрения администратора, у которого всё отваливается после очередного обновления системы.
Все прикладные задачи, которые могут быть решены с помощью CLI-утилит - должны решаться ими.
Если в процессе работы и развития программы станет очевидной нехватка быстродействия, тогда заменять на «полноценный драйверы».

dmitryalexeeff
() автор топика
Ответ на: комментарий от Deleted

Ох, не прав ты дружище, не прав.

Вот тебе пример. Есть сервер, на котором крутятся скрипты, работающие с оборудованием, в том числе и по SNMP. Автор исходного скрипта использовал yapsnmp. Прошло три года, сделан рефакторинг системы и перенос скрипта на другой сервер. И вот тут выяснилась любопытная подробность, вот такая:

root@aldm-desktop:/# easy_install yapsnmp
Searching for yapsnmp
Reading http://pypi.python.org/simple/yapsnmp/
Reading http://yapsnmp.sourceforge.net/
Reading http://sourceforge.net/project/showfiles.php?group_id=21077&package_id=17482&release_id=222248
No local packages or download links found for yapsnmp
error: Could not find suitable distribution for Requirement.parse('yapsnmp')
root@aldm-desktop:/# 
root@aldm-desktop:/# pip install yapsnmp
Downloading/unpacking yapsnmp
  Could not find any downloads that satisfy the requirement yapsnmp
No distributions at all found for yapsnmp
Storing complete log in /root/.pip/pip.log
root@aldm-desktop:/# 
root@aldm-desktop:/# apt-cache search yapsnmp
root@aldm-desktop:/# 

И это не единичный случай. Бывает ещё несовместимость библиотеки биндинга и сишного клиента, к которому она присоединяется. А CLI универсально, прозрачно, стабильно. В общем делай как можно тупее, и все кто придёт после тебя будут использовать сделаное тобой с пользой.

dmitryalexeeff
() автор топика
Ответ на: комментарий от Deleted

Кстати, ты уж тогда всю утилиту с ненужного python'а перепиши на bash'е. Чтобы уж совсем ънтерпрайзно получилось 8).

Deleted
()
Ответ на: комментарий от Deleted

А вот это уже другое. Питон полноценный язык с прозрачным и удобным синтаксисом, с мощной стандартной библиотекой, в отличии от баша.

Думаю что истина в комбинации. Основную логику реализовывать удобнее на питоне, чтобы не городить вавилонских башен из sed-а, awk-а, grep-а. А к внешним сервисам обращатся через CLI, чтобы не увязать в трясине дополнительных модулей, написаных неизвестно кем с неизвестным сроком существования.

dmitryalexeeff
() автор топика
Ответ на: комментарий от dmitryalexeeff

Не понимаю сарказма.

Если CLI изначально не предназначен для использования в скриптах (а это почти всегда именно так), то вероятность поломки его интерфейса выше, чем у какой-нибудь библиотеки. Например разработчики могут чуть изменить формат вывода данных. При этом человекочитаемость вывода не изменится, а вот скрипт твой сломается. Причём сломается он «по тихому», просто начнёт работать неправильно, ведь у CLI-интерфейса нет и никогда не было никакого чётко специфицированного формата обмена данными, в котором однозначно можно обнаружить ошибку.

Deleted
()
Ответ на: комментарий от Deleted

Это всё лишь домыслы, идеальная ситауция в вакууме.
На деле вероятность поломки скрипта от «неожиданных» изменений не больше чем у «настоящей библиотеки».

dmitryalexeeff
() автор топика
Ответ на: комментарий от dmitryalexeeff

На деле вероятность поломки скрипта от «неожиданных» изменений не больше чем у «настоящей библиотеки».

Ну ок, как знаешь.

Deleted
()

В комплекте с Информиксом идет dbaccess, скорее всего есть и в CSDK

ef37 ★★
()
Ответ на: комментарий от dmitryalexeeff

Прошло три года, сделан рефакторинг системы и перенос скрипта на другой сервер. И вот тут выяснилась любопытная подробность

А вы когда рефакторинг делали, не заметили что либы не стало, это ж только когда не продакшн переносили то увидели проблемку? С чего вы решили что синтаксис у CLI никогда не поменяется?

PS: Вы и запросы текстом наверное склеиваите?

ventilator ★★★
()
Ответ на: комментарий от ventilator


А вы когда рефакторинг делали, не заметили что либы не стало, это ж только когда не продакшн переносили то увидели проблемку


В приведенном мною выше фрагмете работы с командной строкой видно имя машины aldm-desktop, как должно быть понятно, это не сервер, а мой рабочий компьютер. На продакшене работает старый скрипт в старом окружении.


С чего вы решили что синтаксис у CLI никогда не поменяется


читайте выше, я об этом не говорил. вероятность этого такая-же, как и у прочих событий, могущих привести к несовместимости после обновлений.


Вы и запросы текстом наверное склеиваите?


цианакрилатом

dmitryalexeeff
() автор топика

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

//«на новом продакшене нет нужной библиотеки...» это конечно пять.

anonymous
()
Ответ на: комментарий от dmitryalexeeff

цианакрилатом

цианакрилатом

Боюсь даже представить что будет, если вам понадобится из вашего скрипта дернуть xmlrpc

ventilator ★★★
()
Ответ на: комментарий от dmitryalexeeff

читайте выше, я об этом не говорил. вероятность этого такая-же, как и у прочих событий, могущих привести к несовместимости после обновлений.

Вероятность сильно ниже. Просто потому что за совместимостью API и ABI мейнтейнеры специально следят, чего не скажешь про CLI.

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.